Структурный синтез конечных автоматов.
Как отмечалось выше, синтез конечного автомата сводится к его проектированию из более простых элементарных автоматов. Отсюда следует, что для синтеза автомата требуется определить тип элементарного автомата и его функционально полную систему логических элементов (если они не заданны в задании на проектирование).
Число элементарных автоматов К, которое потребуется для синтеза заданного автомата с n внутренними состояниями, определяется как ближайшее целое число по формуле К= log2n .
В процессе кодирования каждое внутреннее состояние заданного автомата отождествляется с набором внутренних состояний элементарных автоматов s1,s2,…,sk . Так как состояние каждого элементарного автомата кодируется двоичным кодом, то каждому внутреннему состоянию заданного автомата ставится в соответствие к-разрядное двоичное число.
По некоторым соображениям (например, устойчивость работы) число разрядов К внутренних состояний автомата может быть увеличено.
Отметим, что в связи с тем, что заданный автомат реализуется на элементарных автоматах, которые задаются как автоматы Мура, то функция переходов заданного автомата совпадает с его внутренним состоянием. На практике способ кодирования внутренних состояний часто бывает заданным.
Пример. Синтезировать автомат, который при подаче на него входного сигнала x=0, меняет свое состояние в последовательности 0,1,3,2,0,1…, а при подаче сигнала x=1, меняет свое состояние в последовательности 0,2,1,3,0,1….
Число состояний автомата n=4. Определим число элементарных автоматов (триггеров) как К= log24 =2.
Выберем для синтеза автомата триггеры типа D, внутренние состояния будем кодировать прямым двоичным кодом, а в качестве логических элементов используем основной базис (И, ИЛИ, НЕ).
Составим таблицу переходов заданного автомата (табл. 3.24).
Табл. 3.24
X(t) | Q1(t) | Q2(t) | Q1(t+1) | Q2(t+1) | D1(t) | D2(t) |
Запишем функции выходов для триггеров, на которых реализуется автомат. Эти функции часто называют функциями возбуждения триггеров.
D1(t+1)=x(t)Q1(t)Q2(t)+x(t)Q1(t)Q2(t)+x(t)Q1(t)Q2(t).
D2(t+1)=x(t)Q’1(t)Q2(t)+x’(t)Q1(t)Q2(t)+x(t)Q1(t)Q2(t)+x(t)Q1(t)Q2(t)
Минимизируем полученные функции методом карт Вейча (табл 3.25)
Табл 3.25
Q1(t) D1 Q1(t) D2
x(t) | x(t) | |||||||||
Q2(t) Q2(t)
a б
Функция возбуждения для первого триггера запишется в виде D1(t)=x(t)Q’1(t)+x’(t)Q2(t), а для второго триггера D2(t)=x(t)Q1(t)Q’2(t)+Q’1(t)Q2(t)+x’(t)Q’1(t).
На рис. 3.6. Приведена схема, реализующая заданный автомат.
Рис.3.6. Схема, реализующая автомат на D триггере.
Пример. Синтезировать автомат из предыдущего примера, но использовать триггеры типа j-k и элементы И-НЕ.
Число триггеров для синтеза автомата, как и в предыдущем примере равно двум.
Составим таблицу переходов заданного автомата (табл.3.25)
X(t) | Q1(t) | Q2(t) | Q1(t+1) | Q2(t+1) | J1(t) | K1(t) | J2(t) | K2(t) |
b1 | b2 | |||||||
b2 | b4 | |||||||
b3 | b1 | |||||||
b4 | b3 | |||||||
b2 | b1 | |||||||
b2 | b4 | |||||||
b3 | b3 | |||||||
b3 | b2 |
Составим функцию возбуждения по каждому из входов триггеров.
J1(t)=x’(t)Q’1(t)Q2(t)+x(t)Q’1(t)Q’2(t)+x(t)Q’1(t)Q2(t);
Наборы значения элементов на которых функция не определена
<x(t)Q1(t)Q2(t)= b3; x(t)Q1(t)Q2(t)= b4; x(t)Q1(t)Q2(t)= b3; x(t)Q1(t)Q2(t)= b3>
K1(t)=x(t)Q1(t)Q2(t)+x(t)Q1(t)Q2(t)+ x(t)Q1(t)Q2(t); наборы значений аргументов, на которых функция не определена
<x(t)Q1(t)Q2(t)= b1; x(t)Q1(t)Q2(t)= b2; x(t)Q1(t)Q2(t)= b2; x(t)Q1(t)Q2(t)= b2>
J2(t)=x(t)Q1(t)Q2(t)+x(t)Q1(t)Q2(t); наборы значений элементов, на которых функция не определена
Таблица 3. 25. <x(t)Q1(t)Q2(t)= b4; x(t)Q1(t)Q2(t); x(t)Q1(t)Q2(t)= b4; x(t)Q1(t)Q2(t)= b3>
K2(t)=x(t)Q1(t)Q2(t)+ x(t)Q1(t)Q2(t); функция не определена на наборе значений аргументов
<x(t)Q1(t)Q2(t)= b2; x(t)Q1(t)Q2(t)= b1; x(t)Q1(t)Q2(t)= b1; x(t)Q1(t)Q2(t)= b2>
Составим карты Вейча для каждой функции возбеждения триггеров (табл.3.26)
Q1(t) Q1(t) Q1(t)
x(t) | b3 | b3 | x(t) | b2 | b2 | x(t) | b3 | b4 | ||||||
b3 | b4 | b2 | b1 | b4 |
Q2(t) Q2(t) Q2(t)
a (J1(t)) б (K1(t)) в (J2(t))
Q1(t)
x(t) | b2 | b1 | ||
b2 | b2 |
Q2(t)
г (K2(t))
Выразим функцию возбеждения триггеров в базисе функции Шеффера (И-НЕ)
J1(t)=x(t)+Q2(t)=[x(t)∙x(t)+Q2(t)∙Q2(t)]={[x(t)|x(t)]|[Q2(t)|Q2(t)]
K1(t)=x(t)+Q2(t)=[x(t)∙x(t)+Q2(t)∙Q2(t)]={[x(t)|x(t)]|[Q2(t)|Q2(t)]}
J2(t)=x(t)Q1(t)+x(t)Q1(t)=[x(t)Q1(t)]+[x(t)Q1(t)]={[x(t)|Q1(t)]|[x(t)|Q1(t)]}
K2(t)=Q1(t)Q2(t)=[Q1(t)|Q2(t)]|[Q1(t)|Q2(t)]
На рисунке 3.7. приведена схема заданного автомата, реализованного на триггерах типа j-k и элементах И-НЕ.
Рис.3.7. Автомат на триггерах j-k и элементах И-НЕ.
Пример. Синтезировать реверсивный регистр, осуществляющий сдвиг хранящейся в нем информации на один разряд влево и вправо. Синтез осуществить на триггерах типа D.
Так как необходимо выполнить две микрооперации – сдвиг информации влево и вправо, то потребуется одна шина управления х. пусть при х=0 происходит сдвиг информации вправо, а при х=1 – влево.
Поскольку структура регистра регулярна, т.е. все разряды регистра идентичны, то функции возбуждения определим только для одного i-го разряда, а функции возбуждения для других триггеров регистра будут аналогичны для всех i=(1,n), где n – число разрядов регистра.
Составим таблицу переходов для i-го разряда регистра (табл.3.27). Отметим, что при х=0, выход триггера Qi(t+1)=Qi+1(t), а при х=1, Qi(t+1)=Qi-1(t).
Табл. 3.27
x(t) | Qi+1(t) | Qi(t) | Qi-1(t) | Qi(t+1) | Di(t) | ||
По таблице переходов запишем функцию возбуждения входов для i-го разряда регистра Di(t).
Di(t)=x(t)Qi+1(t)Qi(t)Qi-1(t)+x(t)Qi+1(t)Qi(t)Qi-1(t)+ x(t)Qi+1(t)Qi(t)Qi-1(t)+ +x(t)Qi+1(t)Qi(t)Qi-1(t)+ x(t)Qi+1(t)Qi(t)Qi-1(t)+ x(t)Qi+1(t)Qi(t)Qi-1(t)+ x(t)Qi+1(t)Qi(t)Qi-1(t)+
+ x(t)Qi+1(t)Qi(t)Qi-1(t)
Минимизируем полученную функцию возбуждения входов методом карт Вейча (Рис3.7)
Qi+1(t) | В результате минимизации функция запишется в виде Di(t)=x(t)Qi-1(t)+x(t)Qi+1(t) | ||||||
x(t) | |||||||
Qi(t) | |||||||
Qi-1(t) |
Рис.3.7. Карта Вейча для минимизации функции Di(t)
Отметим, что в схеме должны присутствовать входы синхронизации (с), установки триггеров в состоянии единица (S), установки триггеров в ноль (R) и информационные входы (D).
При записе в регистр все триггеры устанавливаются в ноль, путем подачи соответствующего сигнала на входы R, а затем на входы S подается информационное слово.