Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по Теории Автоматов.doc
Скачиваний:
172
Добавлен:
01.05.2014
Размер:
1.09 Mб
Скачать

Замена входных переменных и кодирование состояний

Обычно число переменных, от которых существенно зависит каждый переход в микропрограммном автомате (МПА), невелико по сравнению с мощностью множества входных переменных. Пусть МПА задан таблицей переходов-выходов, Табл. 1. Рассмотрим способ реализации МПА, основанный на замене множества входных переменных Х множеством новых переменных Р, содержащим, как правило, существенно меньшее число элементов. Обозначим через X{am} множество входных переменных, определяющих все переходы автомата из состоянияam. В рассматриваемом примере :

X(a1)={x1},X(a2)=,X(a3)={x7,x8},X(a4)={x1,x2,x3},X(a5) = {x4,x6},X(a6) = {x5,x7},X(a7)=,X(a8) = {x6}.

Из этих выражений видно, что наибольшее число переменных (три) случается на переходе из состояния а4. Обозначим это число в общем случае черезGи образуем новое множество переменныхP={p1,p2 , ... ,pG}. Ясно, что мощность этого множества меньше мощности множества входных переменных Х. На практике бывает значительно меньше. Тогда каждую переменную из множества Х можно заменить переменной из множества Р так, чтобыpg=xl, если в состоянииamпеременнаяxlзаменена переменнойpg.

Предположим, что в примере замена переменных уже сделана так, как это представлено в Табл. 2. В этой таблице на пересечении строки am и столбцаpgзаписан элементxl , если в состоянииamпеременнаяxlзаменяется переменнойpg.

Таблица 32

am

as

X(am,as)

[am]

[as]

P(am, as)

Yt

D1 D2 D3

h

a1

a1

a3

x1

x1

000

000

001

p1

p1

- Y0

y7 Y8

0 0 0

0 0 1

1

2

a2

a3

1

011

001

1

y10 y11 Y4

0 0 1

3

a3

a6

a8

a2

x7

x7 x8

x7 x8

001

101

111

011

p2

p2p3

p2p3

y10 y11 Y4

Y0

y2 y5 y10 Y1

1 0 1

1 1 1

0 1 1

4

5

6

a4

a1

a3

a7

a4

x1 x3

x1 x3

x1 x2

x1 x2

010

000

001

100

010

p1p3

p1p3

p1p2

p1p2

y3 y4 Y2

y1 y3 y4 Y3

y3 y4 Y7

y1 Y6

0 0 0

0 0 1

1 0 0

0 1 0

7

8

9

10

a5

a4

a5

a8

x4 x6

x4 x6

x4

110

010

110

100

p1p2

p1p2

p1

y6 y13 Y9

y6 y13 Y9

y6 y8 Y5

0 1 0

1 1 0

1 0 0

11

12

13

a6

a2

a3

a8

x5

x5 x7

x5x7

101

011

001

111

p1

p1p2

p1p2

y10 y11 Y4

y12 Y10

y10 y11 Y4

0 1 1

0 0 1

1 1 1

14

15

16

a7

a5

1

100

110

1

y1 Y6

1 1 0

17

a8

a8

a5

x6

x6

111

111

110

p2

p2

- Y0

y9 y11 Y7

1 1 1

1 1 0

18

19

Предположим, что связь входных переменных и состояний, переход из которых они инициируют, а также новые переменные, заменяющие исходные, представлены в Табл. 2. В этой таблице в столбцы p1,p2,p3записаны имена новых переменных, от которых существенно зависит переход из состоянияamв любое состояниеas. Из таблицы видно, что р1должна быть равна х1в состояниях а1и а4, х4в состоянии а5, х5в состоянии а6. Тогда выражение для р1будет иметь вид

p1=a1x1a4x1a6x5.

Действительно, если МПА находится в состоянии а1, то а4= а5= а6= =0, а а1= 1, поэтому р1 = х1. Выражения для р1, р2, и р3можно получить непосредственно из табл. 2. Однако, если в какой либо клетке данного столбца таблицы стоит прочерк, то функция не полностью определенная, т.е. переменнаяpgможет быть равна любой переменной в состоянииam. Точно так же переменная р1не определена в состояниях а2, а7и а8. В связи с этим в выражение для р1можно добавить всевозможные слагаемые:a2xt,a3xt,a7xt,a8xt, используя их для упрощения р1. В качествеxtследует выбирать только переменные из столбца р1. Тогда выражение для р1 примет вид

