
- •Модуль 14: КИХ – фильтр на C28x
- •Основы теории цифровых фильтров
- •Схема цифрового фильтра во
- •Передаточная функция цифрового фильтра
- •Передаточная функция цифрового
- •Передаточная функция цифрового
- •Диаграмма цифрового фильтра в
- •Фильтр с конечной импульсной характеристикой (КИХ)
- •Фильтр с бесконечной импульсной характеристикой (БИХ)
- •Простая структура КИХ фильтра
- •Свойства КИХ фильтра
- •Пример 1: КИХ фильтр
- •Пример 1: КИХ фильтр
- •Пример 1: КИХ фильтр
- •Пример 2: КИХ фильтр
- •Вычисление периодичности КИХ
- •C реализация КИХ фильтра
- •C реализация КИХ фильтра
- •Реализация КИХ фильтра на
- •Линии задержки с циклическим
- •Аппаратура циклической адресации
- •КИХ фильтр – операция Dual MAC
- •Заключение: циклическая адресация
- •Библиотека фильтров от Texas
- •MATLAB программа расчета фильтра
- •MATLAB программа расчета фильтра
- •Библиотечная функция FIR16
- •Библиотечная функция FIR16
- •Пример использования библиотеки
- •Лабораторная работа 14:

Реализация КИХ фильтра на
ассемблере
Оптимизация КИХ фильтра
Предыдущая реализация на языке С может быть скомпилирована для любого микропроцессора или встраиваемого микроконтроллера. Работает очень хорошо.
Она не оптимизирована для цифрового сигнального процессора, такого как C28x. В некоторых случаях требуется более эффективная реализация КИХ фильтра в
реальном времени, где и проявятся внутренние
достоинства параллельных аппаратных
ресурсов DSP.
Реализация на ASM КИХ фильтра позволит
сократить число тактов для реализации одного
цикла алгоритма КИХ фильтра.
Новый режим адресации позволит сдвигать
отсчеты по линиям задержек входного сигнала:
“циклический режим
адресации”Опишем алгоритм циклической адресации
Реализуем КИХ фильтр используя режим 14 - 21
циклической адресации

|
|
Использование циклической |
||||||||||||||||||
|
|
|
|
|
|
адресации |
Линия задержки |
|||||||||||||
|
|
|
|
|
Задержка |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Xinin = X0 |
|
|
X1 |
|
|
X2 |
|
|
|
|
|
|
|
|
|
|||||
|
z–1 |
z–1 |
|
|
X0 |
|
|
*AR6%++ |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
X1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A2 * |
||||||||||||
A0 * |
|
|
A1 * |
|
||||||||||||||||
|
|
|
|
X2 |
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
Фильтр с конечной |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
Yout = A0*Xin+A1*X1+A2*i |
||||||||||||||||
|
|
импульсной |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
характеристикой |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В рекурсии,, X2 = X1
X1 = X0
X0 = новый Xinin
14 - 22

Линии задержки с циклическим
буфером
14 - 23

Аппаратура циклической адресации
AR1 младший установлен в buffer sizei - 1
Все 32 бита XAR6 используютсяMAC P,*AR6%++,*XAR7++
14 - 24

КИХ фильтр – операция Dual MAC
TAPS |
.set |
4 |
; FIR – порядок + 1 |
xn |
.usect “D_LINE”,TAPS |
; массив отсчетов в I1Q15 |
|
|
.data |
|
; FIR – коэфф. в I1Q15 |
tbl |
.word |
32768*707/1000 |
; 0.707 |
|
.word |
32768*123/1000 |
; 0.123 |
|
.word |
32768*(-175)/1000 |
; -0.175 |
|
.word |
32768*345/1000 |
; 0.345 |
|
.text |
|
|
FIR: |
SETC |
SXM |
; режим расширения знака |
|
CLRC |
OVM |
; выключ. режима отсечения |
|
SPM |
1 |
; ариф. дробных чисел |
|
MOVL |
XAR7,#tbl |
; указатель на коэфф. |
|
MOVL |
XAR6,#xn |
; указатель на цикл. буфер |
|
MOV |
AR1,#TAPS-1 |
; смещение в буфере |
|
MOV |
*XAR6%++,*(0:adc) |
; получение нов. отсч. x(n) |
|
ZAPA |
|
; Очистка ACC,P,OVC |
|| |
RPT |
#(TAPS/2)-1 |
; RPT след. команд #+1 раз |
DMAC |
ACC:P,*XAR6%++,*XAR7++ ; умнож. & сложение 2 пар |
||
|
|
|
& сложение 2 пар |
|
ADDL |
ACC:P |
; сложение четных & |
|
|
|
; нечетных пар-сумм |
|
MOV |
*(0:dac),AH |
; запись результата y(n) |
|
RET |
|
|
14 - 25

Заключение: циклическая адресация
Размер буфера
до 256 слов
Разбивать большие массивы на блоки до 256 слов..
Выравнивание буфера
Всегда выравнивание по границе 256-слов,, в
соответствии с размером.. Не занятое пространство
использовать для других целей..
Использование
XAR6 только для указателя циклического буфера..
AR1 указывает на значение: размер - 1 (0 - 255)..
Обновление указателя через пост-инкремент на один
(*XAR6%++) ..
В случае 32-битного адреса выполняется пост- инкремент на два.. Следить за тем,, чтобы XAR6 и AR1 не перешли конец буфера..
14 - 26

Библиотека фильтров от Texas
Instruments для C28x
MATLAB вычисляет коэффициенты для КИХ и БИХ фильтров c учетом наложения оконной функции
Модули фильтров:
FIR16:I |
16-битный КИХ фильтр |
IIR5BIQ16:II I |
Каскадный БИХ фильтр (16 битный- |
|
биквадратный фильтр) |
IIR5BIQ32:II I |
Каскадный БИХ фильтр (32 битный- |
|
биквадратный фильтр) |
C-вызываемые ассемблерные функции
Адаптированы к внутренним возможностям аппаратуры C28x
Используют инструкцию Duall–MAC
Интерфейс в соответствии с ANSII-C стандартом
Доступно на сайте TI как документ |
14 - 27 |

MATLAB программа расчета фильтра
Пример проектирования КИХ фильтра: Фильтр нижних частот 50 порядка
Спецификация: Порядок фильтра : 50
Тип оконной функции : Hamming Частота дискретизации : 20кГц Частота излома фильтра : 3кГц Скрипт: проектирование КИХ фильтра Выбор порядка КИХ : 50
Нижних частот : 1 Верхних частот : 2 Полосовой : 3 Режекторный : 4
Выберите один из предложенных выше : 1 Hamming : 1
Hanning : 2
Bartlett : 3
Blackman : 4
Выберите тип оконной функции из предложенных выше : 1 Введите частоту дискретизации : 20000
Введите частоту излома фильтра(Fc) : 3000
Введите имя файла для сохранения коэффициентов : lpf50.dat
14 - 28

MATLAB программа расчета фильтра
MATLAB – выходной файл коэффициентов фильтра:
#define FIR16_COEFF {\ 9839,-2219809,-1436900,853008,3340889,3668111,-896,\ -5963392,-8977456,-3669326,8585216,18152991,13041193,\ -8257663,-30867258,-31522540,131,45285320,64028535,\ 25231269,-58654721,-124846025,-94830542,68157453,\ 320667626,551550942}
14 - 29

Библиотечная функция FIR16
Вход |
FIR16 |
Выход |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 - 30