Пр о ц е с с о р TMS 3 2 0C4 x
83
Инверсный решетчатый фильтр
; Вызов подпрограммы
;
LAJU LATINV
; Регистры на входе:
;
R2
- f[0,n] = x[n]
;
AR0 - адрес коэффициентов фильтра k[1]
;
AR1 - адрес массива b[0,n-1)]
;
RC
- размерность фильтра (p-2)
; Используемые регистры:
R0, R1, R2, R3, AR0, AR1, RC, RS, RE
; Регистры на выходе:
R2 - результат (f[p,n])
; Характеристики:
время выполнения в циклах - 5+3p
;
память - 11 слов
.global
LATINV
LATINV RPTBD LOOP
; повтор блока задержанный
MPYF3
AR0,
AR1, R0
; k[1]b[0,n-1]
R0
LDF
R2, R3
; b[0,n] = f[0,n]
R3
MPYF3
AR0++(1), R2, R1
; k[1]f[0,n]
R1
; начало блока повтора
MPYF3
AR0,
++AR1(1), R0
; k[i]b[i-1,n-1]
R0
||
ADDF3
R2, R0, R2
; f[i-1-1,n]+k[i-1]b[i-1-1,n-1] = f[i-1,n]
R2
ADDF3
-AR1(1), R1, R3
;b[i-1-1,n-1]+ k[i-1]f[i-1-1,n]=b[i-1,n]
R3
||
STF
R3,
-AR1(1)
; b[i-1-1,n]
b[i-1-1,n-1]
LOOP MPYF3
AR0++(1), R2, R1
; k[i]f[i-1,n]
R1
; конец блока повтора
BUD
R11
; задержанный возврат из п/п
ADDF3
R2, R0, R2
; f[p-1,n-1]+k[p]b[p-1,n-1] = f[p,n]
R2
ADDF3
AR1, R1, R3
; b[p-1,n-1]+k[p]f[p-1,n] = b[p,n]
R3
||
STF
R3,
AR1
; b[p-1,n]
b[p-1,n-1]
NOP
; команда для корректного возврата
.end
Структура прямого решетчатого фильтра показана на рис.2.12,
а
. Органи-
зация данных в памяти аналогична инверсному фильтру, кроме начальных зна-
чений указателей AR0, AR1 (рис.2.12,
б
). Фильтр описывается следующими
уравнениями:
f
[
i
-1,
n
] =
f
[
i
,
n
] -
k
[
i
]
b
[
i
-1,
n
-1];
b
[
i
,
n
] =
b
[
i
-1,
n
-1] +
k
[
i
]
f
[
i
-1,
n
], где
i
= 1, ...,
p
.
Начальные условия -
f
[
p
,
n
] =
x
[
n
],
b
[
i
,
n
]=0, конечные -
y
[
n
] =
f
[0,
n
].
I...,73,74,75,76,77,78,79,80,81,82 84,85,86,87,88,89,90,91,92,93,...186