
Узагальнена структурна схема кінцевого автомата
Кінцевий автомат - пристрій з пам'яттю, вихідні сигнали якого залежать від передісторії надходження вхідних сигналів.
Рис.1.
Узагальнена структурна схема автомата наведена на рис. 1, де позначені наступні сигнали:
X[N..l] - вхідні сигнали;
Y[k..l] - вихідні сигнали;
Q[K..1] - розряди пам'яті, які визначають стан автомата;
D[n..l] - дані для запису на згадку;
М - пам'ять автомата (набір тригерів);
КС1 - комбінаційна схема, що забезпечує формування даних для запису на згадку;
КС2 - комбінаційна схема, що породжує вихідні сигнали.
Дана структура є різновидом узагальненої схеми цифрового автомата, запропонованої Хаффманом. Відмінність складається лише в тім, що комбінаційно-логічний пристрій (КЛП) розбито на два самостійних блоки, що виконує функції формування сигналів керування елементом пам'яті й вихідних сигналів.
Синхронний кінцевий автомат (СКА) - автомат, пам'ять якого реалізована на синхронних тригерах. СКА переходить зі стану в стан тільки при активному перепаді (фронту або спаду) тактового сигналу синхронізуючі тригери в його блоці пам'яті.
Залежно від способу формування вихідних сигналів виділяють два класи кінцевих автоматів:
Автомат Мура - автомат, вихідні сигнали в якому залежать тільки від поточного стану автомата.
Автомат Милі - автомат, вихідні сигнали в якому залежать як від поточного стану автомата, так і від поточних значень вхідних сигналів (пунктирна лінія на рис. 3.31).
Число тригерів (nт,), використовуваних для реалізації модуля пам'яті автомата, визначається числом станів автомата (Nс.) і способом їхнього кодування:
Двійкове кодування (Binary coding). При цьому nт=]log2Nc[, де ] [ — операція округлення до найближчого більшого цілого (nт=CEIL(log2Nc),).
Кодування за принципом: один стан — один тригер (One Hot State). При цьому nт = Nс..
Для НВІС програмувальної логіки сімейств МАХ, що містять відносно невелике число макроосередків, у кожній з яких є багатовходова програмувальна матриця «И», матриця «АБО» і тригер, прийнятні обидва способи кодування. Тому для таких НВІС пакет MAX+plus II за допомогою опції One Hot State Machine Encoding (меню Assign → Global Project Logic Synthesis) дозволяє вибирати спосіб кодування (за замовчуванням застосовується двійкове кодування).
Для НВІС програмувальної логіки сімейств FLEX, що містять багато логічних елементів, у кожному з яких є чотиривходова таблиця перекодувань і тригер, оптимальним є кодування за принципом: один стан - один тригер. При цьому істотно спрощується комбінаційна схема КС1. Тому для НВІС сімейств FLFX у пакеті MAX+plus II завжди застосовується, даний спосіб кодування станів.
Використання мови AHDL для опису алгоритму роботи автомата дозволяє автоматизувати процедуру синтезу, включаючи вибір числа розрядів пам'яті й кодування станів автомата.
Задання кінцевого автомата
У мові AHDL кінцевий автомат - це змінна. Для її задання в розділі змінних (Variable Section) використовується наступна конструкція:
__machine_name : MACHINE OF BITS (__state_bit, __state_bit)
WITH STATES (
state_name =__state_value,
state name =__state value,
state_name =__state_value);
Вона в загальному випадку визначає:
ім'я змінної - символічне ім'я автомата (machine_name);
число розрядів пам'яті автомата й символічне ім'я кожного з розрядів (OF BITS (__state_bit, __state_bit));
символічні імена станів автомата і їхні коди (WITH STATES (state_name = state_value, state_name = state_value)).
Указувати число розрядів пам'яті і їхніх символічних імен, а також коди станів автомата необов'язково. Тому в найпростішому випадку для задання кінцевого автомата використовується наступна конструкція:
__macnine_name : MACHINE
WITH STATES ( state_name, __state_name, __state_name);
У цьому випадку компілятор, оптимізуючи комбінаційні схеми КС1 і КС2, самостійно вибере як розрядність блоку пам'яті, так і коди станів автомата.
У рамках мови AHDL кінцевий автомат, а, отже, і змінна що його позначає, має три керуючих входу:
CLK - вхід тактового сигналу (активний - фронт);
Reset - вхід асинхронного скидання автомата (активний рівень - логічна одиниця);
ENA - вхід дозволу роботи автомата (активний рівень - логічна одиниця).
Обов'язкове використання тільки входу CLK. Якщо входи Reset і/або ENA не використаються, то на них автоматично подаються логічні рівні, що не перешкоджають нормальній роботі автомата.