курсач по МПТ правленый (775018), страница 2
Текст из файла (страница 2)
С помощью таблиц 1 и 2 получим кодовые выражения микропрограммы для УА с естественной (табл. 3) и принудительной (табл. 4) адресацией.
Таблица 3 Таблица 4.
Адрес | Разряды микрокоманд | Адрес | Разряды микрокоманд | |
0000 | 1 100000 0000 | 0000 | 00000 100000 0000 | |
0001 | 0 100000 0000 | 0001 | 10000 000000 0000 | |
0010 | 1 010000 1000 | 0010 | 00000 010000 0111 | |
0011 | 1 000010 0000 | 0011 | 00000 000010 0001 | |
0100 | 1 000001 0110 | 0100 | 00000 000001 0110 | |
0101 | 0 010000 0000 | 0101 | 01000 000000 0000 | |
0110 | 0 001000 0000 | 0110 | 00100 000000 1100 | |
0111 | 1 000000 1111 | 0111 | 00000 001000 1011 | |
1000 | 1 001000 0110 | 1000 | 00000 000100 1010 | |
1001 | 1 000100 1100 | 1001 | 00010 000000 1011 | |
1010 | 0 000100 0000 | 1010 | 01000 000000 0000 | |
1011 | 1 000000 1101 | 1011 | 00001 000000 0010 | |
1100 | 0 010000 0000 | 1100 | 00000 000000 0000 | |
1101 | 0 000010 0000 | |||
1110 | 1 000000 0010 | |||
1111 | 1 000000 0000 |
Из сравнения таблиц 1 и 2 следует, что для хранения микропрограмм с естественной адресацией необходимо 140 бит, а для УА с принудительной адресацией 164 бит. Таким образом, предпочтительней вариант с естественной адресацией. На рис. 1 изображена функциональная схема УА с естественной адресацией.
Рис.1.
Построение принципиальной схемы.
Будем строить наше устройство на элементах серии 155 и 555, так как они являются наиболее распространенными сериями и имеют полный набор необходимых элементов для построения схемы в соответствии с операционным описанием и функциональной схемеой устройства.
Регистры данных РГД1 и РГД2 строится на микросхеме 8-разрядного сдвигового регистра К155ИР13. Управляющие сигналы S0, S1 обеспечивают запись кода А и В врегистр (S0=1, S1=1) и сдвиг влево (S0=0, S1=1). Они формируются из управляющих сигналов управляющего автомата в соответствии с уравнениями:
S0 = УЗП , S1= УЗП + УСДВ1.
Счетчик байт (СЧБ) собран на МС К555ИЕ7, по сигналу УН загружается начальные данные, счетный вход стробируется генератором импульсов (ГИ), счет производится согласно уравнениям: U = ГИ* УСДВ1, D = 1. Так как необходим 5-разрядный счетчик, то в качестве старшего разряда и спользуется выход PU, служащий для наращивания разрядности.
U = ГИ* УСДВ1.
Счетчик единиц состоит из двух МС К555ИЕ7. При УН счетчик обнуляется, счетный вход стробируется ГИ, в качестве старшего разряда используется выход Q1,
U = УСЧ1 + ГИ = ГИ | УСЧ1, D= УСЧ2 + ГИ = ГИ | УСЧ2
Операционная часть устройства потребляет при питании +5В около 0,8Вт.
Построение устройства в виде микропроцессорного вычислителя на БИС К580ВМ80А.
Микропроцессорный вычислитель имеет стандартную структуру. Главной задачей проектирования является создание алгоритма работы вычислителя и создание программы.
Разработка обрабатывающего алгоритма.
Исходными данными являются два 128-разрядных кода, которые содержатся в памяти (data1 и data2) . По окончанию вычисления программа сохраняет данные в ячейках Znak и Res.
Схема алгоритма представленна на рис. 8.
Начало
СЧЕ:=0, СЧБ:=16
Подпрограмма Loop
Загрузка в HL адреса
начала Data1 HL C
Loop(HL, C) Loop (HL, C)
Сохранение С в Е
СЧЕ:=0, СЧБ:=16
Загрузка в HL адреса
начала Data2
Loop(HL, C)
Пересылка Е в А
А:= А - С
нет С > А
да
Пересылка С в А
А:= А - Е
Сохранение 01h в Znak
Сохранение А в Res
Конец
Рис. 8.
Алгоритм подпрограммы Loop представлен на рис.9.
Начало п-п Loop
Преесылка данных с адреса HL
в А
СЧБИТ:=8
Сдвиг А влево.
нет
Бит = =1
да
С:= С + 1
СЧБИТ:=СЧБИТ-1
нет
СЧБИТ=0
да
HL:= HL + 1, СЧБ:=СЧБ-1
нет
СЧБ=0
да
Выход
Рис.9.
Где СЧБ- счетчик байт (два кода по 16 байт), СЧБИТ-счетчик бит, HL – адрес нахождения байта информации, А- аккамулятор, С- счетчик единичных символов. Е-ячейка хранения промежуточного результата счетчика ед. Символов.
Листинг программы на языке асемблера.
Адрес | Код | Метки | Команды | Примечания |
Org 800h | ||||
0800 | 0E | MVI C,00h | Обнуление счетчика ед. символов. | |
0801 | 00 | |||
0802 | 16 | MVI D,10h | Подготовка СЧБ | |
0803 | 10 | |||
0804 | 21 | LXI H,data1 | Загрузга начального адреса data1 | |
0805 | 37 | |||
0806 | 08 | |||
0807 | CD | CALL Loop | Вызов подарограммы | |
0808 | 25 | |||
0809 | 08 | |||
080A | 59 | MOV E,C | Сохранение промежуточного результата счет | |
080B | 0E | MVI C,00h | Обнуление счетчика ед. Символов | |
080C | 00 | |||
080D | 16 | MVI D,10h | Подготовка СЧБ | |
080E | 10 | |||
080F | 21 | LXI H,data2 | Загрузга начального адреса data2 | |
0810 | 47 | |||
0811 | 08 | |||
0812 | CD | CALL Loop | Вызов подарограммы | |
0813 | 25 | |||
0814 | 08 | |||
0815 | 7B | MOV A,E | Пересылка пром. результата в аккамулятор | |
0816 | 91 | SUB C | Нахождение разности кол-ва единиц. | |
0817 | F2 | JP plus | Если рез. Положит. переход к сохранению | |
0818 | 21 | |||
0819 | 08 | Иначе | ||
081A | 79 | MOV A,C | Пересылка кол-ва ед. Вторго кода в аккум. | |
081B | 93 | SUB E | Нахождение разности | |
081C | 32 | LXI H,znak | Подготовка к сохр. Знакового разряда | |
081D | 57 | |||
081E | 08 | |||
081F | 36 | MVI M,01h | Сохр. Знакового разряда | |
0820 | 01 | |||
0821 | 32 | plus: | STA res | Сохранение результата |
0822 | 58 | |||
0823 | 08 | |||
0824 | 76 | HLT | Конец | |
0825 | 7E | Loop: | MOV A,M | Начало подпрогр., пересылка данных в А |
0826 | 06 | MVI B,08Fh | СЧБИТ:=8 | |
0827 | 08 | |||
0828 | 07 | Loop2: | RLC | Сдвиг влево |
0829 | D2 | JNC bit0 | Если бит =0 переход к bit0 | |
082A | 2D | |||
082B | 08 | Иначе | ||
082C | 0C | INR C | Увеличение счетчика единиц | |
082D | 05 | Bit0: | DCR B | СЧБИТ:=СЧБИТ-1 |
082E | C2 | JNZ Loop2 | Если не 0 то переход к lopp2 | |
082F | 28 | |||
0830 | 08 | |||
0831 | 23 | INX H | Увеличение адреса нахождения данных | |
0832 | 15 | DCR D | Уменьшение счетчика байт | |
0833 | C2 | JNZ Loop | Если не 0 переход к началу подпрогр. | |
0834 | 25 | |||
0835 | 08 | |||
0836 | C9 | RET | Возврат из подпрограммы | |
0837 | 01 | Data1 | DB 01h | Начало первого входного кода |
0838 | 01 | DB 01h | ||
0839 | 01 | DB 01h | ||
083A | 01 | DB 01h | ||
083B | 01 | DB 01h | ||
083C | 01 | DB 01h | ||
083D | 01 | DB 01h | ||
083E | 01 | DB 01h | ||
083F | 01 | DB 01h | ||
0840 | 01 | DB 01h | ||
0841 | 01 | DB 01h | ||
0842 | 01 | DB 01h | ||
0843 | 01 | DB 01h | ||
0844 | 01 | DB 01h | ||
0845 | 01 | DB 01h | ||
0846 | 01 | DB 01h | ||
0847 | 01 | Data2 | DB 01h | Начало второго входного кода |
0848 | 01 | DB 01h | ||
0849 | 01 | DB 01h | ||
084A | 01 | DB 01h | ||
084B | 01 | DB 01h | ||
084C | 01 | DB 01h | ||
084D | 01 | DB 01h | ||
084E | 01 | DB 01h | ||
084F | 01 | DB 01h | ||
0850 | 01 | DB 01h | ||
0851 | 01 | DB 01h | ||
0852 | 01 | DB 01h | ||
0853 | 01 | DB 01h | ||
0854 | 01 | DB 01h | ||
0855 | 01 | DB 01h | ||
0856 | 01 | DB 01h | ||
0857 | 00 | Znak | DB 00h | Знаковая ячейка |
0858 | 00 | Res | DB 00h | Разность единичных символов |
Отладка и выполнение программы.
Оталдка и выполнение программы производилось с помощью эмулятора микропроцессора К580ВМ80А на персональном компьютере.