Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТА_конспект.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
3 Мб
Скачать
☆

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

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

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

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

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

  3. Из множества M удаляются пары состояний, которые уже закодированы M\(Si Sj), если станет равным 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 , в примере ее нет, значит получим окончательное значение R1 S1.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]