Скачиваний:
60
Добавлен:
21.03.2016
Размер:
2.39 Mб
Скачать

Реализация КИХ фильтра на

ассемблере

Оптимизация КИХ фильтра

Предыдущая реализация на языке С может быть скомпилирована для любого микропроцессора или встраиваемого микроконтроллера. Работает очень хорошо.

Она не оптимизирована для цифрового сигнального процессора, такого как 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

Соседние файлы в папке C2000WEB_rus