logo search
Ответы на вопросы экз

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

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

При функционировании автомата могут появиться так называемые состязания. Явление состязаний возникает вследствие того, что элементы памяти имеют различные, хотя и достаточно близкие, времена срабатывания. Кроме того, различны также задержки сигналов возбуждения, поступающих по логическим цепям неодинаковой длины td2> td1 (рис. 5.16).

Рисунок 5.16 – Фрагмент схемы автомата

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

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

Рисунок 5.17 – Развязывание пар кодов

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

Наилучшим выходом из такого рода проблемы является использование динамически управляемых триггеров. Но и при этом необходимо правильно рассчитать частоту (период) синхросигнала T. Период синхросигнала должен быть больше, чем задержка самой длинной цепи в схеме (сюда входят и задержки элементов, и задержки распространения сигналов по линиям связи), T>td2 рис. 5.18.

Рисунок 5.18 – Выбор периода синхросигнала T

Современные САПР позволяют производить такие расчеты в автоматизированном режиме.

Кодирование состояний автоматов, реализуемых на ПЛИС

Если реализацию КЧ выполнять на ПЛИС, то в этом случае систему булевых функций следует представить в виде кратчайшей дизъюнктивной нормальной форме (КДНФ), так как площадь кристалла для реализации матрицы в этом случае будет минимальна. Следует отметить, что особенности применяемых матриц иногда требуют использования единичного позиционного кодирования для кодирования ВС (одна единица в n возможных позициях).

Например, для автомата на рис. 5.15 коды состояний могут иметь вид:

К(а5) = 10000;

К(а4) = 01000;

К(а3) = 00100;

К(а2) = 00010;

К(а1) = 00001.

При создании проектов для FPGA следует помнить, что каждая логическая ячейка содержит два триггера. Это значит, что минимизация количества используемых триггеров не имеет значения. Вместо этого нужно попытаться сократить общее число используемых ячеек и соединений между ними. Для того чтобы проектировать более быстрые схемы, следует уменьшать число ячеек, необходимых для реализации каждого уравнения. Применение унарного кодирования часто помогает этому. Это будет проиллюстрировано в разделе 5.7. Следует напомнить, что в отличие от заказных схем, программируемые схемы имеют гораздо меньшее быстродействие. Поэтому при проектировании схем на базе программируемых кристаллов борьба за большее быстродействие является более актуальной, чем борьба за минимальные аппаратурные затраты.

Для реализации уравнения с меньшим числом переменных обычно используется небольшое число логических ячеек. Если, например, функция возбуждения триггеров содержит 4 переменных, для ее реализации понадобится ровно 1 LUT. Если содержит, например 6 переменных, необходимо будет 2 LUT, соединенных каскадно. Чем больше LUT в каскаде, тем больше задержка распространения сигнала и тем меньше быстродействие устройства.