Кодовые выражения микропрограммы.
Минимальная требуемая емкость ПЗУ -
(или 2К*4 Бит)Естественная адресация
№ | МЕТКА | УПР. СИГНАЛ | ПЕРЕХОД |
1 | М1 | ЕСЛИ НЕ Р1 ТО М1 | |
2 | УН 1, УЗАП1 | ||
3 | М2 | ЕСЛИ Р2 ТО М3 | |
4 | УЭ 1 | ||
5 | ЕСЛИ НЕ Р4 ТО М2 | ||
6 | М3 | УН 2, УЗАП1 | |
7 | М4 | ЕСЛИ Р3 ТО М5 | |
8 | УЭ 2 | ||
9 | ЕСЛИ НЕ Р5 ТО М4 | ||
10 | М5 | УЭ 3 | |
11 | ИДТИ К М1 |
Таблица 6
Каноническая форма микропрограммы.
Адрес | П | УН 1 | УЭ 1 | УН 2 | УЭ 2 | УЭ 3 | УЗАП 1 | ||||||
П | НЕ P1 | P2 | P3 | НЕ P4 | НЕ P5 | Адрес перехода | |||||||
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | – | – | – |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | – | – | – |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | – | – | – |
0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | – | – | – |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | - | – | – |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Таблица 7
Кодовые выражения микропрограммы
Необходимый объем ПЗУ может быть уменьшен путем шифрации маски признаков.
П | УН 1 | УЭ 1 | УН 2 | УЭ 2 | УЭ 3 | УЗАП 1 | |||||
Адрес | П | Маска признаков | Адрес перехода | ||||||||
0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | – |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | – |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | – |
0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | – |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | - |
1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
Таблица 8
Минимизированные кодовые выражения микропрограммы
Минимальная требуемая емкость ПЗУ -
(или 256*4 Бит), что меньше, чем требуется для принудительной адресации, поэтому будем применять естественную адресацию. Функциональная схема управляющего автомата с микропрограммным управлением показана на рисунке 7.Устройство будем реализовывать на интегральных микросхемах серий 1533, так как микросхемы этой серий обладают наиболее оптимальными параметрами среди современных микросхем.1
Время задержки, нс | Потребляемая мощность, мВт | |
531 | 3,2 | 20 |
533 | 10 | 2 |
1531 | 3 | 4 |
1533 | 4 | 2 |
Таблица 9
Основные электрические параметры микросхем серии 1533
Выходное напряжение низкого уровня - не более 0,5 В
Выходное напряжение высокого уровня - не менее 2 В
Выходной ток - не менее -30 мА и не более -112 мА
Входной ток - не более 0,1 мА
Входной ток высокого уровня - не более 20 мкА
Входной ток низкого уровня - не более 0,2 мкА
Работа переключения - 4 пДж
Коэффициент разветвления по выходу - 40
Предельно допустимые режимы эксплуатации
Напряжение питания - не менее 4,7 В и не более 5,5 В
Входное напряжение высокого уровня - не менее 2 В и не более 5,5 В
Входное напряжение низкого уровня - не менее 0 В и не более 0,8 В
Основными элементами устройства являются счетчики и регистры. Счетчик будет реализован на двух микросхемах 1533ИЕ7 - четырехразрядном синхронном реверсивном счетчике. Он имеет три основных режима: параллельная асинхронная загрузка кода по входам Di при поступлении отрицательного ипульса на вход С, режим суммирования и режим вычитания. В двух последних режимах счетные импульсы подают на различные входы: суммирования и вычитания.
Входной код будет записываться в восемь четырехразрядных универсальных регистра сдвига на микросхемах КР531ИР11. Регистр функционирует в одном из четырех режимов, которые задаются двухразрядным кодом на входе S. Параллельный ввод информации со входа D происходит синхронно, по положительному фронту тактового импульса.
R | S1 | S0 | C | DR | DL | D0 | D1 | D2 | D3 | Q0 | Q1 | Q2 | Q3 | |
Уст. L | L | X | X | X | X | X | X | X | X | X | L | L | L | L |
Пок-ой | H | X | X | L | X | X | X | X | X | X | QA0 | QB0 | QC0 | QD0 |
Зап-ись | H | H | H | X | X | a | b | c | d | a | b | c | d | |
Сдв. | H | L | H | L | L | X | X | X | X | L | QAn | QBn | QCn | |
впр-аво | H | L | H | H | H | X | X | X | X | H | QAn | QBn | QCn | |
Сдв. | H | H | L | X | X | X | X | X | X | QB | QC | QD | L | |
вле-во | H | H | L | X | X | X | X | X | X | QB | QC | QD | H | |
Пок-ой | H | L | L | X | X | X | X | X | X | X | QA0 | QB0 | QC0 | QD0 |
Таблица 10
Таблица истинности регистра КР531ИР11
Характеристики ППЗУ КР556РТ4
Емкость - 256х4 Бит
Время задержки - 70 нс
Потребляемая мощность - 690 мВт
Тип выхода - ТТЛ-ОК
Исходное состояние - 0
Составление программы
Программа на ассемблере
НАЧАЛО
СЧЕТЧИК=02Н
АККУМУЛЯТОР=
=1-ый справа байт кода
Маскирование последних
3 бит АККУМУЛЯТОРА
АККУМУЛЯТОР= 010В
НЕТ
Сдвиг кода на разряд вправо
СЧЕТЧИК=СЧЕТЧИК+1
СЧЕТЧИК=32
Запись значения счетчика в память
СЧЕТЧИК=02Н
АККУМУЛЯТОР=
=1-ый слева байт кода
Маскирование первых
3 бит АККУМУЛЯТОРА
ДА
АККУМУЛЯТОР= 01000000В
2 3
1
1 2 3
Сдвиг кода на разряд влево
СЧЕТЧИК=СЧЕТЧИК-1
НЕТ
СЧЕТЧИК=1
Запись значения счетчика в память
КОНЕЦ
Для нормального функционирования программы необходимо предварительно занести входной код, предварительно поделенный на байты в следующие ячейки памяти: 0800Н - 0803Н (в 0800Н - крайний левый байт кода и т.д.) и 0804Н - 0807Н (в 0804Н - крайний левый байт кода и т.д.)
Адрес | Код | Метка | Команда | Комментарий |
0809 | 16 | MVI D,O2H | Счетчик = 2 | |
080A | 02 | |||
080B | 3A | M1 | LDA 0803H | Загрузка первого справа байта кода в аккумулятор |
080C | 03 | |||
080D | 08 | |||
080F | E6 | ANI 07H | Маскирование 3 последних бит аккумулятора | |
0810 | 07 | |||
0811 | FE | CPI 02H | Сравнение аккумулятора с 010В | |
0812 | 02 | |||
0813 | CA | JZ M2 | ||
0814 | 37 | |||
0815 | 08 | |||
0816 | A7 | ANA A | Обнуление флага переноса | |
0817 | 3A | LDA 0800H | ||
0818 | 00 | |||
0819 | 08 | |||
081A | 1F | RAR | ||
081B | 32 | STA 0800H | ||
081C | 00 | |||
081D | 08 | |||
081E | 3A | LDA 0801H | ||
0820 | 01 | |||
0821 | 08 | |||
0822 | 1F | RAR | ||
0823 | 32 | STA 0801H | ||
0824 | 01 | |||
0825 | 08 | |||
0826 | 3A | LDA 0802H | ||
0827 | 02 | |||
0829 | 08 | Последовательный сдвиг | ||
082A | 1F | RAR | байтов кода вправо | |
082B | 32 | STA 0802H | ||
082C | 02 | |||
082D | 08 | |||
082E | 3A | LDA 0803H | ||
082F | 03 | |||
0830 | 08 | |||
0831 | 1F | RAR | ||
0832 | 32 | STA 0803H | ||
0833 | 03 | |||
0834 | 08 | |||
0835 | 14 | INR D | Прибавление к счетчику единицы | |
0836 | 7A | MOV A, D | ||
0837 | FE | CPI 20H | Сравнение значения счетчика с 32D | |
0838 | 20 | |||
083A | 7A | M2 | MOV A, D | |
083B | 32 | STA 0808H | Запись первого результата в память | |
083C | 08 | |||
083D | 08 | |||
083E | 16 | MVI D,1FH | Счетчик = 31 | |
083F | 1F | |||
0840 | 3A | M3 | LDA 0803H | Загрузка первого слева байта кода в аккумулятор |
0841 | 03 | |||
0842 | 08 | |||
0843 | E6 | ANI E0H | Маскирование 3 первых разрядов кода | |
0844 | E0 | |||
0845 | FE | CPI 40H | Сравнение аккумулятора с 0100 0000В | |
0846 | 40 | |||
0847 | CA | JZ M4 | ||
0848 | 6B | |||
0849 | 08 | |||
084A | A7 | ANA A | Обнуление флага переноса | |
084B | 3A | LDA 0804H | ||
084C | 04 | |||
084D | 08 | |||
084E | 1F | RAL | ||
084F | 32 | STA 0804H | ||
0850 | 04 | |||
0851 | 08 | |||
0852 | 3A | LDA 0805H | ||
0853 | 05 | |||
0854 | 08 | |||
0855 | 17 | RAL | ||
0856 | 32 | STA 0805H | ||
0857 | 05 | |||
0858 | 08 | |||
0859 | 3A | LDA 0806H | ||
085A | 02 | |||
085B | 08 | Последовательный сдвиг | ||
085C | 17 | RAL | байтов кода влево | |
085D | 32 | STA 0806H | ||
085E | 06 | |||
085F | 08 | |||
0860 | 3A | LDA 0807H | ||
0861 | 07 | |||
0862 | 08 | |||
0863 | 17 | RAL | ||
0864 | 32 | STA 0807H | ||
0865 | 07 | |||
0866 | 08 | |||
0867 | 15 | DCR D | Вычитание из счетчика единицы | |
0868 | 7A | MOV A, D | ||
0869 | FE | CPI 02H | Сравнение значения счетчика с 1D | |
086A | 02 | |||
086B | 7A | M4 | MOV A, D | |
086C | 32 | STA 0809H | Запись второго результата в память | |
086D | 08 | |||
086E | 09 | |||
086F | 76 | HLT | Останов программы |
Программа на языке BASIC