Второй принцип кодирования соответствует противоположному подходу и ориентирован на возможность получения значительных упрощений ФАЛ в результате минимизации. Для кодирования выходных сигналов с максимальным количеством ссылок в таблице выходов используется код с максимальным количеством единиц, а для кодирования следующих по количеству ссылок в таблице выходных сигналов использовать коды с уменьшающимся количеством единиц в кодовых комбинациях. Этот принцип также без оговорок применим для кодирования состояний блока памяти на D триггерах для случая применения элементной базы, требующей минимизации для своей реализации. Минимальный по материальным затратам вариант кодирования выбирается из конечных результатов при использовании всевозможных вариантов кодирования.
Таблица состояний и выходов нормализованного автомата
Вх/сост | G1 | G2 | G3 | G4 | G5 | G6 | G7 | G8 | G9 | G10 | G11 | G12 | G13 |
0 | G2/0 | G3/0 | G4/0 | G5/0 | G10/0 | G11/0 | G12/0 | G13/0 | G16/0 | G17/0 | G18/0 | G20/0 | G21/0 |
1 | G6/0 | G7/0 | G8/0 | G9/0 | -/- | G14/0 | -/- | G15/0 | -/- | -/- | -/- | G19/0 | -/- |
Вх/сост | G14 | G15 | G16 | G17 | G18 | G19 | G20 | G21 | G23 | G24 | G25 | G26 | |
0 | G23/0 | G26/0 | G22/0 | G1/0 | G13/0 | G16/0 | G10/1 | G17/1 | G25/1 | G26/1 | G21/0 | G22/1 | |
1 | -/- | -/- | -/- | -/- | G15/1 | -/- | -/- | -/- | G24/1 | -/- | -/- | -/- |
Закодируем состояния тремя разрядами:
Состояние/код | Q4Q3Q2Q1Q0 |
G1 | 00000 |
G2 | 00001 |
G3 | 00010 |
G4 | 00011 |
G5 | 00100 |
G6 | 00101 |
G7 | 00110 |
G8 | 00111 |
G9 | 01000 |
G10 | 01001 |
G11 | 01010 |
G12 | 01011 |
G13 | 01100 |
G14 | 01101 |
G15 | 01110 |
G16 | 01111 |
G17 | 10000 |
G18 | 10001 |
G19 | 10010 |
G20 | 10011 |
G21 | 10100 |
G22 | 10101 |
G23 | 10110 |
G24 | 10111 |
G25 | 11000 |
G26 | 11001 |
Q Q* | D |
0 0 | 0 |
0 1 | 1 |
1 0 | 2 |
1 1 | 1 |
Таблица переходов D-триггера:
Для случая D-триггера кодированная таблица возбуждения блока памяти совпадает с кодированной таблицей переходов:
Состояние/код | Q4Q3Q2Q1Q0 | 0 | 1 |
D4D3D2D1D0 | D4D3D2D1D0 | ||
G1 | 00000 | 00001 | 00101 |
G2 | 00001 | 00010 | 00110 |
G3 | 00010 | 00011 | 00111 |
G4 | 00011 | 00100 | 01000 |
G5 | 00100 | 01001 | 00000 |
G6 | 00101 | 01010 | 01101 |
G7 | 00110 | 01011 | 00000 |
G8 | 00111 | 01100 | 01110 |
G9 | 01000 | 01111 | 00000 |
G10 | 01001 | 10000 | 00000 |
G11 | 01010 | 10001 | 00000 |
G12 | 01011 | 10011 | 10010 |
G13 | 01100 | 10100 | 00000 |
G14 | 01101 | 10110 | 00000 |
G15 | 01110 | 11001 | 00000 |
G16 | 01111 | 10101 | 00000 |
G17 | 10000 | 00000 | 00000 |
G18 | 10001 | 01100 | 01110 |
G19 | 10010 | 01111 | 00000 |
G20 | 10011 | 01001 | 00000 |
G21 | 10100 | 10000 | 00000 |
G22 | 10101 | 00000 | 00000 |
G23 | 10110 | 11000 | 10111 |
G24 | 10111 | 11001 | 00000 |
G25 | 11000 | 10100 | 00000 |
G26 | 11001 | 10101 | 00000 |
Выполним конкатенацию кодов входных сигналов и кодов состояний по порядку следования переменных xQ2Q1Q0 и заполним таблицу истинности для функций выхода и возбуждений.
Таблица истинности функций выходов и входов:
XQ4Q3Q2Q1Q0 | D4D3D2D1D0 | Y |
000000 | 00001 | 0 |
000001 | 00010 | 0 |
000010 | 00011 | 0 |
000011 | 00100 | 0 |
000100 | 01001 | 0 |
000101 | 01010 | 0 |
000110 | 01011 | 0 |
000111 | 01100 | 0 |
001000 | 01111 | 0 |
001001 | 10000 | 0 |
001010 | 10001 | 0 |
001011 | 10011 | 0 |
001100 | 10100 | 0 |
001101 | 10110 | 0 |
001110 | 11001 | 0 |
001111 | 10101 | 0 |
010000 | 00000 | 0 |
010001 | 01100 | 1 |
010010 | 01111 | 1 |
010011 | 01001 | 1 |
010100 | 10000 | 1 |
010101 | 00000 | 1 |
010110 | 11000 | 1 |
010111 | 11001 | 1 |
011000 | 10100 | 1 |
011001 | 10101 | 1 |
100000 | 00101 | 0 |
100001 | 00110 | 0 |
100010 | 00111 | 0 |
100011 | 01000 | 0 |
100100 | 00000 | 0 |
100101 | 01101 | 0 |
100110 | 00000 | 0 |
100111 | 01110 | 0 |
101000 | 00000 | 0 |
101001 | 00000 | 0 |
101010 | 00000 | 0 |
101011 | 10010 | 0 |
101100 | 00000 | 0 |
101101 | 00000 | 0 |
101110 | 00000 | 0 |
101111 | 00000 | 0 |
110000 | 00000 | 0 |
110001 | 01110 | 1 |
110010 | 00000 | 1 |
110011 | 00000 | 1 |
110100 | 00000 | 1 |
110101 | 00000 | 1 |
110110 | 10111 | 1 |
1101111 | 00000 | 1 |
111000 | 00000 | 1 |
111001 | 00000 | 1 |
Поскольку числовая СДНФ форма ФАЛ имеет самую компактную запись и позволяет при необходимости перейти к любому другому описанию этой функции, по таблице истинности функций выходов и входов запишем именно в числовой форме функции выходов Y, D1, D2, D3, D4, D5от
xQ4Q3Q2Q1Q0.
Y = 010001v010010v010011v010100v010101v010110v010111v011000v011001v
v110001v110010v110011v110100v110101v110110v110111v111000v111001
D4 = 001001v001010v001011v001100v001101v001110v001111v010100v
v010110v010111v011000v011001v101011v110110
D3 = 000100v000101v000110v000111v001000v001110v010001v010010v
v010011v010110v010111v100011v100101v100111v110001
D2 = 000011v000111v001000v001100v001101v001111v010001v010010v
v011000v011001v100000v100001v100010v100101v100111v110001v110110
D1 = 000001v000010v000101v000110v001000v001011v001101v010010v
V100001v100010v100111v101011v110001v110110
D0= 000000v000010v000100v000110v001000v001010v001011v001110v
V001111v010010v010011v010111v011001v100000v100010v100101v110110
Для дальнейшей работы необходимо минимизировать полученные выходные функции автомата.
Минимизирующие карты
Одним из видов представления ФАЛ от небольшого числа переменных (как правило, не больше 5) являются диаграммы Карно или Вейча, которые строятся на развёртках многомерных кубов на плоскость. При этом вершины куба представляются клетками карты, координаты которых совпадают с координатами соответствующих вершин куба. Карта заполняется путём пометки кодов вершин, соответствующих наборам, на которых ФАЛ равна единице. Другими символами помечаются коды наборов, на которых ФАЛ не определена. Таким образом, диаграмма на карте Карно или Вейча соответствует представлению ФАЛ в СДНФ. Если строится карта Карно для нечётного количества переменных в наборе, то на расстоянии единицы слева от исходной карты для чётного количества переменных изображается повёрнутая на 180° вокруг оси, проходящей между исходной и новой картами, новая карта той же размерности. После этого в старшем разряде двоичных кодов наборов исходной карты добавляются незначащие нули, а в старшем разряде новой карты добавляются единицы. Эти две карты объединяются в одну большей размерности.
Если строится карта Карно для чётного количества переменных в наборе, то на расстоянии единицы снизу от исходной карты для нечётного количества переменных изображается повёрнутая на 180° вокруг оси, проходящей между исходной и новой картами, новая карта той же размерности. После этого в старшем разряде двоичных кодов наборов исходной карты добавляются незначащие нули, а в старшем разряде новой карты добавляются единицы. Эти две карты объединяются в одну большей размерности.