Теория автоматов

Автор: Пользователь скрыл имя, 23 Ноября 2012 в 10:03, курс лекций

Описание работы

Конечные автоматы и такие связанные с ними конструкции как линейные грамматики и регулярные выражения относятся к важнейшим понятиям информатики. Различные варианты конечных автоматов и близкие им математические объекты служат для описания и анализа технических устройств, различных систем и процессов, программ и алгоритмов. Теория автоматов является одним из старейших разделов теоретической информатики.
В читаемом курсе рассматриваются цифровые автоматы как теоретическая основа проектирования аппаратных средств ЭВМ последовательного типа. В этом случае принято рассматривать цифровой автомат как совокупность операционного автомата (исполнительного устройства) и управляющего автомата (собственно конечного автомата), образующих операционное устройство.

Содержание

Теория автоматов. Введение.
Теория автоматов. Арифметика ЦВМ
Теория автоматов. Системы счисления
Теория автоматов. Конечные цифровые автоматы.

Работа содержит 1 файл

ta.doc

— 1.01 Мб (Скачать)

Рисунок 7 Гонки в цифровом автомате



Если после воздействия на вход автомата сигнала хi автомат попадает в состояние,  которое имеет код (0010), а затем на вход его поступает сигнал xk, который должен перевести автомат в состояние с кодом (1011), то во время этого перехода должны переключиться два элемента памяти. При этом возможны промежуточные переключения в состояния  с кодами (1010) или (0011), не входящие в программу работы автомата. Избежать критических состязаний элементов памяти можно, кодируя состояния таким образом, чтобы все переходы совершались между состояниями, закодированными соседними кодами. Кодирование смежных состояний соседними кодами называется противогоночным  кодированием. Такие коды, как правило, избыточны. Кроме того, для таких кодов существуют ограничения:

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

Поэтому такой метод борьбы с  гонками практически не применяется.

Аппаратные методы борьбы с гонками

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

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

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

Обычно число переменных, от которых  существенно зависит каждый переход  в микропрограммном автомате (МПА), невелико по сравнению с мощностью множества входных переменных. Пусть МПА задан таблицей переходов-выходов, Табл. 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,  не попадали метки состояний , для которых обозначен переход в другие состояния под действием других переменных в этом же столбце таблицы. Очевидно, что разным способам размещения меток в диаграмме  будут соответствовать разные выражения, определяющие новые внешние переменные МПА. Искусство разработчика состоит в минимизации суммарной сложности  выражений, определяющих значения новых переменных.

 

 

a5

 

a8

 

a2

 

a4

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 Ú a5p Ú a6(p1 Ú `p2) Ú a7 Ú a8;

D3 = a1p1 Ú a2 Ú a3 Ú a4p1`p3 Ú a6 Ú a8p2.

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

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

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

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

О кодировании микрокоманд имеет  смысл говорить только для случая построения автомата Мили. В принципе выходные сигналы автомата Мили формируются из тех же конъюнкций, из которых строились функции возбуждения элементов памяти автомата.  Так что можно использовать имеющиеся термы, полученные при тривиальной реализации, и сформировать из них  микрокоманды. Так как некоторые микрооперации выполняются более чем в одной микрокоманде,  для последующего формирования сигналов, инициирующих выполнение микроопераций, используются дизъюнкции микрокоманд. Например, для выходных сигналов в Табл.1 микрокоманды имеют следующий состав:

Информация о работе Теория автоматов