Проектирование цифрового фильтра верхних частот
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
? с содержимым аккумулятора:
А0 А2 соответственно маски RST 5.5, RST 6.5, RST 7.5;
А3 - разрешение установки маски;
А4 сброс триггера приема запроса RST 7.5;
А5 не используется;
А6 разрешение вывода данных;
А7 бит данных для вывода через SOD.
Установка маски запрещает соответствующее прерывание. Смена маски в соответствии с А0 А2 выполняется только при разрешении ее установки (А3 = 1). В противном случае функция установки маски подавляется.
Команда RIM читает текущее состояние масок в аккумулятор в соответствии со следующим распределением:
А0 А2 соответственно маски RST 5.5, RST 6.5, RST 7.5;
A3 флаг разрешения прерывания;
А4 А6 соответственно флаги запросов RST 5.5, RST 6.5, RST 7.5;
А7 бит данных с входа SID.
Запросы на прерывания строго упорядочены, как это показано в таблице. Установленная приоритетная схема разрешает конфликт при одновременном появлении нескольких запросов и не учитывает текущего приоритета программы.
Тип прерыванияПриоритетСтартовый адресTRAP1 (высш.)0024НRST 7.52003СНRST 6.530034НRST 5.54002СНINTR5 (низш.)Вводится при подтверждении прер.
5. Синтез управляющего узла (разработка программы на языке микропроцессора)
Рабочая программа разработана на основе спроектированного алгоритма функционирования устройства и результатов анализа и формализации задачи. Программа привязана к минимальной конфигурации аппаратной части фильтра.
Распределение памяти ОЗУ:
5000h хранение отсчета x n;
5001h хранение отсчета x n 2;
5002h хранение отсчета y n 1;
5003h хранение произведений p 1n;
5004h хранение произведений p 2n;
50FFh начальный адрес стека.
;Программа: "Фильтр высоких частот"
;Автор: Халява Валентина Сергеевна
;Разностное уравнение: yn = x n +1.1x n 2 + 0,999 y n 2;
;Инициализация по сигналу "Сброс"
.ORG 0;начальный адрес программного
;модуля инициализации
DI;запрет прерываний
LXISP, 50FFh;организация стека
MVIA, 0FFh;настройка порта РА (РФ55) на вывод
STA02h;
MVIA, 05Dh;настройка таймера на частоту пере-
STAF004h;полнения Т = ТД в режиме 3
MVIA, 0C1h;
STAF005h;
MVIA, 0C0h;настройка порта РА (РУ55) на ввод
STA00h;и пуск таймера
MVIA, 1Ah;настройка режима прерываний
SIM;
EI;разрешение прерываний
M1:HLT;останов, ожидание прерывания
JMPM1;переход на команду останова процессора по
; окончании подпрограммы обслуживания прерывания
.ORG 3Ch;начальный адрес программной
;реакции на прерывание типа RST 7.5
PUSH PSW;
LDA 5000h;загрузка в аккумулятор значения xn
STA 0800h;
POP PSW;восстановление аккумулятора
RET;возврат из подпрограммы обслуживания к основной
;программе
LDA01h;ввод текущего кода АЦП в аккумулятор
ADIh;получение дополнительного кода для текущего отсчета
;программный модуль масштабирования:
;вычисления произведения
; xn := xn = 20xn;
;входной отсчет хранится в аккумуляторе, масштабированный
; отсчет записать в ячейку ОЗУ с адресом АХ
MOVH, A; xn H
ADDH ;арифметические сдвиги входного
;отсчета и накопление суммы частичных
;произведений в аккумуляторе: 20 xn А
STA00h;запоминание отсчета xn в памяти
;программный модуль вычисления произведения:
;p1n = 1,1 xn 1,00011001xn = ( 20 + 2-4 + 2-5 + 2- 8) xn;
;xn хранится в ячейке ОЗУ с адресом X2;
;p1n записать в ячейку ОЗУ с адресом P1
LDAX2; Xn-2 H
MOVH, A;
MOVA, H ;арифметические сдвиги отсчета xn
ARHL ;и накопление суммы частичных
ARHL;произведений в аккумуляторе:
ARHL; ( 20 + 2-4 + 2-5 + 2- 8) xn А
ARHL;
ADDH;
ARHL;
ADDH;
ADDH;
ARHL;
ARHL;
ADDH;
STA03h;запоминание p1n в памяти
;программный модуль вычисления произведения:
;p2n = 0,999 yn-1 0, 11111111 yn-1
; = ( 2-1 + 2-2 + 2-3 + 2-4 + 2-5 + 2-6 + 2- 7+2- 8)yn-1;
;yn-1 хранится в ячейке ОЗУ с адресом Y1;
;p2n записать в ячейку ОЗУ с адресом P2
LDAY1; yn-1 A
MOVH, A; yn-1 H
ARHL;арифметические сдвиги отсчета yn-1
MOVA, H ;и накопление суммы частичных
ARHL ; произведений в аккумуляторе:
MOVA, H ; ( 2-1 + 2-2 + 2-3 + 2-4 + 2-5 + 2-6 + 2- 7+2- 8)yn-1 А
ARHL ;
MOVA, H ;
ARHL ;
MOVA, H ;
ARHL ;
MOVA, H ;
ARHL ;
MOVA, H ;
ARHL ;
MOVA, H ;
ARHL ;
ADDH ;
STA04h;запоминание p2n в памяти
;программный модуль вычисления промежу-
;точного и выходного отсчета:
; y n = x n x n - 2 p 2n p 3n
;слагаемые хранятся в ячейках ОЗУ, результат
;вычисления записать в ячейки ОЗУ
LDA00h; xn A
LXIH, 5001h;загрузка адреса xn - 1
SUBM; xn - xn - 2 A
INXH;получение адреса vn 1
INXH;
SUBM; xn - xn 2 - vn 1 A
LXIH, 5003h;загрузка адреса p 1n
SUBM; xn - xn 2 - vn 1 - p 1n A
STA02h;запоминание y n-2 в памяти
LXIH, 5001h;загрузка адреса xn 2
SUBM;x n - x n - 2 A
LXIH, 5004h;загрузка адреса p 2n
SUBM; x n - x n - 2 - p 2n A
STA05h;запоминание y n в памяти
ADIh;получение смещенного входного
;кода ЦАП
STA00h;вывод кода на ЦАП через порт РА (РФ55)
;программный модуль сдвига отсчетов памяти
LHLD00h;
SHLD01h ;
LHLD05h;
SHLD06h;
RET;возврат из подпрограммы обслуживания прерывания
- Оценка быстродействия устройства
Быстродействие фильтра в рабочем режиме оценим как время, необходимое для обработки каждого прерывания процессора. Рабочая программа фильтра линейная (не содержит разветвлений), поэтому общее число машинных тактов, требуемых для выполнения программы, получим как сумму машинных тактов всех последовательно выполняемых команд, составляющих рабочий цикл процессора. Сумма машинных тактов для рабочего цикла приведенной выше программы равна 531. Из этого следует вывод, что процессор не успеет выполнить подпрограмму обслуживания прерывания за интервал дискретизации TД. При частоте FCLK МП = 1,5 МГц FД = 4.3 кГц (349 маш?/p>