Хороший материал для К.Р. и так почитать
.pdfГ л а в а 21
Кодирование состояний синхронного автомата
21.1.Задача кодирования состояний
Вабстрактной модели автомата M = (A, B, Q, Ψ, Φ) элементами множеств А, В и Q являются абстрактные символы. Как было сказано выше, для реализации заданного поведения в виде логической сети надо перейти от
функций Φ и Ψ к системе булевых функций, т. е. от абстрактной модели автомата надо перейти к структурной модели. При этом переменные а, b и q заменяются векторными переменными:
a→ x = (x1, x2, … , xn);
b→ y = (y1, y2, … , ym);
q→ z = (z1, z2, … , zk).
Различным значениям многозначных переменных а, b и q должны быть поставлены в соответствие различные значения векторных переменных х, у и z. Векторы х, у и z показывают структуру абстрактных символов а и b и состояния q. Элементами этой структуры являются соответственно двоичные сигналы и состояния двоичных элементов памяти. Функции Φ и Ψ преобразуются в векторные функции ψ(x, z) = z+ и ϕ(x, z) = у, а те, в свою очередь, – в систему булевых функций, число которых m + k:
yi = ϕi(x1, x2, … , xn, z1, z2, … , zk), i = 1, 2, … , m; zj+ = ψi(x1, x2, … , xn, z1, z2, … , zk), j = 1, 2, … , k.
Числа п, т и k должны удовлетворять соотношениям α ≤ 2п, β ≤ 2т и γ ≤ 2k, где α, β и γ – числа абстрактных входных и выходных символов и состояний
соответственно. Минимальные значения |
этих |
величин |
определяются как |
|
п = log2 α , т = log2 β и |
k = log2 γ , где |
а |
означает |
минимальное целое |
число, не меньшее а. |
|
|
|
|
Векторы, приписываемые различным абстрактным символам и состояниям в случае синхронного автомата, могут быть выбраны произвольно с одним лишь ограничением на число компонент, указанным выше, но если принимать во внимание простоту комбинационной схемы, реализующей заданное поведение, то различные варианты кодирования неравнозначны. Часто на практике используется модель автомата с абстрактным состоянием, где векторы х и у заданы и остается только закодировать многозначную переменную q. В дальнейшем будем считать, что структура входных и выходных сигналов задана, т. е. векторы х и у заданы, и будем рассматривать только кодирование
161
состояний, т. е. замену значений многозначной переменной q значениями вектора z.
Чтобы показать неравнозначность выбора вариантов кодирования, приведем следующий простой пример из работы [21]. Пусть табл. 21.1 представляет собой таблицу переходов и выходов заданного автомата, а табл. 21.2 – два варианта кодирования его состояний.
|
Таблица 21.1 |
|
|
Таблица 21.2 |
|||
Таблица переходов и выходов |
Варианты кодирования состояний |
||||||
q1 |
0 |
1 |
|
q1 |
Вариант 1 |
Вариант 2 |
|
q1, 0 |
q2, 0 |
|
1 1 |
0 0 |
|
||
q2 |
q1, 0 |
q3, 1 |
|
q2 |
0 0 |
1 0 |
|
q3 |
q4, 1 |
q1, 0 |
|
q3 |
1 0 |
1 1 |
|
q4 |
q1, 1 |
q1, 1 |
|
q4 |
0 1 |
0 1 |
|
Соответствующие системы булевых функций представлены матрицами U1, V1 для варианта 1 и U2, V2 для варианта 2:
|
x z1 |
z2 |
|
|
z+ |
z+ |
y |
|
|
x z1 |
z2 |
|
|
z+ |
z+ |
y |
||||||
|
0 1 1 |
|
|
1 |
2 |
|
|
|
0 0 0 |
|
|
1 |
2 |
|
||||||||
|
|
|
1 1 0 |
|
|
|
|
0 0 0 |
||||||||||||||
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
1 |
1 |
|
|
0 |
0 |
|
|
1 |
0 |
|
|
1 |
0 |
||||||||
|
|
0 |
0 |
0 |
|
|
|
|
1 |
|
|
|
|
0 |
1 |
0 |
|
|
|
|
0 |
|
U1 = |
|
|
0 |
|
|
, V1 |
= |
1 |
0 |
; |
U1 = |
|
|
1 |
|
|
, V1 |
= |
0 |
0 |
||
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 . |
|||||||||||||
|
0 1 |
0 |
|
|
0 |
1 |
1 |
|
|
0 1 |
1 |
|
|
0 |
1 |
1 |
||||||
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
0 |
|
|
1 |
0 |
|
|
1 |
0 |
|
|
1 |
1 |
|
|
0 |
0 |
||||||||
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
0 |
1 |
|
|
1 |
1 |
|
|
0 |
1 |
|
|
0 |
1 |
||||||||
|
1 |
0 |
1 |
|
|
1 |
1 |
1 |
|
|
1 |
0 |
1 |
|
|
0 |
0 |
1 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
После минимизации данных систем булевых функций получим следующие системы ДНФ в матричном представлении:
|
x |
z1 |
z2 |
|
z+ |
z+ |
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 1 0 |
|
1 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
0 |
1 |
|
|
x z1 z2 |
|
|
z+ |
z+ y |
||||||||||
|
|
1 |
|
|
|
|
|
|
|
|
1 |
− 0 |
|
|
1 |
2 |
||||
|
|
1 |
|
|
|
|
|
1 0 |
0 |
|||||||||||
|
1 |
0 |
|
1 |
0 |
|
|
|
|
|||||||||||
U1 = |
0 |
0 |
− |
, V1 = |
1 |
1 |
0 |
; |
U1 = |
|
|
|
|
|
, V1 |
= |
|
0 |
|
|
− |
0 1 |
0 |
1 . |
|||||||||||||||||
|
|
0 |
|
|
|
0 |
|
|
|
|
1 |
1 |
0 |
|
|
− |
1 |
1 |
||
|
1 |
− |
|
1 |
1 |
|
|
|
|
|||||||||||
|
0 |
− |
1 |
|
|
|
|
|
|
|
|
0 |
1 |
1 |
|
|
|
|
|
|
|
|
1 |
0 |
|
|
|
|
|
|
0 |
1 |
1 |
||||||||
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|||||||
|
0 |
|
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
− |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162
Отсюда ясно видно, что, выбрав вариант 2 для кодов состояний заданного автомата, получим более простую систему ДНФ.
Можно подсчитать, сколько всего различных и неравнозначных вариантов кодирования существует для конкретного автомата. Пусть γ – число состояний автомата и k – минимальная длина булева вектора, кодирующего состояние. Тогда число различных вариантов кодирования равно числу размещений 2k
|
|
|
2k ! |
|
|
|
||
элементов |
по γ позициям, |
т. е. |
|
. Если учесть то, что перестановка |
||||
(2k −γ )! |
||||||||
столбцов дает равнозначные варианты, то получим |
2k! |
|
. Можно считать |
|||||
(2k −γ )!k! |
||||||||
равнозначными варианты, |
получаемые друг из друга путем инвертирования |
|||||||
значений |
внутренних переменных. Тогда получим |
|
2k! |
или |
||||
(2k −γ )!k!2k |
(2k −1)!
(2k −γ )!k! . Ясно, что перебрать все варианты реально только при небольшом
числе состояний автомата. Если же число состояний достаточно велико, то для выбора не самого плохого варианта кодирования необходимо применять более изощренный способ, чем полный перебор.
21.2. Метод «желательных соседств»
Рассмотрим задачу упрощения только функций состояний памяти при кодировании состояний автомата, хотя при некотором усложнении используемого критерия можно добиваться упрощения и выходных функций.
Каждой паре |
состояний qi, qj |
автомата |
с |
множеством |
состояний |
Q = {q1, q2, … , qγ} |
припишем вес wij |
= w′ij + w′′ij, |
где |
w′′ij – число |
столбцов |
таблицы переходов, в которых строки qi и qj имеют одинаковые элементы, т. е.
число значений переменной а, при которых |
Ψ(a, qi) = Ψ(a, qj), |
а w′ij |
|
определяется следующим образом. Пусть |
wp |
– число пар |
вида |
Ψ(as, qp), Ψ(at, qjр) , где входные символы as |
и at имеют соседние |
коды, |
γ
Ψ(as, qp) = qi и Ψ(at, qp) = qj. Тогда w′ij = ∑wp .
p=1
Желательно, чтобы коды состояний qi и qj были тем ближе друг к другу, чем больше величина wij. Здесь имеется в виду расстояние в гиперкубе, представляющем пространство кодирующих переменных, между вершинами, соответствующими данным кодам. Для объяснения такого правила приведем следующие соображения.
Общий вид матриц U и V, задающих систему булевых функций zj+ (j = 1, 2, … , k), представим следующим образом:
163
x1
U = xs1xt1
x2 |
... |
xn |
z1 |
z2 ... |
zk |
|
|
z+ |
z+ |
... |
z+ |
|
|
||||
... |
|
|
|
... |
|
|
|
|
1 |
|
2 |
|
|
k |
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
||||
xs2 |
... |
xsn |
zp1 |
zp2 ... |
zpk |
|
, |
z |
i1 |
z |
i2 |
... |
z |
ik |
|
, |
|
... |
|
|
|
... |
|
|
V = |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|||
xt2 |
... |
xtn |
zp1 |
zp2 ... |
|
|
|
|
|
|
z j2 |
... |
|
|
|
|
|
zpk |
|
z j1 |
z jk |
|
|||||||||||||
... |
|
|
|
... |
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
где (xs1, xs2, … , xsn) и (xt1, xt2, … , xtn) – соседние векторы, являющиеся кодами входных символов as и at и представляющие совокупности входных двоичных
сигналов, а (zp1, zp2, … , zpk), (zi1, zi2, … , zik) и (zj1, zj2, … , zjk) – коды состояний qp, qi и qj соответственно.
Здесь отражена ситуация, которая учитывается при подсчете значения w′ij.
Пара вектор-строк (xs1, xs2, … , xsn, zp1, zp2, … , zpk) и (zi1, zi2, … , zik) матриц U и V представляет переход автомата из состояния qp в состояние qi при входном
символе as, выражаемый |
формулой Ψ(as, qp) = qi. |
Точно так же пара строк |
||
(xt1, xt2, … , xtn, zp1, zp2, … , zpk), |
(zj1, zj2, … , zjk) |
представляет |
переход, |
|
выражаемый формулой |
Ψ(at, qp) = qj. Отсюда |
видно, что |
чем больше |
одноименных компонент векторов (zi1, zi2, … , zik) и (zj1, zj2, … , zjk), являющихся кодами состояний qi и qj, совпадают и равны единице, тем больше, возможно,
будет условий для простого склеивания элементарных конъюнкций в получаемой системе ДНФ.
Ситуация, учитываемая при подсчете значения w′′ij, представляется
следующими матрицами: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
x1 |
x2 ... |
xn |
z1 |
z2 |
... |
zk |
|
|
z+ |
z+ |
... |
z+ |
|
|||||
|
|
... |
|
|
|
|
... |
|
|
|
|
|
|
1 |
2 |
|
k |
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|||||
x |
x |
... |
x |
z |
i1 |
z |
i2 |
... |
z |
ik |
|
|
|
zv1 |
zv2 |
... |
zvk |
|
|
U = |
u1 |
u2 |
|
un |
|
|
|
|
|
, |
V = |
. |
|||||||
|
... |
|
|
|
|
... |
|
|
|
|
... |
|
|
||||||
|
|
xu2 ... |
xun |
z j1 |
z j2 |
... |
|
|
|
|
|
|
zv2 |
|
|
|
|||
xu1 |
z jk |
|
zv1 |
... zvk |
|||||||||||||||
|
|
... |
|
|
|
|
... |
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Здесь пары |
строк |
(xu1, xu2, … , xun, zi1, zi2, … , zik), |
(zv1, zv2, … , zvk) и |
(xu1, xu2, … , xun, zj1, zj2, … , zjk), (zv1, zv2, … , zvk) представляют переходы в одно и то же состояние qv при одном и том же значении au переменной а, т. е.
Ψ(au, qi) = Ψ(au, qj) = qv. Ясно, что желательно иметь соседними коды тех состояний qi и qj, для которых переменная а принимает много значений аи,
удовлетворяющих Ψ(au, qi) = Ψ(au, qj). Тогда возможно простое |
склеивание |
элементарных конъюнкций, представленных показанными |
строками |
матрицы U. |
|
164
Одна из реализаций метода «желательных соседств» представляется как процесс построение k-мерного гиперкуба, напоминающий сборку некоторой простой механической конструкции. При этом вершины гиперкуба, являющиеся первоначально вершинами некоторого пустого графа (без ребер), заранее поставлены в соответствие состояниям автомата и на парах этих вершин заданы величины wij.
Исходными данными для построения k-мерного гиперкуба являются величины wij и число состояний автомата γ. Предполагается, что это число минимально или по каким-то причинам не подлежит минимизации. Если γ не представляет собой целой степени двойки, то оно увеличивается до γ′ = 2k и считается, что wrs = 0, если хотя бы одно из qr и qs является дополнительно введенным таким образом состоянием.
Построение k-мерного гиперкуба представляется как последовательность k шагов. На p-м шаге рассматривается множество (p – 1)-мерных гиперкубов, они объединяются в пары, и из каждой пары получается один p-мерный гиперкуб путем соответствующего добавления ребер. При этом по возможности для соединения ребрами выбираются те вершины, которым соответствуют наибольшие из оставшихся значения wij. Вершинам полученного гиперкуба приписываем k-компонентные булевы векторы с соблюдением отношения соседства, представленного ребрами гиперкуба.
На первом шаге из γ′ изолированных вершин, или 0-мерных гиперкубов, строятся одномерные гиперкубы в виде γ′ / 2 попарно несмежных ребер. На последнем k-м шаге из двух (k – 1)-мерных гиперкубов собирается один k- мерный гиперкуб путем добавления 2k - 1 ребер.
Продемонстрируем этот процесс на примере автомата, таблицей переходов которого является табл. 21.3. Введем два фиктивных состояния q7 и q8, чтобы довести число состояний до 8 = 23. Значения wij удобно задать в виде табл. 21.5, где строки и столбцы соответствуют состояниям автомата.
|
|
|
Таблица 21.3 |
|
|
|
|
Таблица 21.5 |
|
||||||
|
Таблица переходов |
|
|
Значения wij |
|
|
|
||||||||
q |
|
х1 х2 |
|
|
|
q2 q3 q4 q5 q6 q7 q8 |
q1 |
||||||||
00 |
01 |
10 |
|
2 |
1 |
0 |
0 |
|
2 |
0 |
0 |
|
|||
q1 |
|
q1 |
q2 |
q6 |
|
|
3 |
1 |
2 |
|
2 |
0 |
0 |
|
q2 |
q2 |
|
q3 |
q2 |
q1 |
|
|
|
2 |
1 |
|
0 |
0 |
0 |
|
q3 |
q3 |
|
q2 |
q3 |
q5 |
|
|
|
|
2 |
|
0 |
0 |
0 |
|
q4 |
q4 |
|
q4 |
q5 |
q2 |
|
|
|
|
|
|
2 |
0 |
0 |
|
q5 |
q5 |
|
q3 |
q5 |
q4 |
|
|
|
|
|
|
|
0 |
0 |
|
q6 |
q6 |
|
q3 |
q2 |
q4 |
|
|
|
|
|
|
|
|
0 |
|
q7 |
На первом шаге получаем четыре одномерных гиперкуба, изображенных на рис. 21.1. Максимальное значение имеет вес w23 = 3. Поэтому в первую очередь ребром соединяются вершины q2 и q3. Затем ребрами соединяются вершины q1 с q6, q4 с q5 и q7 с q8.
165
|
• q2 |
• q1 |
• q4 |
• q7 |
q3 • |
q6 • |
q5 • |
q8 • |
|
Рис. 21.1. Результат первого шага построения гиперкуба
Чтобы из четырех одномерных гиперкубов получить два двухмерных, надо добавить четыре ребра. Для этого выбираются такие ребра, чтобы сумма их весов была максимальна. Сначала строится один гиперкуб, для которого выбираются два ребра с максимальной суммой весов. Затем точно так же собирается второй гиперкуб. На рис. 21.2 показаны варианты выбора ребер для получения первого двухмерного гиперкуба.
q2 • |
• q3 |
q2 • |
• q3 |
q2 • |
• q3 |
q2 • |
• q3 |
q1 • |
• q6 |
q6 • |
• q1 |
q4 • |
• q5 |
q5 • |
• q4 |
w12 + w36 = 2 |
w26 + w13 = 3 |
w24 + w35 = 2 |
w25 + w34 = 4 |
||||
q1 • |
• q6 |
q1 • |
• q6 |
|
|
|
|
q4 • |
• q5 |
q5 • |
• q4 |
|
|
|
|
w14 + w56 = 2 |
w15 + w46 = 0 |
|
|
|
|
Рис. 21.2. Варианты сборки двухмерного гиперкуба
Вершины q7 и q8 здесь не участвуют, так как все инцидентные им ребра имеют нулевой вес и сумма их весов заведомо не максимальна. Максимальной суммой весов обладает четвертый вариант. Для второго гиперкуба все варианты одинаковы.
На рис. 21.3 изображены два двумерных гиперкуба, из которых надо собрать один трехмерный гиперкуб, добавив четыре ребра. Варианты такой сборки представлены на рис. 21.4. Сумма весов ребер показана ниже каждого изображения варианта сборки.
q2 • |
• q3 |
q1 • |
• q7 |
q5 • |
• q4 |
q6 • |
• q8 |
Рис. 21.3. Результат сборки двумерных гиперкубов
Для окончательного решения нашего примера выбран вариант сборки с максимальной суммой весов добавляемых ребер, равной 4. Этот гиперкуб показан отдельно на рис. 21.5, где возле каждой вершины представлен код соответствующего состояния.
166
Булев автомат, соответствующий данному варианту кодирования, представим тремя картами Карно, которые задают не полностью определенные функции z1+, z2+ и z3+ и строкам которых соответствуют состояния заданного автомата (рис. 21.6).
q1 • |
• q6 |
q6 • |
• q1 |
q7 • |
• q1 |
q8 • |
• q6 |
q2 • |
•q3 |
q2 • |
•q3 |
q2 • |
•q3 |
q2 • |
•q3 |
q7• |
• q8 |
q8• |
• q7 |
q8• |
• q6 |
q7• |
• q1 |
q5 • |
• q4 |
q5 • |
• q4 |
q5 • |
• q4 |
q5 • |
• q4 |
2 |
|
3 |
|
1 |
|
0 |
|
q7 • |
• q8 |
q8 • |
• q7 |
q1 • |
• q7 |
q6 • |
• q8 |
q2 • |
•q3 |
q2 • |
•q3 |
q2 • |
•q3 |
q2 • |
•q3 |
q1• |
• q6 |
q6• |
• q1 |
q6• |
• q8 |
q1• |
• q7 |
q5 • |
• q4 |
q5 • |
• q4 |
q5 • |
• q4 |
q5 • |
• q4 |
0 |
|
2 |
|
4 |
|
2 |
|
Рис. 21.4. Варианты сборки трехмерного гиперкуба
q6(101) q8
••
q5(001) q4(011)
••
q1(100) q7
••
q2(000)
•• q3(010)
Рис. 21.5. Результат сборки гиперкуба с кодами состояний
|
|
|
|
|
|
х1 х2 |
|
|
|
|
|
|
х1 х2 |
|
|
|
х1 х2 |
|
|
0 |
1 |
|
|
0 |
|
|
1 |
0 |
|
|
0 |
|
0 |
0 |
|
0 |
q2 |
|
0 |
1 |
|
1 |
0 |
|
|
1 |
1 |
|
|
0 |
|
0 |
1 |
|
1 |
q5 |
|
0 |
0 |
|
|
0 |
|
|
1 |
0 |
|
|
0 |
|
1 |
0 |
|
1 |
q4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
q3 |
|
0 |
0 |
|
|
0 |
|
|
0 |
0 |
|
|
1 |
|
0 |
1 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
q6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
|
|
0 |
|
|
1 |
1 |
|
|
0 |
|
0 |
1 |
|
0 |
|
|
1 |
1 |
|
|
0 |
|
|
0 |
0 |
|
|
0 |
|
0 |
1 |
|
0 |
q1 |
z1 z2 z3 |
|
z1+ |
z1 z2 z3 |
|
z2+ |
z1 z2 z3 |
|
z1+ |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
167
Рис. 21.6. Представление функций z1+, z2+ и z3+ с помощью карт Карно
Минимизированная система булевых функций, описывающая заданное поведение, представляется следующими матрицами:
x1 x2 z1 z2 z3 |
|
|
z+ |
z+ |
z+ |
||||||
1 − |
− 0 0 |
|
|
1 |
2 |
3 |
|||||
|
|
1 0 0 |
|||||||||
|
|
|
1 |
− 0 |
|
|
|
|
0 |
|
|
− 0 |
|
|
|
1 |
0 |
||||||
|
0 |
0 |
0 |
0 |
− |
|
|
|
|
|
|
|
0 |
0 |
− − 1 |
|
|
|
0 |
1 |
0 |
||
|
|
|
|
0 1 0 |
|||||||
U = 1 − |
− 0 1 |
|
, |
V = |
0 1 |
1 . |
|||||
|
|
− |
− 1 |
0 |
|
|
|
|
0 |
|
|
1 |
|
|
|
0 |
1 |
||||||
|
|
|
− 1 |
0 |
|
|
|
|
1 |
|
|
− 1 |
|
|
|
0 |
0 |
||||||
|
0 − |
− 1 |
1 |
|
|
|
0 0 |
1 |
|||
|
|
|
|
− 1 |
|
|
|
|
0 |
|
|
− 1 0 |
|
|
|
0 |
1 |
||||||
1 |
− |
1 |
− − |
|
|
0 |
0 |
1 |
|||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Для сравнения приведем минимизированную систему булевых функций, получаемую при произвольном кодировании, например, путем приписывания состояниям чисел от 0 до 5 в двоичной системе счисления согласно порядку номеров состояний. Матрица кодирования и матрицы, представляющие данную систему булевых функций, имеют следующий вид:
|
|
|
|
x1 x2 z1 z2 z3 |
|
|
z+ |
z+ |
z+ |
||||||
|
|
|
|
0 0 0 − 1 |
|
|
1 |
2 |
3 |
||||||
|
|
|
|
|
|
0 1 0 |
|||||||||
z1 z2 z3 |
|
|
|
− |
1 |
|
|
|
|
|
0 |
|
|
||
|
0 0 |
− |
|
|
0 |
1 |
|||||||||
0 0 0 |
|
− 1 − |
0 |
1 |
|
|
|
0 0 1 |
|||||||
|
|
|
|
− |
1 |
− |
1 |
1 |
|
|
|
1 |
0 |
0 |
|
0 0 |
1 |
|
− 1 1 − 0 |
|
|
|
|
|
|||||||
|
|
|
|
0 |
0 |
|
|||||||||
|
|
|
|
U = 1 − 0 |
|
|
|
|
|
1 |
|
||||
С = 0 1 |
0 |
, |
− |
0 |
, |
V = |
1 |
0 |
0 . |
||||||
|
1 |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
0 |
1 |
|
− 0 1 |
− − |
|
|
0 |
0 |
|||||||
|
0 |
|
|
− |
1 |
− |
1 |
0 |
|
|
0 |
1 |
0 |
||
1 |
0 |
|
|
− |
− |
0 |
0 |
|
|
|
|
0 |
|
|
|
1 0 1 |
|
1 |
|
|
|
0 |
1 |
||||||||
|
|
|
|
1 − − |
1 |
1 |
|
|
|
0 0 1 |
|||||
|
|
|
|
1 − |
1 − − |
|
|
0 0 1 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
− 1 0 |
− − |
|
|
0 |
1 |
Последняя система ДНФ оказалась сложнее – число различных элементарных конъюнкций в ней на две больше, чем в предыдущей системе.
168
Г л а в а 22
Кодирование состояний асинхронного автомата
22.1. Явление состязаний элементов памяти
Асинхронный автомат отличается от синхронного тем, что промежуток между моментами времени, когда автомат меняет свое состояние, у него не фиксирован, а определяется изменением входного сигнала. В связи с этим на функцию переходов Ψ накладывается следующее ограничение: если Ψ(a, qi) = qj для некоторых а А и qi Q, то Ψ(a, qj) = qj, т. е. всякий переход должен всегда вести в некоторое состояние, устойчивое при действующем в данный момент входном сигнале а. Естественно, что входной сигнал не должен меняться до тех пор, пока автомат не придет в устойчивое состояние. Без этих ограничений невозможно построить автомат, реализующий заданное поведение.
В реальных схемах не может быть одновременного изменения различных сигналов, допускаемого в абстрактной модели синхронного автомата. Реальные логические элементы обладают инерционностью, приводящей к некоторым задержкам их «срабатывания», причем разброс этих задержек для различных элементов носит случайный характер. Кроме того, сигналы, переключающие различные элементы памяти, могут проходить цепочки логических элементов, имеющие различную длину. Задержки на элементах в цепочках суммируются. Сами элементы памяти имеют различное время переключения. В схемах, работающих в синхронном режиме, такими задержками можно пренебречь, поскольку там процесс переключения элементов памяти и процесс формирования переключающих сигналов разделены во времени. В асинхронных схемах эти процессы происходят одновременно и указанное свойство реальных элементов должно учитываться.
Рассмотрим процесс перехода из состояния в состояние для асинхронного автомата, поведение которого представлено в табл. 22.1 с выделенными устойчивыми состояниями, где крайний правый столбец представляет произвольно выполненное кодирование состояний. Переход из одного состояния в другое в реальной схеме реализуется как смена набора состояний элементов памяти. Пусть сначала действует входной сигнал а1 и автомат находится в устойчивом состоянии q1 (код 000). Затем входной сигнал меняется на а3, и автомат согласно заданному поведению должен пойти в состояние q4 (код 011). В зависимости от того, какой из двух элементов памяти, z2 или z3, меняет свое состояние первым, автомат может оказаться на какое-то время в промежуточном состоянии, представленном набором состояний элементов памяти 010 либо 001. Если первым меняет свое состояние элемент z3, то автомат окажется в состоянии q2 (код 001), которое является устойчивым для входного сигнала а3, т. е. вместо того, чтобы идти в состояние q4, автомат остается в состоянии q2.
169
Таблица 22.1 Таблица переходов асинхронного автомата
q1 |
а1 |
а2 |
а3 |
z1 z2 z3 |
q1 |
q3 |
q4 |
0 0 0 |
|
q2 |
q1 |
q3 |
q2 |
0 0 1 |
q3 |
q1 |
q3 |
− |
0 1 0 |
q4 |
q5 |
– |
q4 |
0 1 1 |
q5 |
q5 |
q3 |
q2 |
1 0 0 |
Рассмотренное явление носит название состязаний или гонок элементов памяти. Принято называть состязания неопасными, если все промежуточные состояния, в которых автомат может оказаться при переходе из одного состояния в другое под воздействием некоторого входного сигнала а, являются неустойчивыми для сигнала а, т. е. при любом порядке переключений элементов памяти автомат из некоторого состояния qi под воздействием входного сигнала а переходит всегда в состояние qj = Ψ(a, qi). Если же при этом автомат может оказаться в некотором устойчивом состоянии qk, отличном от qj, то состязания называются опасными.
Состязания могут быть также и между входными двоичными сигналами. Чтобы устранить их влияние на работу автомата, вводят обычно ограничение на изменение входных сигналов. Например, можно наложить запрет на изменение одновременно более чем одного двоичного сигнала.
22.2. Условие отсутствия опасных состязаний
Реализацию заданного в автомате перехода из состояния qi в состояние qj (примем для такого перехода обозначение qi → qj) можно обеспечить, придав функции переходов Ψ значение qj на всех возможных промежуточных состояниях, в которые автомат может попасть из состояния qi при заданном фиксированном входном сигнале а, т. е. Ψ(a, ql) = qj при любом ql, в котором может оказаться автомат при переходе из qi. В этом случае элементы памяти, которые должны изменить свое состояние, будут подвергаться надлежащему постоянному воздействию на всем протяжении рассматриваемого перехода, независимо от того, в каком порядке они «сработают».
Обозначим U(qi, qj) множество всех возможных промежуточных состояний (включая исходное и конечное), в которые автомат может попасть при реализации перехода qi → qj, если элементы памяти, меняющие свое состояние, делают это в произвольном порядке. Для приведенного выше примера
U(q1, q4) = {q1, q2, q3, q4}, U(q5, q2) = {q1, q2, q5, q}, где q – некоторое состояние,
не предусмотренное в задании поведения автомата, соответствующее набору состояний элементов памяти 101.
170