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