Пр о ц е с с о р TMS 3 2 0C4 x
81
КИХ-фильтра с алгоритмом адаптации коэффициентов по минимуму сренек-
вадратичной ошибки (LMS-алгоритм). Выходной сигнал фильтра вычисляется
по формуле
y
[
n
] =
h
[
n
,0]
x
[
n
] +
h
[
n
,1]
x
[
n
-1] + ... +
h
[
n
,
N
-1]
x
[
n
-(
N
-1)].
Коэффициенты фильтра зависят от времени, для момента времени
n
+1 вычис-
ляются из предыдущих значений (коэффициентов в момент времени
n
) и связа-
ны со значениями входного сигнала
x
через множитель регулировки
b
(масштабный коэффициент) по формуле
h
[
n
+1,
i
] =
h
[
n
,
i
] +
bx
[
n
-
i
], где
i
= 0, 1, ...,
N
-1,
в процессе работы фильтра множитель регулировки
b
считается постоянным.
Приведем пример адаптивного КИХ-фильтра, организация данных кото-
рого в памяти такая же, как в КИХ-фильтре с постоянными коэффициентами
(рис.2.7). В блоке повтора (цикле) использованы три команды: первая анало-
гично примеру КИХ фильтра вычисляет значение выходного отсчета
y
[
n
], две
следующие определяют новое значение коэффициента фильтра
h
[
n
+1,
i
].
Подпрограмма адаптивного КИХ-фильтра
; Вызов подпрограммы
;
LAJU LMS
; Регистры на входе:
;
R4
- масштабный коэффициент (b)
;
AR0 - адрес коэффициентов фильтра h[n,N-1]
;
AR1 - адрес входного массива x[n-(N-1)]
;
RC
- размерность фильтра, уменьшенная на 2 (т.е. N-2)
;
BK
- размерность фильтра
; Используемые регистры:
R0, R1, R2, AR0, AR1, RC, RS, RE, R4, BK
; Регистры на выходе:
R0 - результат
; Характеристики:
время выполнения в циклах - 6+3N
;
память - 11 слов
.global
LMS
;
LMS RPTBD
LOOP
; старт блока повторений задержанный
MPYF3
AR0,
AR1, R0
; h[n,N-1]x[n-(N-1)]
R0
||
SUBF3
R2, R2, R2
; 0
R2
MPYF3
AR1++(1)%, R4, R1
; x[n-(N-1)b
R1
ADDF3
AR0++(1), R1, R1
; h[n,N-1] + x[n-(N-1)]b
R1
; начало цикла
MPYF3
AR0- -(1),
AR1, R0
; h[n,N-1-i]x[n-(N-1-i)]
R0
||
ADDF3
R0, R2, R2
; вычисление суммы y[n] в R2
MPYF3
AR1++(1)%, R4, R1
; x[n-(N-1-i)]b
R1
||
STF
R1,
AR0++(1)
; R1
h[n+1, N-1-(i-1)]
; последняя команда цикла
LOOP ADDF3
AR0++(1), R1, R1
; h[n,N-1-i] + x[n-(N-1-i)]b
R1
BUD
R11
; возврат из п/п задержанный
ADDF3
R0, R2, R0
; h[n]x[n] + y[n]
STF
R1,
-AR0(1)
; запись в память h[n]+x[n]b
; дополнительная команда для корректной работы задержанного перехода
NOP
.end
I...,71,72,73,74,75,76,77,78,79,80 82,83,84,85,86,87,88,89,90,91,...186