- •1. Общие сведения о цифровых автоматах. Модель Глушкова. Синтез операционных автоматов.
- •2. Пример синтеза операционного автомата для выполнения косвенного умножения беззнаковых чисел
- •4. Пример синтеза управляющего автомата с жесткой логикой (УАЖЛ) для алгоритма умножения беззнаковых чисел в прямом коде
- •5. Контрольные вопросы
- •1.1 Краткие сведения о регулярных выражениях (РВ). Диалекты РВ.
- •1.2 Применение РВ в программировании
- •2. Пример составления и использования регулярного выражения (можно пропустить и перейти к п. 3)
- •2.1 Пример формирования регулярного выражения
- •2.2 Пример работы с регулярным выражением для контроля вводимых пользователем IP адресов.
- •3.1 Преобразование РВ в НКА с ε – переходами
- •3.3 Получение ДКА по НКА без ε-переходов
- •3.4 Минимизация ДКА
- •3.5 Получение РВ по КА
- •3.6 Программная реализация ДКА-распознавателя
Далее рассмотрим пример синтеза УАЖЛ по модели автомата Мура для рассмотренного выше алгоритма.
4. Пример синтеза управляющего автомата с жесткой логикой (УАЖЛ) для алгоритма умножения беззнаковых чисел в прямом коде
Рассмотрим синтез управляющего автомата с жесткой логикой для ЦА, реализующего алгоритм косвенного умножения модулей (беззнаковых чисел).
Схема алгоритма приведена на рис. 7. (дополнительно к рассмотренному выше алгоритму в этом алгоритме введен цикл ожидания начала работы и соответсвующий управляющий сигнал Start).
Будем синтезировать автомат Мура на базе D-триггеров. Сначала обозначим состояния на алгоритме и составим отмеченную таблицу переходов (ОТП) для автомата Мура (см. Таблицу 1)
Done
0
X0 - Start
1
Y0 - Load
0
X1 - Bn
1
Y1 - Add
Y2 - ShiftR
0X2 -Zero
1
Done
Рис. 7
b0 |
|
|
|
|
|
|
|
|
Таблица 1 |
|
|
||
|
|
|
|
|
|
|
|
ВС\ПС |
b0 |
b1 |
b2 |
b3 |
|
|
|
|
|
|
|
|
b1 |
Start |
b1 |
- |
- |
- |
|
|
!Start |
b0 |
- |
- |
- |
|
|
|
|
|
|
|
|
|
!X1!X2 |
- |
b3 |
b3 |
b3 |
|
|
|
|
|
|
|
|
|
!X1X2 |
- |
b3 |
b3 |
b2 |
|
|
|
|
|
|
|
|
b2 |
X1!X2 |
- |
b2 |
b3 |
b0 |
|
|
|
|
|
|
||
X1X2 |
- |
b2 |
b3 |
b0 |
||
|
||||||
|
|
|
|
|
|
Теперь можно приступить собственно к синтезу УАЖЛ.
b3
2.1 Закодируем состояния автомата с помощью обычных двоичных кодов :
b0 |
Таблица 2 |
|
Состояние |
Код |
|
|
b0 |
00 |
|
|
b1 |
01 |
|
|
b2 |
10 |
|
|
b3 |
11 |
|
|
2.2 Для заданного типа триггеров (D-триггеры) составим его таблицу переходов как элементарного автомата :
Таблица 3
Переход |
D |
|
|
0 → 0 |
0 |
|
|
0 → 1 |
1 |
|
|
1 → 0 |
0 |
|
|
1 → 1 |
1 |
|
|
Для других типов тригеров соответствующие таблицы переходов (* - любой
сигнал):
Переход |
T |
RS |
JK |
|
|
|
|
0 → 0 |
0 |
*0 |
0* |
|
|
|
|
0 → 1 |
1 |
01 |
1* |
|
|
|
|
1 → 0 |
0 |
10 |
*1 |
|
|
|
|
1 → 1 |
1 |
0* |
*0 |
|
|
|
|
2.3 Составим закодированную таблицу переходов (выходные сигналы в таблице не отмечаем, так как для автомата Мура их можно получить с помощью дешифратора кода состояния).
Таблица 4
Состояние |
Вх. |
Управление триггерами |
|||
|
|
сигнал |
|
|
|
Текущ. |
След. |
D1 |
D0 |
||
|
|||||
|
|
|
|
|
|
Q1 Q0 |
Q1 Q0 |
|
|
|
|
|
|
|
|
|
|
00 |
00 |
!Start |
0 |
0 |
|
|
|
|
|
|
|
00 |
01 |
Start |
0 |
1 |
|
|
|
|
|
|
|
01 |
10 |
Bn |
1 |
0 |
|
|
|
|
|
|
|
01 |
11 |
!Bn |
1 |
1 |
|
|
|
|
|
|
|
10 |
11 |
1 |
1 |
1 |
|
|
|
|
|
|
|
11 |
10 |
!Zero Bn |
1 |
0 |
|
|
|
|
|
|
|
11 |
11 |
!Zero !Bn |
1 |
1 |
|
|
|
|
|
|
|
11 |
00 |
Zero |
0 |
0 |
|
|
|
|
|
|
2.4 По закодированной таблице составляем логические функции для сигналов управления триггерами D1 и D0 (выбираем в данном случае нули из столбцов D1 и D0 соответственно и записываем для каждого нуля коньюнкцию кода текущего состояния и комбинации входных сигналов, объединяем коньюнкции дизьюнкциями, затем берем отрицание полученной функции; все отрицания записываем с помощью «!») :
D1 = !(!Q1!Q0 + Q1Q0Zero)
D0 = !(!Q1!Q0!Start + Q1Q0Zero + !Q1Q0Bn + Q1Q0!ZeroBn) = !(!Q1!Q0!Start + Q1Q0Zero + Q1Q0Bn + !Q1Q0Bn) = !(!Q1!Q0!Start + Q1Q0Zero + Q0Bn)
2.5 По полученным функциям составляем схему устройства в соответствии с его структурной схемой (рис. 8, схема составлена в системе Quartus II, поэтому в ней использованы обозначения ANSI, в ваших схемах используйте обозначения ЕСКД – прямоугольные – см. приложение к основным лекциям)
|
|
Q1 |
|
AND3 |
Q1Q0Zero |
|
|
|
|
|
Zero |
|
inst6 |
|
|
|
|
|
|
|
Q0 |
|
|
|
|
|
Start |
INPUT |
|
|
!Q1!Q0 |
|
NOR2 |
DFF |
|
|
VCC |
|
|
|
|
|
||
|
|
Q0 |
NOT |
AND2 |
|
|
D PRNQ |
Q1 |
|
|
|
|
|
||||
|
|
|
inst1 |
|
|
inst7 |
|
|
|
|
|
|
inst9 |
|
|
|
|
Bn |
INPUT |
Q1 |
NOT |
|
|
CLRN |
|
|
|
|
|
|
|||||
|
VCC |
|
|
|
inst5 |
|
||
|
|
inst2 |
|
|
|
Q[1..0] |
||
|
|
|
|
|
|
|
||
Zero |
INPUT |
|
|
|
!Q1!Q0!Start |
|
|
|
|
VCC |
|
|
|
|
|
|
|
|
|
|
|
|
AND2 |
NOR3 |
DFF |
Q0 |
|
|
Start |
NOT |
|
|
|
D PRNQ |
|
|
|
|
|
|
|
|||
|
|
|
inst |
|
inst10 |
inst8 |
|
|
|
|
|
|
|
|
|
CLRN |
|
|
|
Q0 |
|
AND2 |
|
|
inst4 |
|
|
|
Bn |
|
inst11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Clk |
INPUT |
|
|
|
|
|
|
|
|
VCC |
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис.8 |
|
|
lpm_decode0 |
|
|
|
|
eq0 |
OUTPUT |
Done |
data[1..0] |
eq1 |
OUTPUT |
Load |
eq2 |
OUTPUT |
Add |
|
|
eq3 |
OUTPUT |
ShiftR |
inst19 |
|
|
|
Теперь мы можем создать схему ЦА для умножения из двух частей – ОА и УА -
см. рис. 9 :
Mul_OA
Bin[3..0] |
|
|
|
|
VCC |
|
|
|
|
|
|
|
|
|
|
Bin[3..0] P_low[3..0] |
|
|
|
|
|
P_low[3..0] |
||||||
Ain[3..0] |
|
|
|
|
INPUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
Ain[3..0] |
P_hi[3..0] |
|
|
|
OUTPUT |
|
P_hi[3..0] |
||
|
|
|
|
VCC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
INPUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OUTPUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clk |
|
|
|
|
INPUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load |
Zero |
|
|
|
|
|
|
|
|
|
|
|
|
VCC |
|
|
|
Mult_UA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Start |
|
|
|
|
INPUT |
|
|
|
|
|
|
|
|
|
|
|
Clock |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
VCC |
|
|
|
|
Start |
Done |
|
|
|
|
|
|
|
Add |
|
|
|
|
|
|
|
||
|
|
|
|
|
P_low[0] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ShiftR |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
Bn |
Load |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Zero |
Add |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clk |
ShiftR |
|
|
|
|
|
|
inst |
|
|
|
|
OUTPUT |
|
Done |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inst1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 9
Отличие в синтезе автомата Мили заключается в том, что в соответствии с его законом функционирования и структурной схемой необходимо синтезировать не только логические функции для переключения триггеров, но и логические функции формирования выходных сигналов Y в явном виде (в таблицу 4 вводятся дополнительные столбцы, соответствующие каждому Yi и отмечаются единицами строки, то есть переходы, при которых формируется такой сигнал). В автомате Мура выходные сигналы формируются на обычном дешифраторе (см. рис. 6).
5.Контрольные вопросы
1.Опишите модель дикретного преобразователя Глушкова.
2.Каково назначение Операционного Автомата (ОА) ?
3.Роль информационных и управляющих сигналов.
4.Перечислите этапы синтеза ОА процедурного типа канонической структуры.
5.Проведите синтез ОА для выполнения умножения (используйте упрощенный алгоритм косвенного умножения беззнаковых чисел).
6.Приведите пример умножения чисел по алгоритму косвенного умножения.
7.Опишите основные варианты (схемы) косвенного умножения.
8.Постройте временную диаграмму ОА для умножения. Поясните ее.
9.Синтезируйте алгоритм выполнения арифметической операции по вариантам.
10.Синтезируйте схему ОА по вашему алгоритму.
11.Каково назначение Управляющего Автомата (УА) ?
12.Роль информационных и управляющих сигналов.
13.Типы УА.
14.Перечислите этапы синтеза УА с жесткой логикой.
15.Опишите основные триггеры как элементарные конечные автоматы.
16.Каковы особенности синтеза УАЖЛ на разных типах триггеров ?
17.Приведите структурные схемы автоматов Мили и Мура. В чем их отличия ?
18.Опишите модели абстрактных автоматов Мили и Мура.
19.Какие формы описания абстрактных конечных автоматов Вы знаете ?
20.Постройте таблицы переходов / выходов и графы автоматов по схеме алгоритма.
21.Проведите синтез УА для реализации алгоритма умножения (используйте упрощенный алгоритм косвенного умножения беззнаковых чисел) как автомат Мили / Мура.
22.Постройте временную диаграмму УА для умножения. Поясните ее.
23.Синтезируйте схему УАЖЛ для вашего алгоритма по вариантам.