│ │ LD @P2:1+,#%2C12 │
│ │ LD @P2:1+,#%3F77 │
│ │ LD SR,#%009B ;установка цикла адресов в │
│ │ ;регистре статуса цикл равен 8 │
│ │ LD P1:0,#4 ;P1:0 будет указывать на │
│ │ ;последний отсчет полученный │
│ │ ;от АЦП │
│ │ LD P0:0,#255 ;P0:0 будет указывать на │
│ │ ;последний отсчет в памяти │
│ │ ;фильтра │
│ 1 │LP: LD P1:1,#0 ;P1:1 указывает на h(0) │
│ 1 │ LD bus,@P0:0+ ;Инкремент P0:0 и теперь он │
│ │ ;указывает на последний отсчет │
│ │ ;в памяти фильтра │
│ 1 │ LD X,P0:0 ; │
│ 1 │ LD P2:0,X ;P2:0=P0:0 │
│ 1 │ LD @P1:0+,EXT1 ;запись нового отсчета от АЦП в│
│ │ ;в память │
│ 1 │ MLD @P1:1+,@P2:0+LOOP ;Аккумулятор A=0 │
│ │ ;Регистр P=x(n-4)h(0) │
│ 1 │ MPYA @P1:1+,@P2:0+LOOP ;A=A+x(n-4)h(4) │
│ │ ;P=x(n-3)h(3) │
│ 1 │ MPYA @P1:1+,@P2:0+LOOP ;A=A+x(n-3)h(3) │
│ │ ;P=x(n-2)h(2) │
│ 1 │ MPYA @P1:1+,@P2:0+LOOP ;A=A+x(n-2)h(2) │
│ │ ;P=x(n-1)h(1) │
│ 1 │ MPYA @P1:1,@P2:0 │
│ │ ;P=x(n)h(0) │
│ 1 │ MPYA @P1:1,@P2:0 ;A=A+x(n)h(0),A=y(n) │
│ │ ;P=x(n)h(0) │
│ 1 │ LD EXT0,A ;запись выходного отсчета │
│ │ ;фильтра y(n) в ЦАП │
│ 2 │ JP LP ;перейти к обработке следующего│
│ │ ;отсчета │
├──────┴────────────────────────────────────────────────────────┤
│ Итого: 14 тактов или при тактовой частоте 15 МГц 0,938 мкс.│
└───────────────────────────────────────────────────────────────┘
Рис. 15. Фрагмент программы реализующей цифровой фильтр
ВУ. Если операнды находятся в ПП, требуется, как правило, 2 или 3 такта.
Все ЦСП Z89 имеют отдельный шестиуровневый 16-битный стек. Z89c00 можно рекомендовать для построения цифровых фильтров.
Частотный диапазон сигналов может доходить до ~ 500 кГц. Для убедительности на рис. 15 приведен фрагмент программы реализующей фильтр с конечной импульсной характеристикой. Алгоритм фильтрации описывается уравнением:
,
где y(n) - отсчеты выходного сигнала;
x(n-m) - отсчеты входного сигнала;
h(m) - отсчеты импульсной характеристики фильтра;
N - порядок фильтра.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.