Смекни!
smekni.com

Проектирование цифрового фазового звена (стр. 3 из 4)

.ORG3Ch; начальный адрес программной

; реакции на прерывание типа RST7.5

LDAPARU; ввод текущего кода АЦП в акку-

; мулятор

ADI80h; получение дополнительного кода

; для текущего отсчета

; программный модуль масштабирования:

; вычисления произведения

; xn: = 0,01011110xn= (2-2 + 2-4 + 2-5 + 2-6+ 2-7) xn;

; входной отсчет хранится в аккумуляторе,

; масштабированный отсчет записать в ячейку ОЗУ

; с адресом АХ

MOVH, A; xn®H

ARHL; арифметические сдвиги входного

ARHL; отсчета и накопление

MOVA, H; суммы частичных произведений

ARHL; в аккумуляторе: (2-2xn+ 2-4xn+

ARHL; + 2-5xn+ 2-6xn+ 2-7xn) ®А

ADDH;

ARHL;

ADD H;

ARHL;

ADD H;

ARHL;

ADDH;

STAAX; запоминание отсчета xnв памяти

; программный модуль вычисления произведе-

; ния: p1n= 0,85 xn»0,11011001xn=

; = (2-1 + 2-2 + 2-4 + 2-5 + 2 - 8) xn;

; xnхранится в ячейке ОЗУ с адресом AX;

; p1nзаписать в ячейку ОЗУ с адресом AP1

LDA AX; xn® A

MOV H, A;

ARHL; арифметические сдвиги отсчета xn

MOVA, H; и накопление суммы частичных

ARHL; произведений в аккумуляторе:

ADDH; (2-1 + 2-2 + 2-4 + 2-5 + 2 - 8) xn®А

ARHL;

ARHL;

ADD H;

ARHL;

ADD H;

ARHL;

ARHL;

ARHL;

ADDH;

STAAP1; запоминание p1nв памяти

; программный модуль вычисления произведе-

; ния: p2n= 0,85 yn-2»0,11011001yn-2 =

; = (2-1 + 2-2 + 2-4 + 2-5 + 2 - 8) yn-2;

; yn-2 хранится в ячейке ОЗУ с адресом АY2;

; p2nзаписать в ячейку ОЗУ с адресом AP2

LDA AY2; yn-2® A

MOV H, A;

ARHL; арифметические сдвиги отсчета yn-2

MOVA, H; и накопление суммы частичных

ARHL; произведений в аккумуляторе:

ADDH; (2-1 + 2-2 + 2-4 + 2-5 + 2 - 8) yn - 2®А

ARHL;

ARHL;

ADD H;

ARHL;

ADD H;

ARHL;

ARHL;

ARHL;

ADDH;

STAAP2; запоминание p2nв памяти

; программный модуль вычисления выходного отсчета:

; yn= p1n+ xn - 2 - p2n

; слагаемые хранятся в ячейках ОЗУ, результат

; вычисления записать в ячейки ОЗУ с адресом AY

LDAAX2; xn - 2 ®A

LXIH,AP1; загрузка адреса p1n

ADDM; p1n+ xn - 2®A

INXH; получение адреса p2n

SUB M; p1n + x n - 2 - p 2n ® A

STAAY; запись ynв память

STAPBRU; вывод кода через

; порт РB (РУ55)

; программный модуль сдвига отсчетов

; в памяти

LHLDAX;

SHLDAX1;

LHLDAY;

SHLDAY1;

RET; возврат из подпрограммы

; обслуживания прерывания

Листинг программного модуля вычисления выходного отсчета

Sun Apr 3 2005 15: 02

2500 A.D.8085 Macro Assembler - Version 4.02a

------------------------------------------

Input Filename: program.asm

Output Filename: program.obj

1; программный модуль вычисления выходного отсчета:

2; yn = p1n + x n - 2 - p 2n

3; слагаемые хранятся в ячейках ОЗУ, результат

4; вычисления записать в ячейки ОЗУ

5 7002 PBRU EQU 7002h;

6 5002 AX2 EQU 5002h;

7 5003 AY EQU 5003h;

8 5006 AP1 EQU 5006h;

9 0000 3A 02 50 LDA AX2;

10 0003 21 06 50 LXI H,AP1;

11 0006 86 ADD M;

12 0007 23 INX H;

13 0008 96 SUB M;

14 0009 32 03 50 STA AY;

15 000C 32 02 70 STA PBRU;

Defined Symbol Name Value References

8 AP1 = 5006 10

6 AX2 = 5002 9

7 AY = 5003 14

Pre CODE 0000

Pre DATA 0000

5 PBRU = 7002 15

Lines Assembled: 15 Assembly Errors: 0

С целью проверки на переполнение осуществлен ручной и машинный просчет программы. В качестве исходного случая взят случай, когда все отсчеты имеют максимальное значение.

Xn= 1 (10) = 0,1111111 (2) = 7F (16); Xn-2 = 1 (10) = 0,1111111 (2) = 7F (16);

Yn-2 = - 1 (10) = 1,0000000 (2) = 80 (16); kМ = 0,37 (10) »0,0101111 (2) = 0,3671875;

xn=XnkМ=0,9921875*0,3671875= 0,3643188 (10) »0, 0101110 (2) = 2E (16);

xn-2=Xn-2kМ=0,9921875*0,3671875=0,3643188 (10) »0, 0101110 (2) = 2E (16);

yn-2=Yn-2kМ= - 1*0,3671875= - 0,3671875 (10) =1,1010001 (2) = D1 (16);

Разностное уравнение имеет вид: yn= pn1 + xn-2 + pn2, где с учётом погрешности pn1=0,84375*xn, pn2=0,84375*yn-2.

