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

Например, код строки 1, т. е. состояние 1 будет иметь код 0000, так как в столбце а1 состояние 1 принадлежит классу l1 и кодируется значением У1У2=00, а в столбце а2 – состояние 1 принадлежит классу l5 и кодируется значением У3У4=00. Поэтому общий код строки 1 равен 0000.

Результат кодирования строк приведен в табл. 6.


Рассмотрим переход из состояния 2 (0101) в состояние 4 (1001). Так как переход осуществляется в столбце а2 (внутри класса l6), то разделяющими переменными являются у3, у4 и они не меняют своего значения во время данного перехода, которое будет определяться только значением разделяющих переменных, т. е. Конъюнкцией  (свойство 4).

Переменные у1 и у2 являются не разделяющими и дают возможность различить состояния, входящие в один l - класс. (В данном примере различить состояния 2 и 4). Видно, что во время данного перехода не разделяющие переменные у1 и у2 меняют свое значение , т. е. между ними возможны состязания, но ни одна из этих переменных не входит в конъюнкцию f и, следовательно, состязания между ними не повлияют на работу схемы.

Обеспечение свойства 4 достигается на этапе до определения внутренних состояний, что будет показано ниже. На данной идее основан метод кодирования состояний по столбцам ТП. Он состоит из следующих этапов.

I.   Для каждого столбца аj выделяются разделяющие переменные. Их число равно ] log2 n j [. Общее число элементов памяти, необходимое для построения схемы, равно:

q=>] log2 n j [ ,

jЄR

где R –  множество индексов столбцов ТП.

В нашем примере q=N1+N2=4. Разделяющие переменные для столбца а1 – у1, у2, а для столбца а2 – у3 и у4.

II.  l - классы столбца аj кодируются произвольно кодовыми словами, длиной   ] log2 n j [.

Для столбца а1 приведен вариант кодирования на рис. 3, для а2 на рис. 4.

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

III.  Составляется таблица кодирования строк ТП. В качестве исходной используется таблица 6.

IV.  Составляется кодированная ТП (табл.7). Общее число состояний в


кодированной ТП равно 2q .Строки, соответствующие заданной ТП (см. табл. 5), являются основными и кодируются кодовыми словами на основании таблицы кодирования (см. табл. 6). Остальные строки кодируются неиспользованными кодовыми словами.

В табл. 7 состояния 1-7 считаются основными, а состояние 8–16 -  неосновными. Кодированная ТП заполняется следующим образом. Если в клетке ТП на пересечении строки, соответствующей основному состоянию S1,  и столбца аj проставлено состояние Sj, то в нее заносится код состояния Sj (i и j – индексы основных состояний). Например, в клетке (а1,0000) должен быть проставлен код состояния   1 – 0000; в клетке (а2,0101) – код состояния 4 – 1001 и т. д.

Не основные состояния доопределяются с учетом обеспечения свойства 4.

Рассмотрим задачу до определения на следующем примере. Пусть задан переход из состояния 2 в состояние 4 . Он может произойти двумя путями (рис. 5, а, б ). Разделяющие переменные у3 и у4 не изменяются, поэтому в клетках (а2,0001) и (а2,1101) надо проставить код устойчивого состояния 4 – 1001, в котором значения разделяющих переменных совпадают с их значением в кодах строк этих состояний.

Таким образом, до определение в клетке (аj,Si) зависит от значений разделяющих переменных в коде строки Si.

Будем использовать два правила до определения.

Правило 1. Если в коде строки Si значение разделяющих переменных по столбцу аj совпадает с их значением в коде одного из устойчивых состояний этого столбца, то в клетке (аj,Si) записывается код этого устойчивого состояния.