книги / Теория графов и её приложения.-1
.pdfРис. 12.38. Выбор StateMachine Processing
для изменения настроек автоматического синтеза автомата, заданного в виде State Machine File
Рис. 12.39. Режим кодирования Авто
State Machine Processing
121
Рис. 12.40. Выбор режима кодирования
Minimal Bits в State Machine Processing
Видим, что есть ещё и коды Грея, Джонсона и др., а также множество других опций синтеза (рис. 12.40).
6. Анализ автоматически синтезированной схемы автомата с установленным режимом кодирования
Minimal Bits в State Machine Processing
Автоматически синтезированная по графу автомата схема с установленным режимом кодирования Minimal Bits в State Machine Processing имеет следующий вид (рис. 12.41).
Требуется чуть больше логических элементов (7 против 6 для BDF и 8 для унитарного кодирования), чем в случае синтеза по BDF, нобыстродействиенескольковыше(10, 277 нспротив10,561 нс для BDF и 11.220 нс для унитарного кодирования) (рис. 12.42).
122
Рис. 12.41. Автоматически синтезированная по графу автомата схема с установленным режимом кодирования
Minimal Bits в State Machine Processing с указанными кодами настройки LOGIC CELL
Рис. 12.42. Оценка автоматически синтезированной по графу автомата схемы с установленным режимом кодирования
Minimal Bits в State Machine Processing
Расшифруем шестнадцатеричные коды настройки логических ячеек (LOGIC CELL). Например, получим таблицу истинности функции управления вторым триггером y2(t + 1) – настройка
0FF0 (рис. 12.43).
123
Рис. 12.43. Таблица истинности функции y2(t + 1) – настройка 0FF0
Таким образом, получаем, что
у2 (t +1) = d2 (t) = у2 y1 y2 y1.
В подготовке практического занятия принимали участие: доцент кафедры АТ ПНИПУ О.В. Гончаровский; студенты группы КМБ-11 ПГНИУ А.В. Мазунина, А.А. Чесноков.
Пример аппаратной и программной реализации графа – схемы алгоритма
1.Преобразование схемы алгоритма
вэквивалентный автомат
Задана графическая схема алгоритма – ГСА, например, такая
(рис. 12.44).
Получаем отмеченную ГСА – ОГСА (рис. 12.45).
124
Начало
z1
z2
1
x1
0
0 x2
1
z4 |
|
z5 |
|
|
|
|
|
Конец
Рис. 12.44. НекотораяГСА
|
|
|
|
Начало |
|
|
|
|
|
|
x |
Y0 |
|
|
|
|
|
Z1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
Y1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Z2 |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
x |
Y2 |
|
|
|
|
X1 |
|||
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
x |
Y3 |
|
|
|
|
X2 |
|
||
|
|
|
|
|
||
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
Z4 |
|
Z5 |
|
x Y0
Конец
Рис. 12.45. ОтмеченнаяГСА-ОГСА
Строим граф автомата (рис. 12.46).
|
|
y1y2 |
|
|
|
|
|
|
|||||
|
|
00 |
|
|
|
|
|
z1 |
01 |
|
|||
|
|
Y0 |
|
|
|
|
|
|
Y1 |
|
|||
|
|
x2 z5 |
|
|
|
|
|||||||
|
2 z4 |
|
|
|
z2 |
|
|
||||||
|
|
|
|
|
|
||||||||
x |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
1 |
z3 |
|
|
|
|
|
|
|
|
|
|
x |
|
|
Y |
x1 z2 |
||||
|
|
Y |
|
|
|||||||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
||||||
|
|
3 |
|
|
|
|
|
|
2 |
|
|||
|
|
10 |
|
|
|
|
|
|
11 |
|
Рис. 12.46. Граф управляющего автомата
По рис. 12.46 получим обобщенную таблицу переходоввыходов (табл. 12.1).
125
Таблица 1 2 . 1
Таблица переходов-выходов
y2 |
y1 |
~ |
~ |
~ |
~ |
x2 |
x1 |
y2(t+1) |
y1(t+1) |
~ |
Микрооперации |
|||||
|
|
|
|
|
|
|
|
d2(t) |
d1(t) |
|
z1 |
z2 |
z3 |
z4 |
z5 |
|
0 |
0 |
0 |
0 |
0 |
0 |
~ |
~ |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
|
0 |
1 |
0 |
0 |
0 |
0 |
~ |
~ |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
|
1 |
1 |
0 |
0 |
0 |
0 |
~ |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
|
1 |
1 |
0 |
0 |
0 |
0 |
~ |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
~ |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
|
1 |
0 |
0 |
0 |
0 |
0 |
1 |
~ |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Из табл. 12.1 получаем минимизированные функции:
(1)
Автомат на «жёсткой» логике строится по системе (1). Автоматна«гибкой» логикестроитсянепосредственнопотабл. 12.1.
2. Программирование микропрограммного устройства управления со счетчиком микрокоманд и двумя типами микрокоманд
Рассмотрим программную (микропрограммную) реализацию ГСА, выполняемую без получения промежуточной моделиграфа переходов автомата. Сопоставим каждый из двух типов блоков ГСА с двумя типами микрокоманд: 1) операционную – для блоков микрокоманд:
126
Признак микрокоманды ПМ = 1 |
Микрооперации |
|
|
2) специальную, или перехода – для блока ветвления:
Признак микрокоманды |
Код логического |
Адрес |
ПМ = 0 |
условия |
перехода |
Если выполняются операционные микрокоманды, то последовательно выбираются адреса постоянного запоминающего устройства (ПЗУ) и последовательно выдаются микрооперации в операционное устройство.
Это может быть реализовано путем перебора состояний счетчика по счетному входу +1. Такой счетчик называется счетчиком микрокоманд. Конечно, для задач реальной размерности он должен иметь достаточное число состояний. Нам хватит 4 состояний. В случае выполнения специальной микрокоманды, если логическое условие равно единице, производится переход по указанному адресу с использованием входа предустановки РЕ по указанным в поле адреса данным Di. Если логическое условие равно нулю, то выбирается следующий адрес.
Если номер логического условия равен нулю, то это безусловный переход, и производится передача управления по указанному адресу (на входах Di).
Получим, например, микропрограмму реализации алгоритма, изображенного на рис. 1, для автомата с двумя типами микрокоманд (рис. 12.47).
Адресамикрокоманд(табл. 12.2) соответствуютблокамГСА. В рассмотренном автомате, если микрокоманда специальная (ПМ = 0), разряды 1–2 используются для кодирования логи-
ческого условия (значения указаны курсивом): 00 – безусловный переход, т.е. нет условия; 01 – х1; 10 – х2. Если микрокоманда операционная, то разряды 1–5 отводятся для микроопераций z1 – z5 соответственно.
127
Рис. 12.47. ГСА с адресами команд
Таблица 1 2 . 2
Микропрограмма с двумя типами микрокоманд
Метка |
|
Адрес |
|
|
|
Микрокоманда |
|
|
|||||
микрокоманды |
ПМ |
1 |
|
2 |
3 |
4 |
|
5 |
6 |
||||
|
0 |
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
0 |
|
0 |
0 |
M0: |
0 |
0 |
0 |
1 |
1 |
0 |
|
1 |
0 |
0 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
0 |
0 |
1 |
|
0 |
1 |
0 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
1 |
1 |
0 |
|
0 |
1 |
0 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
0 |
0 |
|
1 |
1 |
1 |
|
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
1 |
1 |
0 |
|
0 |
0 |
1 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
0 |
0 |
|
0 |
0 |
0 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M1: |
0 |
1 |
1 |
1 |
1 |
0 |
|
0 |
0 |
0 |
|
1 |
0 |
|
1 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
|
0 |
0 |
Комментарий
Выдачаz1 = 1. Код60H Выдачаz2 = 1. Код50H Переход, еслих1 = 1 наадрес0001. Код28H Выдачаz3 = 1. Код48H Переход, еслих2 = 1 поадресу0111 (меткаМ1). Код1EH
Выдачаz4 = 1. Код44H Безусловныйпереход (БП) наначало. Код00H Выдачаz5 = 1. Код42H БПнаначало. Код00H
Особенность микропрограммы – возврат в исходное состояние после окончания работы.
128
3. Программная реализация ГСА на основе стандартной программы в микроконтроллере 80С51
Получим массив констант для стандартной программы ПЛА для реализации табл. 12.1 – без минимизации функций.
База входного слова имеет вид y2 y10000x2 x1 , база выходного слова y2 (t +1) y1(t +1)0z1z2 z3z4 z5 – первый ноль
|
y2 |
|
y1 |
|
x2 |
|
x1 |
|
y2(t + 1) |
|
y1(t + 1) |
|
|
Микрооперации |
|
|||||||
|
|
|
|
|
d2(t) |
|
d1(t) |
|
z1 |
|
|
z2 |
|
z3 |
|
z4 |
|
z5 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
0 |
|
0 |
|
~ |
|
~ |
|
0 |
|
1 |
|
1 |
|
|
0 |
|
0 |
|
0 |
|
0 |
Тогда первая маска для первой строки: 11000000В, т.е. в шестнадцатеричном коде будет в байтовом формате 0C0H. Вторая маска нулевая по всем позициям: 00000000В, т.е. 00H.
Третья маска 01010000В, т.е. 50H:
0 |
|
1 |
0 |
|
1 |
0 |
0 |
0 |
0 |
|
Аналогично определяем константы для других строк. Полу- |
||||||||
чим таблицу: |
|
|
|
|
|
|
|
||
TABL: |
|
|
|
|
|
|
|
||
|
db 0C0H,00H,50H, |
|
|
|
|
|
|||
|
db 0C0H,40H,0C8H, |
|
|
|
|
|
|||
|
db 0C1H,0C0H,84H, |
|
|
|
|
|
|||
|
db 0C1H,0C1H,0C8H, |
|
|
|
|
|
|||
|
db 0C2H,80H,02H, |
|
|
|
|
|
|||
|
db 0C2H,82H,01H, |
00H |
|
|
|
|
Используется программа ПЛА особенностью которой является то, что для имитации «синхронизации» используем нулевой бит порта Р3.
129
Автомат будет ждать «срабатывания» этого бита для перехода в новое состояние. Если не использовать этот приём, то не видна последовательность срабатывания переходов автомата.
Программа выглядит следующим образом:
P1 EQU 90H
P2 EQU 0A0H
Begin: MOV A, P1 |
|
; СчитываемизаносимваккумуляторА |
ANL A, #03h |
; Маскируем |
|
MOV R1, A |
|
; вR1 |
MOV A, R3 |
|
; ВнутреннеесостояниевR3 |
ORL A, R1 |
|
; Получаемполноевходноеслово |
MOV R1, A |
|
; ПолноевходноеслововR1 |
MOV R2,#0 |
|
; ОбнуляемR2 внемвыход |
MOV DPTR,#TABL ; Указательнамассивконстант |
||
CLR A |
; Очищаемаккумулятор |
|
MOVC A,@A+DPTR |
; ЗагружаемХ0(i) вА |
|
MOV R0,A |
|
; Х0(i) вR0 |
Next: MOV A, R0 |
|
; Х0(i) вA |
ANL A,R1 |
|
; МаскируемвходноесловоХ0(i) |
MOV R0,A |
|
; РезультатвR0 |
CLR A |
; Очищаемаккумулятор |
|
INC DPTR |
|
; Инкрементируемрегиструказатель |
MOVC A,@A+DPTR |
; ЗагружаемХD(i) вА |
|
XRL A,R0 |
|
; Сложениепомодулю2 спредыдущим |
|
; результатом |
|
INC DPTR |
|
; Инкрементрегистрауказателя |
JNZ Check |
|
; Переходеслиноль |
CLR A |
; Очищаемаккумулятор |
|
MOVC A,@A+DPTR |
; ЗагружаемZ(i) |
|
ORL A,R2 |
|
; Получаемвыходноеслово |
MOV R2,A |
|
; СохраняемрезультатвR2 |
Check:CLR A |
; Очищаемаккумулятор |
|
INC DPTR |
|
; Инкрементируемрегиструказателя |
MOVC A,@A+DPTR |
; Загружаем Х0(i+1) |
130