Кодовые выражения микропрограммы.
Минимальная требуемая емкость ПЗУ -
Естественная адресация
| № | МЕТКА | УПР. СИГНАЛ | ПЕРЕХОД | 
| 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
Минимизированные кодовые выражения микропрограммы
Минимальная требуемая емкость ПЗУ -
Устройство будем реализовывать на интегральных микросхемах серий 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