Пр о ц е с с о р TMS 3 2 0C4 x
75
Перед вызовом подпрограммы регистр AR1 содержит адрес последнего
элемента массива отсчетов сигнала. После выхода из подпрограммы регистр
AR1 содержит тот же адрес вследствие циклической адресации. По адресу AR1
производится запись нового отсчета, AR1 увеличивается на единицу с исполь-
зованием циклической адресации, и снова вызывается подпрограмма фильтра.
Таким образом, в буфере всегда хранится и обрабатывается
N
последних отсче-
тов сигнала.
Регистр R0 используется для хранения промежуточных произведений,
выходной отсчет фильтра получается в регистре R2, регистр AR0-указатель на
массив коэффициентов фильтра, регистр AR1-указатель на циклический буфер
отсчетов входного сигнала, регистр BK содержит размер циклического буфера
входных отсчетов. В примере используется команда повтора блока инструкций
RPTBD, для которой регистр RC является счетчиком цикла. Инициализация
цикла заключается в загрузке размера буфера
N
в регистр BK, установке счет-
чика повторов RC в значение
N
-2 и обнулении регистра R2, накапливающего
сумму.
Типовой алгоритм вычислений КИХ-фильтра показан на рис.2.8,
а
, при-
чем цикл расписан по отдельным командам. Вполне естественным является же-
лание
использовать
параллельную
команду
умножения / сложения
(MPYF3 || ADDF3), имеющуюся в системе команд процессора.
Для ее корректного применения рассмотрим, какими средствами цен-
трального устройства обработки процессора она реализуется. Входные операн-
ды по шинам CPU1 и CPU2 поступают на входы умножителя MUL, а на входы
АЛУ (ALU) по шинам REG1 и REG2 поступает содержимое регистров R2 и R0
соответственно. Схема обработки данных после упрощения представляет собой
двухступенчатый конвейер, где очередной отсчет данных
x
[
n
] обрабатывается
умножителем, а предыдущий отсчет (точнее
x
[
n
-1]
h
[1]) - сумматором АЛУ. По
этой причине в параллельную команду объединяются блоки алгоритма на
AR1
Младшие
адреса
h
[
N
-1]
h
[
N
-2]
h
[1]
h
[0]
Старшие
адреса
x
[
n
-(
N
-1)]
x
[
n
-(
N
-2)]
x
[
n
-1]
x
[
n
]
Последний
отсчет
Первый
отсчет
x
[
n
]
x
[
n
-(
N
-1)]
x
[
n
-2]
x
[
n
-1]
Импульсная
характеристика
Отсчеты сигнала
перед вызовом
подпрограммы
Отсчеты сигнала
после вызова
подпрограммы
Новый
отсчет
Циклический
буфер
Рис.2.7. Организация данных КИХ-фильтра