
Кодирование λ-классов
x=0 |
x=1 |
||||
λ-класс |
S |
y1y2 |
λ-класс |
S |
y3y4 |
λ1 |
(1) |
00 |
λ5 |
1 |
00 |
λ2 |
2 |
01 |
4 |
00 |
|
(3) |
01 |
(7) |
00 |
||
λ3 |
(4) |
10 |
λ6 |
(2) |
01 |
5 |
10 |
6 |
01 |
||
λ4 |
(6) |
11 |
λ7 |
3 |
10 |
7 |
11 |
(5) |
10 |
Шаг 3. Кодирование исходной таблицы переходов.
Используя табл. 2 кодируется исходная таблица переходов. Для осуществления кодирования в соответствующие клетки таблицы переходов проставляется код λ-класса, которому принадлежит рассматриваемое состояния.
Таблица 3
Кодирование строк таблицы переходов
S |
x=0 |
x=1 |
y1y2 |
y3y4 |
|
1 |
00 |
00 |
2 |
01 |
01 |
3 |
01 |
10 |
4 |
10 |
00 |
5 |
10 |
10 |
6 |
11 |
01 |
7 |
11 |
00 |
Шаг 4. Составление кодированной таблицы переходов.
Таблицу условно можно разделить на две части – содержащую переходы внутри основных состояний (они соответствуют исходной таблице переходов) и содержащую неосновные состояния (рис. 1). Таким образом, первые семь строк кодированной таблицы переходов соответствуют табл. 1, где десятичные номера состояний заменены на их коды из табл. 3.
Таблица 4
Кодированная таблица переходов
Разделяющие переменные |
y1y2 |
y3y4 |
|
S |
y1y2y3y4 |
x=0 |
x=1 |
1 |
0000 |
(0000) |
1100 |
2 |
0101 |
0110 |
(0101) |
3 |
0110 |
(0110) |
1010 |
4 |
1000 |
(1000) |
1100 |
5 |
1010 |
1000 |
(1010) |
6 |
1101 |
(1101) |
0101 |
7 |
1100 |
1101 |
(1100) |
8 |
0001 |
0000 |
0101 |
9 |
0010 |
0000 |
1010 |
10 |
0011 |
0000 |
0011 |
11 |
0100 |
0110 |
1100 |
12 |
0111 |
0110 |
0011 |
13 |
1001 |
1000 |
0101 |
14 |
1011 |
1000 |
0011 |
15 |
1110 |
1101 |
1010 |
16 |
1111 |
1101 |
0011 |
В табл. 4 состояния 1 – 7 основные, а состояния 8-16 – неосновные. Для заполнения первых семи строк таблицы (основных состояний) применяется следующее правило.
Правило получения основных состояний. Если в клетке таблицы переходов (см. табл. 1) на пересечении строки, соответствующей основному состоянию Si и столбца x проставлено некоторое состояния Sj, то в нее заносится код состояния Sj (i,j –индексы основных состояний) из табл. 3.
Например, в клетке (0, 0000) должен быть проставлен код состояния 1 – 0000; в клетке (1, 1101) – код состояния 2 – 0101, и т.д.
Неосновные состояния доопределяются с учетом обеспечения свойства 4. Решим данную задачу на примере. Пусть задан переход в столбце x=1 из состояния 3 в состояние 5 (01101010). Он может произойти двумя путями (рис. 2). При этом разделяющие переменные не меняют своих значений (y3y4=10). В клетках неосновных состояний (1, 0010) и (1, 1110) проставляется код устойчивого состояния 5 – 1010, у которого значения разделяющих переменных совпадают с их значениями в кодах неосновных состояний.
Рис. 2. Возможные переходы из состояния 1 в состояние 7
Процесс определения значения клетки (x, Si), соответствующей неосновному состоянию, зависит от значений разделяющих переменных в коде строки Si. В столбце x=0 разделяющими являются переменные y1y2, а в столбце x=1 – переменные y3y4.
Правило 1. Если в коде строки Si значения разделяющих переменных по столбцу x совпадают с их значением в коде одного из устойчивых состояний этого столбца, то в клетке (x, Si) записывается код этого устойчивого состояния.
Правило 2. В оставшихся клетках (x, Si) проставляется произвольный код, т.к. в данные состояния асинхронный автомат никогда не попадает; будем записывать код, у которого разделяющие переменные имеют то же значение, что и в коде строки Si, а остальные переменные раны нулю.
К примеру, в клетке (1, 14) проставляется значение 0011.
Выполнение правил 1 и 2 позволяет обеспечить свойство 4 и максимально упростить схемы асинхронного автомата.
Шаг 5. Получение функций включения внутренних элементов памяти.
Следующим этапом синтеза асинхронного автомата является получение функций включения внутренних элементов. Для этого воспользуемся матричным представлением функций Y1, Y2, Y3, Y4 в виде карт Карно (рис. 3). Карты Карно составляются для каждого из столбцов x=0 и x=1: карты, записанные в левой части рис. 3, соответствуют первому, второму, третьему и четвертому столбцам переменных Y1, Y2, Y3, Y4 при x=0; карты, записанные в правой части рис. 3 – первому, второму, третьему и четвертому столбцам переменных Y1, Y2, Y3, Y4 при x=1.
Рис. 3. Минимизация функций включения внутренних элементов памяти
Поясним принцип расстановки единиц в карты Карно на примере переменной Y1. В карте Карно проставляются единицы в клетках, соответствующих разрешенным наборам функции Y1 – наборам, на которых Y1=1. Для чего выбираются наборы <y1y2y3y4>, соответственно которым в первом столбце при x=0 и при x=1 проставлены единицы. Для Y1 при x=0 – это наборы 1000, 1010, 1101, 1100, 1001, 1011, 1110, 1111; при x=1 – 0000, 0110, 1000, 1010, 1100, 0010, 0100, 1110.
По аналогии поступают со всеми остальными внутренними переменными.
Проводя минимизацию [2] функций включения внутренних элементов, получаем следующие выражения:
Шаг 6. Получение и минимизация выходной функции.
Для определения выходной функции в исходной таблице переходов (табл. 1) выбираются все клетки, соответствующие устойчивым состояниями, значения выхода в которых z=1. Выписывается дизъюнктивная нормальная форма [1] из значений разделяющих переменных, которыми закодировано данное устойчивое состояние. Проводя вычисления по столбцам таблицы переходов, получаем:
Шаг 7. Синтез схемы асинхронного автомата на контактах.
По полученным на шаге 5 функциям включения внутренних элементов памяти Y1 – Y4, а также выходной функции z строится релейно-контактная схема асинхронного автомата (рис. 4).
Рис. 4. Схема асинхронного автомата на контактах