Пр о ц е с с о р 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. Прямой решетчатый фильтр:
а
- структура;
б
- организация данных в памяти