p1 = a1x1  a4x1  a5x4  a6x5  [(a2  a3  a7  a8) & (x1  x4  x5)],

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

p1 = (a1  a4  [a2  a3  a7  a8] )x1  (a5  [a2  a3  a7  a8] )x4

(a6  [a2  a3  a7  a8] )x5;

p2 = (a3  a6  [a1  a2  a7] )x7  (a4  [a1  a2  a7] )x2  (a5  a8  [a1  a2  a7] )x6;

p3 = (a3  [a1 a2  a5  a6  a7  a8] )x8  (a4  [a1 a2  a5  a6  a7  a8] )x3.

Для кодирования состояний МПА используем диаграмму Вейча, размещая в ней имена состояний таким образом, чтобы они склеивались между собой, образуя интервалы наименьшего ранга. В каждой склейке могут участвовать метки состояний, соответствующие переменной xj, в данном столбце табл.2, и метки состояний, занесенных в квадратные скобки данного уравнения. Если для кодирования состояний используются не все возможные кодовые комбинации, соответствующие всем наборам значений внутренних переменных, то неиспользуемые коды образуют области неопределенности функции (диаграммы), которые могут участвовать в любых склейках. Необходимо только следить за тем, чтобы в склейку, определяющую конъюнкцию при переменной xj, не попадали метки состояний , для которых обозначен переход в другие состояния под действием других переменных в этом же столбце таблицы. Очевидно, что разным способам размещения меток в диаграмме будут соответствовать разные выражения, определяющие новые внешние переменные МПА. Искусство разработчика состоит в минимизации суммарной сложности выражений, определяющих значения новых переменных.

T1

T2

a5

a8

a2

a4

T3

a7

a6

a3

a1

Таблица 33

Pg

am

p1

p2

p3

a1

x1

-

-

a2

-

-

-

a3

-

x7

x8

a4

x1

x2

x3

a5

x4

x6

-

a6

x5

x7

-

a7

-

-

-

a8

-

x6

-

В правой части Табл. 2 приведен возможный вариант кодирования состояний. В этом случае уравнения для новых входных переменных микропрограммного автомата примут вид:

p1 = t1 x1  t1t2x4  t2 t3x5,

p2 = t2x7  t1t3x2  t1t2x6,

p3=t2x8 t2x3.

Введем в структурной таблице МПА, Табл. 1, дополнительный столбец P(am,as), в котором входные переменные из множества Х заменены переменнымиp1,p2,p3в соответствии с Табл.2. В столбцы [am], [as] запишем коды состояний МПА в соответствии с размещением меток в диаграмме Вейча, показанном в правой части Табл.2, и определим функции возбуждения элементов памяти, а именно входные сигналыD- триггеров.

Следующим этапом проектирования МПА является построение логических функций возбуждения элементов памяти. Простейшим способом является построение этих функций непосредственно по таблице переходов-выходов (тривиальная реализация).

D1 = a3(p2p2p3)  a4p1p2  a5(p1p2p1)  a6p1p2  a7  a8(p2 p2);

D2 = a3(p2p3  p2p3)  a4p1p2  a5(p1p2  p1p2)  a6(p1 p1p2)  a7  a8(p2  p2);

D3 = a1p1  a2  a3(p2  p2p3  p2p3)  a4p1p3  a6(p1  p1p2  p1p2)  a8p2.

Преобразуя эти выражения с использованием правил склеивания, обобщенного склеивания и поглощения, получим:

D1 = a3(p2  p3)  a4p1p2  a5 (p1  p2)  a6p1p2  a7  a8;

D2 = a3p2  a4p1p2  a5p1  a6(p1  p2)  a7  a8;

D3 = a1p1  a2  a3  a4p1p3  a6  a8p2.

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

Замену переменных и кодирование состояний автомата можно выполнять различными способами, которые будут приводить к различным выражениям для функций D1, D2,D3и различным значениям сложностей схем. Поэтому важно выполнить замену переменных и кодирование таким образом, чтобы обеспечить минимальное число термов в окончательных уравнениях. С этой целью рекомендуется руководствоваться следующими правилами:

  • до замены переменных произвести минимизацию числа строк таблицы переходов-выходов структурного автомата, так как это способствует уменьшению числа переменных, определяющих переход в строках таблицы;

  • при замене переменных нужно стремиться поместить каждую переменную xiв одном столбце таблицы замены, что, однако, не всегда возможно;

  • при кодировании состояний важно, чтобы дизъюнкции в круглых скобках склеились в одну конъюнкцию.