Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учебное пособие (Представление чисел и арифметические операции в цифровых устройствах. Микропроцессорные устройства и системы на базе МП КР580ВМ80), страница 73

Адрес

Команда

Комментарий

100

IN 10, 0

[10]¬(Порт 0)

101

LARK AR0,8

AR0¬8

102

LARK AR1,18

AR1¬18

103

ZAC

АСС¬0

104

LARP 1

ARP¬1

105

LT *-,0

T¬[( AR1)]; AR1¬(AR1) – 1; ARP¬0

106

MPY *,1

P¬(T)´[( AR0)]; ARP¬1

107

LTD *,-0

T¬[( AR1)]; [(AR1)+1]¬[(AR1)];

ACC¬(ACC)+(P); AR1¬(AR1) – 1;

ARP¬0

108

Если (AR0)¹0, то AR0¬(AR0) – 1 и

109

РС¬106, иначе РС¬(Р)+1

10A

[20]¬(ACC)´21 (старшие разряды)

10B

Порт 2¬[20]

10C

PC¬100

10D

Р6.147. Нерекурсивный цифровой фильтр можно реализовать циклическим повторением фрагмента программы (см. Р6.146):

MET:               MPY *,1

LTD *,-,0

BANZ

MET

Время повторения этого фрагмента – 4 такта по 200 нс, т.е. 800 нс. Для реализации заданного фильтра 40-го порядка требуется выполнить приведенный фрагмент в цикле 40 раз, при этом время выполнения 32 мкс. При частоте дискретизации 48 кГц каждый отсчет поступает на вход цифрового фильтра через 20,8 мкс, следовательно, данное решение неприемлемо по быстродействию. Это объясняется тем, что половина времени уходит на выполнение команды условного перехода BANZ MET. Поэтому в данном случае целесообразно отказаться от циклического построения программы и построить линейную программу, состоящую из многократного повторяющихся команд MPY и LTD. Это позволяет исключить команду условного перехода и улучшить быстродействие, но требует увеличения программы и объема программной памяти. Для составления программы необходимо распределить ячейки внутренней памяти данных TMS 32010. Коэффициенты фильтра а0а9 будут храниться в ячейках памяти с адресами 0…27 (в шестнадцатеричной системе счисления), отсчеты x(n)…x(n – 39) в ячейках 30…57. Программа работы фильтра записывается в ПЗУ программ с адреса 0А, так как в начальных адресах записывается программа инициализации работы устройства (см. ниже). Программа работы фильтра может иметь следующий вид:

Адрес

Команда

Комментарий

0A

IN 30, 0

[30]¬(Порт 0) (ввод отсчета входного сигнала x(n))

0B

LARK AR0,27

AR0¬27 (адрес а39)

0C

LARK AR1,57

AR1¬57 (адрес x(n– 39))

0D

ZAC

ACC¬0

0E

LAR P1

ARP¬1

0F

LT *-,0

T¬[(AR)]; AR1¬(AR1) – 1; ARP¬0

10

MPY *-,1

P¬(T)´[(AR0)]; AR0¬(AR0) – 1 ARP¬1

11

LTD *-,0

T¬[(AR1)]; [(AR1)+1]¬[(AR1)];

ACC¬(ACC)+P; AR1¬(AR1) – 1; ARP¬0

Адреса с 12 по 5D занимают повторяющиеся команды MPY *-,1 и LTD *-,0

5E

MPY *,1

P¬(T)´[(AR0)]; ARP¬1

5F

APAC

ACC¬(ACC)+P

60

SACH 7F,1

[7F]¬(ACC)´21 (старшие разряды)

61

OUT 7F,1

(Порт 1)¬[7F] (вывод y(n))

62

NOP

63

BIOZ

Если , то РС¬62 (ожидание нового отсчета x(n)), иначе РС¬65

64

62

65

В

РС¬0А (безусловный переход к адресу 0А)

66

Коэффициенты фильтра ai могут также храниться в ПЗУ по адресам 67…8Е и в начале работ устройства (после включения питания) переписываться во внутренне ОЗУ данных процессора TMS 32010. Для этой цели служит следующая программа: