Кодирование состояний синхронного автомата — КиберПедия 

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

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

2018-01-29 369
Кодирование состояний синхронного автомата 0.00 из 5.00 0 оценок
Заказать работу

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

Сложность схемы оценивается числом логических элементов или суммарным числом входов ее логических элементов.

Задача кодирования состоит в присвоение каждому состоянию уникального двоичного кода. Число разрядов этого кода q зависит от числа состояний автомата k и находится в интервале:

┐log2k┌ ≤ q ≤ k, где ┐p┌ - ближайшее целое не меньшее p.

Существуют различные способы кодирования состояний и выбор этого способа существенно влияет на на сложность автомата. Способы кодирования различаются по числу используемых элементов памяти (числу разрядов кода).

Способ кодирования с минимальным числом элементов памяти учитывающий “соседства” состояний на графе автомата.

Два состояния автомата s’ и s” называются “соседями I рода ”, если под воздействием хотя бы одного и того же входного символа из них осуществляется переход в одно и то же состояние.

Два состояния автомата si и sj называются “соседями II рода”, если в эти состояния осуществляется переход под воздействием хотя бы одного и того же входного символов из состояний, которые являются “соседями I рода”.

Суть способа кодирования состоит в том, что состояния являющиеся соседями I рода и II рода кодируются соседними кодами.

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

Фрагмент графа с состояниями, являющиеся соседями I рода и II рода представлен на рис. 4.18.

s
si
sk
s
sj
x
x
 
соседи II рода  
соседи II рода  
I рода  
соседи I рода  
соседи I рода  
0 0 0   y1y2y3 1 0 0
0 1 0
0 0 1
0 1 1 состояниям, являющихся соседями I рода

Рис. 4.18.

 

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

Пусть во фрагменте графа (рис. 4.18) состояния s и s , являющиеся соседями I рода закодированы следующими соседними кодами:
s - 000 и s – 100, а состояние sk – 001, тогда если в качестве элемента памяти задан D-триггер, функция возбуждения третьего триггера для перехода из состояний s ’. и s в состояние sk:

y D3 = x 1 2 3 V x y1 2 3 = x 2 3.

Первая конъюнкция определяет переход из состояния s в состояние sk, а вторая из состояния s в состояние sk, устанавливая третий триггер в единицу.

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

В этом же фрагменте состояния si и sj, являющиеся соседями II рода закодированы следующими соседними кодами: si - 010 и sj – 011, тогда функции возбуждения второго и третьего триггера:

y D2 = 1 2 3 V y1 2 3 = 2 3;

y D3 = x 2 3 V y1 2 3

Первая конъюнкция функции y D2 определяет переход из состояния s в состояние si, а вторая из состояния s в состояние sj, устанавливая второй триггер в единицу. Вторая конъюнкция функции y D3 определяет переход из состояния s в состояние sj, устанавливая третий триггер в единицу.

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

Обычно не хватает соседних кодов при назначении их соседям I и II рода и поэтому соседние коды надо в первую очередь назначать состояниям, являющихся соседями I рода, а затем назначать соседние коды состояниям, являющихся соседями II рода. Если соседних кодов не хватает уже для соседей I рода, то в первую очередь их надо назначать состояниям, у которых “степень соседства” больше. Под “степенью соседства” понимается количество одинаковых входных символов, по которым осуществляется переход в одно и то же состояние.

Пример кодирования состояний с учетом соседства состояний.

Пусть задана таблица переходов автомата (табл. 4.15).

Определение состояний, являющихся соседями I и II рода кодов удобно осуществлять по инверсной таблице переходов. Эта таблица отличается от известной (прямой) таблицы переходов тем, что в ее клетках указываются состояния, из которых осуществляется переход по входному символу pj в состояние si, которым отмечена строка (табл. 4.16).


Таблица 4.15

 

pi sj    
s0 s1 s2
s1 s3 s2
s2 s4 s0
s3 s2 s1
s4 s4 s0

 

Таблица 4.16

 

    pi sj
--- s2, s4 s0
s0 s3 s1
s3 s0, s1 s2
s1 --- s3
s2, s4 --- s4

 


В инверсной таблице переходов состояния, являющиеся соседями I рода, расположены в одной клетке это: s0, s1 и s2, s4. Состояния, являющиеся соседями II рода, это те состояния в которые существуют переход из состояний, являющиеся соседями I рода, расположенных в одном столбце. В примере это состояния s1 и s3, потому что в s1 существует переход по 0 из состояния s0, а в s3 существует переход по 0 из состояния s1, являющиеся соседями I рода.

Для назначения соседних кодов найденным соседям I рода: s0, s1 и
s2, s4, а также соседям II рода: s1 и s3 удобно использовать таблицу клетки которой закодированы зеркальным кодом Грея, как в карте Карно, но в клетках указываются символы состояний. Состояния, являющихся соседями I и II рода, записываются в соседних клетках этой таблицы (табл. 4.17).


Таблица 4.17

y3

         
       
  s2 s4 s0 s1

y1

        s3
           

y2

 

Таблица 4.18

 

si y1 y2 y3
s0      
s1      
s2      
s3      
s4      

 


Результат кодирования представлен в кодовой таблице (табл. 4.18).

 


 

Способ кодирования минимизирующий число переключений элементов памяти.

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

Расстояние между кодами ki и kJ по Хэмминингу – это число разрядов, в которых значения соответствующих разрядов не совпадают. Для вычисления этого расстояния используется операция суммирования по модулю два. Пусть ki = 11001, kJ = 01100 тогда:

ki 11001 kJ 01100  


+

 

 


Число единиц в результате сложения по модулю два: dij = 3.

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

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

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

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

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

4. Из множества M произвольно выбирается пара, в которой одно состояние уже закодировано, а другое нет. Незакодированное состояние, обозначается sq.

5. Из множества M выбираются пары, в которые входит состояние sq. Подмножество таких пар обозначается Mq. Множество уже закодированные состояний из Mq, обозначается Bq;

6. Если Bq = , то переход пункту 4;

7. Для любого состояния из Bq строится множество кодов Cdq, находящихся на расстоянии d от кода состояния Sq, где вначале d = 1. Если таких, то d увеличивается на 1 и так до тех пор, пока не будет найдено множество кодов находящихся на минимальном расстоянии;

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

 

Пример кодирования состояний автомата (рис. 4.19):

 

s1
s2
s3
s4
s5
 
 
 
 
 
 
 
 

 

Рис. 4.19

 

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

2) Выбираем {1,2} s1 = 000, s2 = 001.

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

4) Выбираем {2,4} s4, q=4.

5) M4 = {(2,4),(4,3),(4,5)}, B4 = {2}.

7) Для кода 001 - C14 = {101,011}.

8) 101 + 001 = 100 d101 = 1,

011 + 001 = 010 d011 = 1, s4 = 101.

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

4) Выбираем {2,5} s5, q=5.

5) M5 = {(2,5), (4,5), (5,1)}, B5 = {2,4,1}.

7) Для кода 001 - C15 = {011}.

Для кода 101 - C15 = {(111),(100)}.

Для кода 000 - C15 = {(100),(010)}.

8) 011 + 001 = 010, 011 + 101 = 110, 011 + 000 = 110 d011 = 5.

111 + 001 = 110, 111 + 101 = 010, 111 + 000 = 111 d111 = 6.

100 + 001 = 101, 100 + 101 = 001, 100 + 000 = 100 d100 =4.

010 + 001 = 011, 010 + 101 = 111, 010 + 000 = 010 d010 = 6.

Минимум d100=4. s5 = 100.

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

4) Выбираем {3,2} s3, q=3.

5) M3 = {(3,2),(4,3}, B3 = {2,4}.

Для кода 001 - C13 = {011}.

Для кода 101 - C13 = {111}

8) 011 + 001 = 010, 011 + 101 = 110 d011 = 3.

111 + 001 = 110, 111 + 101 = 010 d111 = 3, s3 = 011

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

Результат: s1 = 000, s2 = 001, s3 = 011, s4 = 101, s5 = 100.

 

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

При данном способе кодирования используется унитарный код. Унитарным называется код, который содержит только одну единицу, а остальные нули. Это способ кодирования с максимальным числом разрядов. Число разрядов кода равно числу состояний автомата, т.е. состояние si кодируется кодом, содержащим единицу в i – том разряде.

Пусть задан фрагмент графа (рис. 4.20), в котором состояние s1 кодируется кодом 100, а s2 – кодом 010. Если в качестве элемента памяти задан D-триггер, то для реализации этого перехода функция возбуждения второго триггера: y D2 = y1 2 3.

s1
s2
x
 
 
y1y2y3

Рис. 4.20

В конъюнкции обеспечивающей этот переход переменные y2 и y3 являются несущественными, так как признаком того, что автомат находится в состоянии s1, является единица в первом разряде, поэтому эту конъюнкцию можно упростить: y D2 = y1. Это является достоинством этого способа кодирования, так как позволяет сразу по графу автомата строить функция возбуждения, которые обычно не требуется минимизировать, но иногда можно упростить.

Пример универсального способа кодирования (pис. 4.21):

s1
s2
s4
s3
s5
x
 
 
 
 
 
 
 
0 1 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 0 0 1
y1y2y3y4y5 1 0 0 0 0
 
 
 
 
 
 
 
 
 
 

Рис. 4.21

Если в качестве элемента памяти задан D-триггер, то при построении его функций возбуждения необходимо обеспечить его переходы: 0 1 и 1 1, которые могут быть реализованы поступлением единицы на его вход. Например, для реализации первого перехода (pис. 4.21) из состояния: s1 в состояние s2, необходимо второй триггер установить в единицу, для этого в функцию возбуждения второго триггера надо включить конъюнкцию, которая имеет значение единицы, когда автомат находится в состояние s1 и x = 0. Признаком того, что автомат находится в состоянии s1, является то, что y1 = 1, поэтому эта конъюнкция имеет вид: y1. Последовательно просматривая все переходы в графе (pис. 4.21), формируются конъюнкции, которые включаются в соответствующие функции возбуждения:

y D1 = x y5 V x y3;

 
 


y D2 = y1;

 
 


y D3 = x y1 V x y2 V x y4;

 
 
 


 
 
y D4 = y2 V y4;

 

 
y D5 = y3.

 

Под каждой конъюнкцией указан номер перехода в графе (pис. 4.21), который она обеспечивает.

Если в качестве элемента памяти задан RS-триггер, то при построении его функций возбуждения необходимо обеспечить его переходы: 0 1 и 1 0. Переход 0 1 реализуется поступлением единицы на его вход S. Переход 1 0 реализуется поступлением единицы на его вход R. Например, для реализации первого перехода (pис. 4.21) из состояния: s1 в состояние s2, необходимо второй триггер установить в единицу, для этого в функцию возбуждения входа S второго триггера надо включить конъюнкцию, которая имеет значение единицы, когда автомат находится в состояние s1 и x = 0, одновременно необходимо первый триггер сбросить в ноль, для этого в функцию возбуждения входа R первого триггера надо включить ту же самую конъюнкцию. Признаком того, что автомат находится в состоянии s1, является то, что y1 = 1, поэтому эта конъюнкция имеет вид: y1. Последовательно просматривая все переходы в графе (pис. 4.21), формируются конъюнкции, которые включаются в соответствующие функции возбуждения:


 

y S1 = x y5 V x y3;

 
 


y S2 = y1;

 


y S3 = x y1 V x y2 V x y4;

 
 
 


y S4 = y2;

 


y S5 = y3;

 

 


y R1 = y1 V x y1 = y1;

 
 


y R2 = y2 V x y2 = y2;

 
 


y R3 = x y3 V y3;

 
 


 
y R4 = x y4;

 

y R5 = x y5.

 


 



Поделиться с друзьями:

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.098 с.