Пр о ц е с с о р TMS 3 2 0C4 x
77
С учетом изложенного при переходе на параллельные команды получаем
алгоритм рис.2.8,
б
. Программа, реализующая этот алгоритм, представлена да-
лее. При переходе на параллельные команды вдвое сократилось время выпол-
нения собственно цикла.
Подпрограмма цифрового КИХ-фильтра
; Подпрограмма FIR
; Вызов подпрограммы:
; LOAD
AR0
/ адрес массива констант h[ ]
; LAJU
FIR
; LOAD
AR1
/ адрес массива x[ ]
; LOAD
RC
/ счетчик повтора минус 2
; LOAD
BK
/ размерность фильтра
; Регистры на входе:
AR0, AR1, RC, BK
; Используемые регистры:
R0, R2, AR0, AR1, RC
; Регистры на выходе:
R0 - результат
; Характеристики:
время выполнения в циклах - 7+N
;
память - 9 слов
.global
FIR
FIR RPTBD
CONV
; повтор блока задержанный
MPYF3
∗
AR0++(1),
∗
AR1++(1)%, R0
; h[N-1]x[n-(N-1)]
→
R0
LDF
0.0,R2
; обнуление R2
NOP
; цикл фильтра (1
≤
i < N)
CONV MPYF3
∗
AR0++(1),
∗
AR1++(1)%,R0
;h[N-1-i]x[n-(N-1-i)]
→
R0
||
ADDF3
R0, R2, R2
; R0+R2
→
R2
BUD
R11
; задержанный возврат
ADDF
R0, R2, R0
; сложение последнего произведения
NOP
;
NOP
.end
2.3.2. Цифровой БИХ-фильтр
Как правило, БИХ-фильтр требует меньше вычислений, чем КИХ-фильтр
с похожей частотной характеристикой, и на практике используется при отсут-
ствии ограничений на фазовую характеристику. Чаще всего БИХ-фильтр реали-
зуется в виде каскадного включения секций второго порядка, выходной сигнал
каждой из которых в момент времени
n
(прямая форма 1) вычисляется как
y
[
n
] =
a
0
x
[
n
] +
a
1
x
[
n
-1] +
a
2
x
[
n
-2] +
b
1
y
[
n
-1] +
b
2
y
[
n
-2].
Более рационально производить вычисления по формулам (прямая форма 2),
использующим одну линию задержки:
d
[
n
] =
b
2
d
[
n
-2] +
b
1
d
[
n
-1] +
x
[
n
];
y
[
n
] =
a
2
d
[
n
-2] +
a
1
d
[
n
-1] +
a
0
d
[
n
].
Организация данных в памяти для подпрограммы, реализующей секцию
БИХ-фильтра второго порядка, дана на рис.2.9. Для адресации линии задержки
d
используется циклическая адресация, поэтому начальный адрес
d
должен
быть кратен четырем, а в регистр BK необходимо записать значение три. Текст
подпрограммы приводится ниже, последовательность вычислений ясна из ком-
ментариев. После выхода из подпрограммы регистр AR1 смещается на элемент