Пр о ц е с с о р TMS 3 2 0C4 x
80
Подпрограмма БИХ-фильтра из N секций
; Регистры на входе:
;
R2
- входной отсчет x[n]
;
AR0 - адрес коэффициентов фильтра
;
AR1 - адрес линии задержки
;
BK = 3, IR0 = 4, IR1 = 4N - 4, RC = N - 2
; Используемые регистры: R0, R1, R2, AR0, AR1, RC
; Регистры на выходе:
R0 - результат
; Характеристики:
время выполнения в циклах - 4+6N
;
память - 15 слов
.global
IIR2
IIR2 MPYF3
AR0,
AR1, R0
; b2[0]d[0,n-2]
R0
MPYF3
AR0++(1),
AR1- -(1)%, R1
; a2[0]d[0,n-2]
R1
RPTBD
LOOP
; повтор блока задержанный
MPYF3
++AR0(1),
AR1, R0
; b1[0]d[0,n-1]
R0
||
ADDF3
R0, R2, R2
; b2[0]d[0,n-2]+x[n]
R2
MPYF3
++AR0(1),
AR1- -(1)%, R0
; a1[0]d[0,n-1]
R0
||
ADDF3
R0, R2, R2
; b2[0]d[0,n-2]+x[n]+b1[0]d[0,n-1]
R2
MPYF3
++AR0(1), R2, R2
; a0[0]d[0,n]
R2
||
STF
R2,
AR1- -(1)%
; R2
d[0,n]
; начало цикла до метки LOOP
MPYF3
++AR0(1),
++AR1(IR0), R0
; b2[i]d[i,n-2]
R0
||
ADDF3
R0, R2, R2
; a1[i-1]d[i-1,n-1]+a0[i-1]d[i-1,n]
R2
MPYF3
++AR0(1),
AR1- -(1)%, R1
; a2[i]d[i,n-2]
R1
||
ADDF3
R1, R2, R2
; R2 + a2[i-1]d[i-1,n-2]
R2 (y[i-1,n])
MPYF3
++AR0(1),
AR1, R0
; b1[i]d[i,n-1]
R0
||
ADDF3
R0, R2, R2
; b2[i]d[i,n-2]+y[i-1,n]
R2
MPYF3
++AR0(1),
AR1- -(1)%, R0
; a1[i]d[i,n-1]
R0
||
ADDF3
R0, R2, R2
; b2[i]d[i,n-2]+y[i-1,n]+b1[i]d[i,n-1]
R2
LOOP MPYF3
++AR0(1), R2, R2
; a0[i]d[i,n]
R2
||
STF
R2,
AR1- -(1)%
; R2
d[i,n]
BRD
R11
; возврат из п/п задержанный
ADDF
R0, R2
; a1[i]d[i,n-1]+a0[i]d[i,n]
R2
ADDF3
R1, R2, R0
; a1[i]d[i,n-1]+a0[i]d[i,n]+a2[i]d[i,n-2]
R0
; смещение указателей в исходное состояние
LDI
AR1- -(IR1), R1
||
LDI
AR1- -(1)%, R2
.end
2.3.3. Адаптивный фильтр
В некоторых приложениях цифровой обработки фильтр должен адапти-
роваться к изменениям условий работы, т.е. иметь переменные во времени ко-
эффициенты. Адаптивными могут быть как КИХ-, так и БИХ-фильтры, но на
практике чаще используются адаптивные КИХ-фильтры.
Рассмотрение теории адаптивных фильтров выходит за рамки данного
курса, ограничимся только практической реализацией адаптивного
I...,70,71,72,73,74,75,76,77,78,79 81,82,83,84,85,86,87,88,89,90,...186