logo
Лекции по теории автоматов

Кодирование соседними кодами.

Данный способ позволяет упростить получаемую схему, при этом соседние состояния кодируются соседними кодами. Два кода называют соседними, если они различаются только в одном разряде. Соседние состояния бывают соседними первого и второго рода. Два состояния автомата называют соседями первого рода, если под воздействием одного и того же входного символа из них осуществляется переход а одно состояние. Состояния являющееся соседними второго рода, если в них осуществляется переход под воздействием одного и того же входного символов из состояний, которые являются соседями первого рода. Степень соседства для соседей первого рода это количество входных слов, под воздействием которых из состояний соседей первого рода осуществляется переход в общее состояние.

S1иS11– соседи первого рода

SiиSj– соседи второго рода (не обязательно ⌐x, главное чтобы сигнал был одинаковым)

Степень соседства S1иS11=1

Соседи первого и второго рода кодируют соседними кодами. Метод эвристический и не обеспечивает гарантии минимума системы.

Пример:

Пусть задан D– триггер в качестве элемента и 2 состояния, которые являются соседями первого родаS1иS11

S1- закодировали (q1q2q3…qn-1⌐qn) – 11…10

S11- закодировали (⌐q1q2q3…qn-1⌐qn) – 01…10

Предположим, что под воздействием входного сигнала x, который вызывает переход в общее состояние некоторый триггер должен перейти из 0 в 1.

При кодировании соседей первого рода соседними кодами происходит склеивание конъюнкции в функции возбуждения триггеров.

Пример:

Кодируем соседей второго рода.

Пусть в качестве элемента памяти используется Dтриггер

01 есть дляD3

D3 = ⌐q1⌐q2⌐q3x1v q1⌐q2⌐q3x1v q1⌐q2⌐q3⌐x1 = ⌐q2⌐q3x1vq1⌐q2⌐q3⌐x1– выражение упрощается благодаря соседним кодамS1иS11

D2= ⌐q1⌐q2⌐q3⌐x1vq1⌐q2⌐q3⌐x1= ⌐q2⌐q3⌐x1

Если закодированы соседи второго рода соседними кодами, при условии кодирования соседними кодами соседей первого рода, в большинстве функций возбуждения триггеров произойдет склеивание конъюнкций. Если происходит нехватка числа соседних кодов для всех соседних состояний, то в первую очередь кодируют состояния соседей первого рода, которые имеют наивысшую степень соседства. Соседей второго рода кодируют в последнюю очередь. Поиск соседних кодов удобно осуществлять для соседей первого рода по инверсной таблице переходов, для соседей второго рода по прямой таблице переходов. Кодирование самих состояний удобно выполнять используя карты Карно.

Задан автомат, построим инверсную таблицу переходов:

0

1

Pi /Si

---

S2 , S4

S0

S0

S3

S1

S3

S0 , S1

S2

S1

---

S3

S0 , S1

---

S4

т.е. соседями первого рода будут : S2 , S4 (2 – степень родства)

S0 , S1(1) – соседи второго рода.

Минимальное число разрядов при кодировании = 3, точнее 5 состояний, следовательно карты Карно на 8 клеток.

---------

q2

---------

q1

S2

S4

S0

S1

|

S3

q3

Si

q3

q2

q1

S0

0

1

1

S1

0

1

0

S2

0

0

0

S3

1

1

0

S4

0

0

1