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

Этапы синтеза асинхронного автомата.

Этап синтеза относится к асинхронному автомату также используется и в асинхронном, однако есть и отличие.

На этапе абстрактного синтеза нужно добавить следующие действия:

  1. Осуществить перекодировку входных и выходных символов для обеспечения распознаваемости соседних одинаковых сигналов.

  2. На этапе переходе от алфавитного оператора и автомату необходимо обеспечить все состояния автомата устойчивости.

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

Пример перекодирования входных и выходных символов:

P = {a,b} W = {a,b,c}

Вид входного сигнала:

P1 = {a , a1 , b , b1} W = {a , b , c , c1}

На исходной временной диаграмме до перекодирования не различимы входные сигналы между IиIIинтервалом иIIIиIV. Выходной сигнал не различим междуIIиIIIинтервалами.

На структурном этапе синтеза отличие следующие:

  1. Иной тип элемента памяти, который используется в автомате.

  2. Отличие в способе кодирования состояний автомата.

  3. Иной метод синтеза комбинационного узла.

  1. Кодирование состояний асинхронного автомата.

Цель кодирования – обеспечить устойчивую работу асинхронного автомата, затем устранение так называемого явления состязания памяти.

Состязание элементов памяти

  1. τ1 = τ2  0110

  2. τ1 > τ2  010010

  3. τ1 < τ2  011110

Это явление называется состязанием элементов памяти.

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

Если в примере q1иq2имеют задержки τ1и τ2, то между ними могут быть соотношение, либоaлибоbлибоc, в этом случае переход изSiвSjбудет иметь вариантыa,b,c. В случаеbиcпоявляются дополнительные состояния 00 и 11, именно такие переходы через дополнительные состояния называютсясостязанием элементов памяти.

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

Если же состязание приводит к переходу в незапланированное неустойчивое состояние, а потом и к переходу в верное устойчивое состояние, то такое состояние является некритическим.

Рассмотрим пример:

Закодируем в предыдущем графе 3 состояния следующим образом:

S/q

q1

q1

S1

0

0

S2

0

1

S3

1

1

тогда автомат будет:

Pi / Si

00

01

10

11

0

00

00

00

11

01

0

01

00

01

01

01

1

11

00

01

11

01

Рассмотрим 0011

q1q2

1 τ2)

  1. Пусть τ12

10

0001- - >11

Состязание критическое, из-за задержки автомат оказывается в состоянии 01, для которого входной сигнал 10 является устойчивым или приводит к устойчивости, и переходит в состояние 11 не произойдет.

  1. τ12

10 10

00  10  11

Состязание не критическое.

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

2. Способы кодирования асинхронного автомата.

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

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

Существует 2 способа кодирования:

  1. Соседними кодами

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

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

  1. Кодирование унитарным кодом

При данном способе кодирования состояние Siкодируется кодом, в котором устанавливается 1 вIразряде.

Для отсутствия состязаний элементов памяти на каждом переходе из SiвSjустанавливают транзитное состояние и кодируют его кодом, в котором 2 единицы вiиjразрядах.

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

Закодируем состояние из примера:

S1 = 100

S2 = 010

S3 = 001

Dтриггер (там где установка в 1)

D1 = ⌐X1⌐X2q3 v ⌐X1⌐X2q2 v q1⌐q2⌐q3

S3 S1/3 S2 S1/2 S1 S1

S1/3 S1 S12 S1 S1 S1/2

S1 S1/3

D2 = X1X2q1 v ⌐X1X2q3 v X1X2q3 v q1q2⌐q3

S1 S1/2 X2q3 X2q3 S2S2

S1/2 S2 S3 S23 S3 S23 S2 S12

S23 S2 S23 S2

D3 = X1⌐X2q1 v ⌐q1⌐q2q3

S1 S1/3 S3 S3

S13 S3

Нарисуем временную диаграмму:

Предположим, что автомат находится в состоянии S1,q1,q2,q3= 100, а входные сигналыX1X2= 01, функции возбуждения триггера дают следующие значенияD1= 1,D2= 0,D3= 0, что подтверждает состояние 100, до моментаt0схема устойчива.

Схема X1в моментt0изменяетD2, которое устанавливает к моментуt1и вызывает изменениеq2к моменту времениt2; на интервалеt2иt3получаем состояние 110, т.е.S12. Сменаq2сбрасываетD1, которое в свою очередь переводитq1в ноль (моментt4) , послеt4автомат находится в состоянии 010 , т.е. в состоянииS2.

При переходе из S1вS2последовательно меняется вначалеq2и затемq1. Это обеспечивало отсутствие состязаний элементов памяти, с другой стороны затянуло переход изS1вS2, т.е. снизило быстродействие.

Запишем функции возбуждения для RSтриггера.

В отличие от DтриггераRSдолжны меняться, когда он сбрасывается и переходит в 1.

R= 1 – сброс

10

S= 1 – установка

0 1

R= 1

0  0

S = 1

1  1

S1 = q3⌐X1⌐X2 v q2⌐X1⌐X2

S3 S1/3(01) S2S1/2 (01)

S1/3 S1(11) S1/2 S1(11)

R1 = q2X1X2 v q3X1⌐X2

S1/2 S2(10) S1/3S3 (10)

S2 S2 (00) S2 S3(00)

S2 = q1X1X2 v q3X2

S1 S1/2(01) S3S2/3 (01)

S1/2 S2(11) S2/3 S2(11)

R2 = q2⌐X1⌐X2

S1/2 S1(10)

S1 S1 (00)

S3 = q1X1⌐X2 = q1⌐ q2⌐ q3X1⌐X2 v q1⌐q2q3X1⌐X2

S1 S1/3(01) (01)

S1/3 S3(11)

Два разряда q1q210 определяют 2 состоянияS1иS13, один разрядq1= 1 определяет 3 состоянияS1,S13,S12, т.е. состояниеS1и транзитное от него. В записи дляS3присутствует такжеX1, ⌐X2 , что однозначно удаляет состояниеS12следовательно, вместоq1⌐q2, можно записать толькоq1и выражениеq1X1⌐X2будет определять только 2 состоянияS1S13.

R3 = q3⌐X1⌐X2 v q3X2

S3 S1(10) S2/3S2(10)

S1 S1(00) S2 S2(00)

Рассмотрим временную диаграмму S1S2

q1

q2

q3

X1

X2

1

0

0

0

1

1

1

0

1

1

0

1

0

Следовательно S3 = 0,R3 = 0

Классификация по логическому функционированию делят на RS,JK,D,T.

По принципу записи и считыванию информации.

Триггеры делят:

  1. В зависимости от наличия или отсутствия синхросигнала (синхронные и асинхронные)

  2. В зависимости от времени записи новой информации и ее появление на выходе делят на триггеры с задержкой( с разделением процессов записи и считывания) и триггеры без задержки (без разделения) процессов записи и считывания.

В триггерах с задержкой новое значение появляется на выходе по окончанию сигнала, который произвел запись этого нового значения.

На примере RS триггера:

  1. Асинхронный

  1. без задержки

  1. с задержкой

  1. Синхронный

  1. без задержки

  1. сзадержкой