- •Кодирование внутренних состояний автомата
- •1. Кодирование внутренних состояний автомата. Возникновение
- •2. Методы устранения гонок
- •2.1. Аппаратные способы
- •2.2. Программные способы устранения гонок
- •Единичное кодирование
- •3. Задания к выполнению работы
- •4. Контрольные вопросы
- •Лабораторная работа № 4 Кодирование внутренних состояний автомата
Лабораторная работа № 4 Кодирование внутренних состояний автомата
Цель работы: изучение способов кодирования внутренних состояний автомата.
Пример 4.1. Выполнить кодирование внутренних состояний частичного автомата (табл.4.1), используя алгоритм единичного кодирования:
Таблица 4.1
Совмещенная таблица переходов и выходов частичного автомата Мили
-
a1
a2
a3
a4
a5
a6
a7
z1
1, w1
-
4, -
4, w2
1, -
-
1, -
z2
2, -
2, w2
-
-
-
7, -
7, w2
z3
6, -
3, -
3, w1
5, -
5, w2
6, w2
-
Решение.
Кодирование - это сопоставление каждому внутреннему состоянию автомата набора значений переменных, описывающих состояния элементов памяти.
Единичное кодирование – кодирование, при котором наиболее связанные состояния кодируются минимальным числом единиц.
Для кодирования используется граф автомата или таблицы переходов и выходов автомата. В данном примере ограничимся использованием для кодирования табл. 4.1, используя следующий алгоритм.
1. Каждому состоянию автомата ставится в соответствие целое числоNm , которое равно количеству дуг на графе, входящих в данное состояние .
Поскольку мы используем таблицу, то для определения числа достаточно по табл.4.1. определить количество состояний имеющихся в этой таблице. Так, например, состояниевстречается три раза по входному сигналу, следовательно, для данного состояния число равно 3. Состояние в таблице встречается два раза, следовательно, . Этот подсчет продолжим для всех встречающихся в таблице 4.1 состояний и получим таблицу 4.2.
Таблица 4.2.
Состояния частичного автомата
и соответствующие им числа
-
Состояние
Число
2. Числа , упорядочиваются по убыванию.
Видим, что в нашем случае числа уже упорядочены, поэтому нет необходимости строить новую таблицу.
3. Состояние с наибольшим Nm , у нас это состояние , кодируется комбинацией изN нулей: 00...00 , определяемых по соотношению
N =|log2M|,
где М - число состояний автомата,
- операция взятия наибольшего ближайшего целого.
В примере M=7 и так как ,то, округляя до ближайшего целого, получим . Таким образом, для кодирования состояний достаточно кодовой комбинации из трех нулей . Тогда код состояниябудет 0 0 0.
4. Все остальные состояния в соответствии со значением Nm кодируются путем прибавления одной единицы в кодовую комбинацию из нулей.
5. Если не хватает одной единицы, то добавляется вторая и т.д. до тех пор, пока не будут закодированы все состояния.
В итоге получим следующую таблицу (табл.4.3).
Таким образом, при данном способе кодирования наиболее связанные состояния кодируются минимальным числом единиц.
Таблица 4.3.
Состояния автомата и их кодовые комбинации,
полученные с использованием алгоритма единичного кодирования
-
Состояние
Число
Код состояния
0 0 0
0 0 1
0 1 0
1 0 0
0 1 1
1 0 1
1 1 0
.