Таким образом, определим, что управляющее устройство необходимо синтезировать в виде конечного автомата Мили
Р1/— P1/УН 1, УЗАП 1 Р2/УЭ 1 Р4/УН 2, УЗАП 1 Р3/УЭ 2 S0 S1 S2 S3 S4 Р4/
— Р5/—
Р2/УН 2, УЗАП 1
Р3/УЭ 3
Р5/УЭ 3
Граф состояний автомата Мили.
| S0 | S1 | S2 | S3 | S4 |
Q1 | 0 | 0 | 0 | 1 | 1 |
Q2 | 0 | 0 | 1 | 1 | 0 |
Q3 | 0 | 1 | 1 | 1 | 1 |
Таблица
1 Кодированная таблица состояний. ВХОД | S0 | S1 | S2 | S3 | S4 |
P1 | S1/УН 1,УЗАП1 |
|
|
|
|
НЕ Р1 | S0/- |
|
|
|
|
Р2 |
| S3/ УН 2, УЗАП1 |
|
|
|
НЕ Р2 |
| S2/УЭ 1 |
|
|
|
Р3 |
|
|
| S0/УЭ 3 |
|
НЕ Р3 |
|
|
| S4/УЭ 2 |
|
Р4 |
|
| S3/УН 2, УЗАП 1 |
|
|
НЕ Р4 |
|
| S1/- |
|
|
P5 |
|
|
|
| S0/УЭ 3 |
НЕ P5 |
|
|
|
| S3/- |
Таблица
2 Таблица переходов и выходов
ВХОД | 0 0 0 | 0 0 1 | 0 1 1 | 1 1 1 | 1 0 1 |
P1 | 0 0 1/УН 1, УЗАП 1 |
|
|
|
|
НЕ Р1 | 0 0 0/- |
|
|
|
|
Р2 |
| 1 1 1/ УН 2, УЗАП 1 |
|
|
|
НЕ Р2 |
| 0 1 1/УЭ 1 |
|
|
|
Р3 |
|
|
| 0 0 0/УЭ 3 |
|
НЕ Р3 |
|
|
| 1 0 1/УЭ 2 |
|
Р4 |
|
| 1 1 1/УН 2, УЗАП 1 |
|
|
НЕ Р4 |
|
| 0 0 1/- |
|
|
P5 |
|
|
|
| 0 0 0/УЭ 3 |
НЕ P5 |
|
|
|
| 1 1 1/- |
Таблица
3 Кодированная таблица переходов и выходовЕсли в конечном автомате будет применяться
D-триггер, то будут справедливы равенства
:Q1 (
t+1) = НЕ Q1*НЕ Q2*Q3*P2 + НЕ Q1*Q2*Q3*P4 + Q1*Q2*Q3*НЕ P3+ Q1*НЕ Q2*Q3*НЕ P5 [20 входов
] Q2 (t+1) = НЕ Q1*НЕ Q2*Q3*P1 + НЕ Q1*Q2*Q3*НЕ P4 + Q1*НЕ Q2*Q3*НЕ P5 [15 входов
] Q3 (t+1) = НЕ Q1*НЕ Q2*НЕ Q3*P1 + НЕ Q1*НЕ Q2*Q3 + НЕ Q1*Q2*Q3 + Q1*Q2*Q3*НЕ P3 + Q1*НЕ Q2*Q3*НЕ P5 = =НЕ Q1*НЕ Q2*НЕ Q3*P1 + НЕ Q1*Q3 + Q1*Q2*Q3*НЕ P3 + Q1*НЕ Q2*Q3*НЕ P5 [18 входов
] Для реализации автомата на
D-триггерах потребуется 43 входа. Если будет использоваться
J-K триггер, то уравнения для него можно получить из уравнений для
D-триггера:
Q (t+1)=J*Q+K*QQ(T+1)=J*HE Q + HE K*Q J1=
НЕ Q2*Q3*P2+Q2*Q3*P4=Q3*(НЕ Q2*P2+Q2*P4) [6 входов
]K1=(Q2*Q3*НЕ P3+НЕ Q2*Q3*НЕ P5)=(Q2*Q3*НЕ P3)*(НЕ Q2*Q3*НЕ P5)=(НЕ Q2+ НЕ Q3+P3)*(Q2+НЕ Q3+P5) [8 входов
]J2=(НЕ Q1*Q3+Q1*Q3*НЕ P5)=Q3*(НЕ Q1+Q1*НЕ P5) [6 входов
] K2=(НЕ Q1*Q3*P4) =
Q1+НЕ Q3+НЕ P4 [3 входа
]J3=НЕ Q1*НЕ Q2*P1 [3 входа
]K3=(НЕ Q1*НЕ Q2+НЕ Q1*Q2+Q1*Q2*НЕ P3+Q1*НЕ Q2*НЕ P5) = (НЕ Q1+Q1*(Q2+НЕ Q2*НЕ P5)) =Q1*(НЕ Q1+(Q2+НЕ Q2*НЕ P5)) = Q1*НЕ Q2*(Q2+P5) = Q1*НЕ Q2*P5 [3 входа
]Для реализации автомата на
J-K-триггерах потребуется 29 входов, поэтому автомат будет реализовываться на них. Управляющие сигналы на основе таблицы переходов и выходов будут формироваться следующим образом
УН 1=
НЕ Q1*НЕ Q2*НЕ Q3*P1УЭ 1=
НЕ Q1*НЕ Q2*Q3*НЕ P2УН 2=
НЕ Q1*Q2*Q3*P4+НЕ Q1*НЕ Q2*Q3*P2УЭ 2
=Q1*Q2*Q3*НЕ P3УЭ 3
=Q1*НЕ Q2*Q3*P5+Q1*Q2*Q3*P3УЗАП1
=УН 1+УН 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 | ИДТИ К М1 |
Таблица
4 Каноническая форма микропрограммы.
Адрес
| УН 1 | УЭ 1 | УН 2 | УЭ 2 | УЭ 3 | УЗАП1 | Не Р1 | Р2 | Р3 | Не Р4 | Не Р5 | Адрес перехода
|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Таблица
5 Кодовые выражения микропрограммы.
Минимальная требуемая емкость ПЗУ -
(или 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
Программа была составлена на языке BASIC и отлажена на IBM-совместимом компьютере.
Текст программы
REM Программа по курсовой работе (каф 403).
REM Список переменных:
REM SCHET% - счетчик циклов.
REM D% - входной код.
REM B%, C% - выходные коды.
CLS
REM Задается размерность входного кода.
DIM D%(32)
REM Установка списка данных в начальное положение.
RESTORE
REM Запись входного кода. Цикл.
FOR I%=1 TO 32
REM Чтение I-го элемента входного кода.
READ D%(I%)
NEXT I%
REM Поиск первой комбинации 010. Цикл.
FOR SCHET%=2 TO 31
REM Проверка совпадения.
IF D%(SCHET%-1)=0 AND D%(SCHET%)=1 AND D%(SCHET%+1)=0 THEN GOTO 1
REM Сдвиг "окна".
NEXT SCHET%
REM Запись и вывод результата.
1 B%=SCHET%: PRINT "Номер первой единицы, стоящей между нулями: ";B%
REM Поиск последней комбинации 010. Цикл.
FOR SCHET%=31 TO 2 STEP -1
REM Проверка совпадения и запись результата.
IF D%(SCHET%-1)=0 AND D%(SCHET%)=1 AND D
%(SCHET%+1)=0 THEN GOTO 2
NEXT SCHET%
REM Запись и вывод результата.
2 C%=SCHET%: PRINT "Номер последней единицы, стоящей между нулями: ";C%
REM Входной код.
DATA 0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,1
В результате работы программы, на экран было выведено сообщение:
Номер первой единицы, стоящей между нулями: 7
Номер последней единицы, стоящей между нулями: 30
Использованная .литература
1.Аванесян Г.Р. Лёвшин В.П. «Интегральные микросхемы ТТЛ, ТТЛШ» М93;
2.Лебедев О.Н. «Применение микросхем памяти в электронных устройствах» М94;
3.Мельников Б.С. Щеглов А.В. «Методические указания к курсовой работе...» М91;
4.«Цифровые интегральные микросхемы» М94.
Для заметок
[1] Необходимые микросхемы регистров и ПЗУ в серии 1533 отсутствуют.