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

Минимизация числа переключений элементов памяти.

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

Алгоритм кодирования:

  1. Определяем множество пар состояний, между которыми существует переход M.

  2. Выбирается любая пара состояний, между которыми есть переход, один из них кодируется всеми нулями, а другой нулями и одной единицей.(00…01)

  3. Из множества Mудаляются пары состояний, которые уже закодированыM\(SiSj), если станет равным 0 , то процесс завершается.

  4. Берем любую пару в которой одно состояние уже закодировано, а другое нет (* , Sq)Sq- незакодированное состояние, * - состояние закодировано. Далее кодируем это состояние.

  5. Выбираем множество пар из Mкуда входитSq (Mq)

  6. Из Mqвыбираем все закодированные состояния (Bq)

  7. Строим множество кодов, имеющих расстояние d, с каждым кодом из состоянияBq

  8. Для каждого кода из всех множеств Cdqопределяется сумма расстояний по Хеммингу с каждым кодом изBqВыбирается код, имеющий минимальную сумму и этот код приписываетсяCqДеле возврат к пункту 3.

Пример:

  1. Пары состояний M={(1,2),(2,3),(2,4),(2,5),(3,4),(4,5),(1,5)}

  2. {1,2} => S1 = 000 S2 = 001

  1. M={(2,3),(2,4),(2,5),(3,4),(4,5),(1,5)}

  2. {2,4}

q=4

  1. Mq = {(2,4),(3,4),(4,5)}

  2. Bq = {2}

  3. C14 = {101,011}

  4. 101 + 001 = 100 d =1

011 + 001 = 010 d =1

S4 = 101

3) M={(2,3),(2,4),(2,5),(3,4),(4,5),(1,5)}

4) {2,5} q=5

5) Mq = {(2,5),(1,5),(4,5)}

6) Bq = {2,4,1}

7) C15 = {011}

C15 = {(111),(100)}

C15 = {(100),(010)}

8) 011 + 001 = 010

011 + 101 = 110

011 + 000 = 110

111 + 001 = 110

111 + 101 = 010

111 + 000 = 111

100 + 001 = 101

100 + 101 = 001

100 + 000 = 100

010 + 001 = 011

010 + 101 = 111

010 + 000 = 010

S5 = 100

3) M = {(2,3,(3,4) }

4) {2,3} q=3

5) Mq = {(2,3),(3,4)}

6) Bq = {2,4}

7) C15 = {011}

C15 = {(111)}

C15 = {(100),(010)}

8) 011 + 001 = 010

011 + 101 = 110

111 + 001 = 110

111 + 101 = 010

S3 = 011

3) M = {0 } – конец цикла.

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

Универсальный способ кодирования (для синхронного автомата).

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

Для Dтриггера:

D2=q1⌐q2q3⌐x1– любой код

D2=q1⌐x1 - унитарный код

Для унитарного кода опущены ⌐q2⌐q3, так как еслиq1= 1, то это однозначно подразумеваетq2=q3= 0. Более тогоq1= 1 невозможно ни для одного из оставшихся состояний автомата.

Пример:

01 01

D1= q5x v q3x

51 31

01

D2= q1⌐x

12

01 01 01

D3 = q1x v q2x v q4x

13 23 43

01 11

D4 = q2⌐x v q4⌐x

24 24

01

D5=q3⌐x

35

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

R= 1 , когда 10 обязательно

R= 1 , когда 00 можно

S= 1 , когда 01 обязательно

S= 1 , когда 11 возможно

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

RS

*0

0 0

01

0  1

10

1  0

0*

1  1

10 10

R1 = q1⌐X v q1X = q1

12 13

01 01

S1 = q5X v q3X = X(q1 v q3)

51 31

В функции R1 , S1входит обязательная конъюнкция, обеспечивающая переход 10 дляR1и 01 дляS1. ВR1можно добавить конъюнкции переходов из 00, т.к. при этомR=* и может быть доопределено до 1. УпроститьR=q- можно добавить только ⌐q1, однако при унитарном кодировании инверсное значение ⌐qне используется, а следовательно переходы 00 добавленные вR1только усложнят функцию.

Аналогично для S1можно добавить конъюнкции соответствующие переходу 11, такой переход возможен, только если присутствует петля вокругS1, в примере ее нет, значит получим окончательное значениеR1S1.

10 10

R2 = q2⌐X v q2X = q2

24 23

01

S2 = q1⌐X

12

10

R3 = q3

31

35

01 01 01

S3 = q1X v q2X v q4X = X(q1 v q2 v q4)

13 23 43

10

R4 = q4X

43

01 11

S4 = q2⌐X v q4⌐X = q2

24 44

R5 = q5X

S5 = q3⌐X