pn1=0,84375*0,3643188=0,3073939 (10) » 0, 0100111 (2) = 27 (16);

pn2=0,84375* (-0,3671875) = - 0,3098144 (10) » 1,1011001 (2) = D9 (16);

pn2=ï pn2ï=0,3098144 (10) » 0,0100111 (2) = 27 (16);

yn =27 (16) + 2E (16) + 27 (16) =7C (16).

Таким образом при ручном просчёте переполнения не произошло.

Машинный просчёт программного модуля вычисления выходного отсчета представлен на рисунке, где по адресу 5002hзаписан отчёт xn-2, по адресу 5006h - произведение pn1, по адресу 5007h - произведение pn2, по адресу 5003hсохраняется выходной отсчёт yn, 7002h - порт РBРУ55:

Результат машинного просчёта совпадает с результатом ручного просчёта. Таким образом в процессе выполнения программы переполнения не происходит.

Составление и описание электрической принципиальной схемы устройства

Электрическая принципиальная схема цифрового фазового звена содержит следующие микросхемы:

DD1 - МП К1821ВМ85

DD2 - ПЗУ КР1821РФ55

DD3 - ОЗУ КР1821РУ55

DD4 - двоичный реверсивный счётчик К555ИЕ7

DA1 - ОУ К154УД3

DA2 - СВХ К1100СК2

DA3 - АЦП КР572ПВ3

D1.1 - инвертор К155ЛН1

D2.1 - логический элемент 2И К155ЛИ5.

Микросхема К155ЛН1 содержит 6 инверторов, микросхема К155ЛИ5 содержит 2 логических элемента 2И.

Опишем назначение выводов микросхем.

К1821ВМ85:

1 - вход линии подключения кварцевого генератора;

2 - выход линии подключения кварцевого генератора;

3 - выход сброса системы;

4 - выход линии последовательной передачи данных;

5 - вход линии последовательной передачи данных;

6 - вход немаскируемого прерывания с фиксированным вектором типа RSTn (n= 4.5) высшего приоритета;

7 - 9 - входы запроса маскируемого прерывания с фиксированным вектором типа RSTn (n= 5.5, 6.5, 7.5);

10 - вход запроса векторного маскируемого прерывания;

11 - выход подтверждения прерывания;

12 - 19 - мультиплексная шина адреса / данных;

20 - общий;

21 - 28 - выходы адресной шины;

29, 33, 34 - выходы типа машинного цикла;

30 - выход разрешения фиксации адреса: сигнал появляется в течение такта каждого машинного цикла и разрешает запись адреса во внешний регистр адреса;

31 - выход управления записью;

32 - выход управления чтением;

35 - вход готовности пересылать или получать информацию;

36 - вход приёма сигнала сброса МП в начальное положение;

37 - выход импульсов синхронизации;

38 - выход подтверждения захвата шин адреса и данных;

39 - вход запроса захвата адресной шины и шины данных внешним модулем;

40 - питание (5В).

КР1821РФ55:

1, 2 - вход выбора кристалла;

3 - вход синхронизации;

4 - вход сброса (все линии обоих портов настраиваются на ввод);

6 - выход запроса состояния ожидания МП;

7 - вход выбора портов или памяти;

8 - вход управления чтением из портов (А или В);

9 - вход управления чтением из ПЗУ;

10 - вход управления записью в порты (А или В);

11 - вход разрешения фиксации адреса, поступающего по шине AD0 - AD7 (выводы 12 - 19) во внутренний регистр адреса.

12 - 19 - мультиплексная шина адреса / данных;

20 - общий;

21 - 23 - вход адреса (три старших разряда);

24 - 31 - двунаправленная шина данных порта А;

32 - 39 - двунаправленная шина данных порта В;

40 - питание (5В).

КР1821РУ55:

1, 2, 5, 37 - 39 - двунаправленная шина данных порта С;

6 - выход счётчика таймера;

7 - вход выбора порта или памяти;

8 - вход выбора кристалла;

9 - вход управления чтением данных из БИС;

10 - вход управления чтением данных из БИС;

11 - вход разрешения фиксации адреса, поступающего по шине AD0 - AD7 (выводы 12 - 19) во внутренний регистр адреса.

12 - 19 - мультиплексная шина адреса / данных;

20 - общий;

21 - 28 - двунаправленная шина данных порта А;

29 - 36 - двунаправленная шина данных порта В;

40 - питание (5В).

КР572ПВ3:

1 - 4, 15 - 18 - бит данных;

5 - выход состояния;

6, 7 - входы управления;

8 - вход тактирования;

9 - цифровая земля;

10 - питание (5В);

11 - опорное напряжение;

12 - смещение характеристики преобразования;

13 - аналоговый вход;

14 - аналоговая земля

К1100СК2:

1 - вход логический;

2 - питание (+);

3 - баланс;

4 - вход;

5 - питание (-);

6 - выход;

7 - конденсатор хранения;

8 - логическое опорное напряжение.

Расчёт быстродействия устройства

Быстродействие фильтра в рабочем режиме оценим как время, необходимое для обработки каждого прерывания процессора. Рабочая программа фильтра линейная (не содержит разветвлений), поэтому общее число машинных тактов, требуемых для выполнения программы, получим как сумму машинных тактов всех последовательно выполняемых команд, составляющих рабочий цикл процессора.

Сумма машинных тактов рабочего цикла программы равна 570. При частоте процессора

и
процессор не успевает выполнить подпрограмму обслуживания прерывания, так как
, то есть интервал дискретизации
равен 187 машинным тактам. Необходимо увеличить тактовую частоту микропроцессора до
и скорректировать слово загрузки в таймер:

получим управляющее слово таймера: