- •3.2. Использование чисел и констант в языке ahdl
- •3.2.1 Использование чисел
- •3.2.2. Использование констант
- •3.4. Последовательностная логика
- •3.4.1. Объявление регистров
- •3.4.2. Объявление регистровых выходов
- •3.4.3. Создание счетчиков
- •3.5. Цифровые автоматы с памятью (statemashine)
- •3.5.1. Реализация цифровых автоматов (statemachine)
- •3.5.2. Установка сигналов Clock, Reset и Enable
- •3.5.3. Задание выходных значений для состояний
- •3.5.4. Задание переходов между состояниями
- •3.5.5. Присвоение битов и значений в цифровом автомате
- •3.5.6. Цифровоые автоматы с синхронными выходами
- •3.5.7. Цифровые автоматы с асинхронными выходами
- •3.5.8. Восстановление после неправильных состояний
- •3.6. Реализация иерархического проекта
- •3.6.2. Создание и применение пользовательских макрофункций
- •3.6.3. Определение пользовательской макрофункции
- •3.6.4. Импорт и экспорт цифровых автоматов (statemachine)
- •Использование входных буферов плис в качестве элементов памяти конечных автоматов
- •Введение
- •Структуры конечных автоматов классов e и f
- •Синтез конечных автоматов класса e
- •Алгоритм 1
- •Синтез конечных автоматов класса f
- •Программная реализация методов синтеза автоматов классов e и f
- •Результаты экспериментальных исследований методов синтеза автоматов классов e и f
- •Вопрос3.2
- •Последовательный интерфейс spi
- •1 Описание интерфейса i2c
- •Вопрос 3.3Интерфейс Avalon
Синтез конечных автоматов класса e
Пусть
A - множество всех внутренних состояний
конечного автомата. Определим множество
AE,
AE
A,
состояний автомата класса E, то есть
множество состояний, коды которых
определяются входными наборами. Пусть,
как и прежде, конечный автомат задан
таблицей переходов, столбцы которой
имеют обозначения am,
as,
X(am,as)
и Y(am,as).
Обозначим через U(ai)
множество всех условий переходов в
состояние ai,
ai
€ A:
U(ai) = {X(am,ai) | am € B(ai)}, (1)
где B(ai) - множество состояний, переходы из которых оканчиваются в состоянии ai. Обычно при реализации конечных автоматов на ПЛИС условие X(am,as) перехода автомата из состояния am в состояние as представляет собой некоторую элементарную конъюнкцию входных переменных. Однако в общем случае в качестве условия X(am,as) может выступать любая логическая функция, единичное значение которой вызывает переход автомата из состояния am в состояние as.
Состояние ai, ai € A, является состоянием автомата класса E, то есть ai € AE, если выполняются условия:
|U(ai)| = 1, (2)
и
U(ai)
U(aj)
=
(3)
при
i
j
для всех aj
€ A.
Выполнение (2) обеспечивает осуществление всех переходов в состояние ai по одному и тому же условию перехода (то есть состояние ai имеет только один код), а выполнение (3) обеспечивает то, что условия переходов в состояние ai не вызывают переходов в другие состояния автомата (то есть состояния ai и aj имеют различные коды).
Условия (2) выполняются пут╦м расщепления состояний. Пусть, например, для некоторого состояния ai, ai € A, имеет место |U(ai)| = H > 1. Можно расщепить состояние ai на состояния ai1,...,aiH таким образом, чтобы переходы в каждое состояние aih определялись только одним условием переходов, то есть выполнялось |U(aih)| = 1, h = ¯1,H. Теперь вместо состояния ai имеем H состояний, для которых выполняются условия (2). Выполнение условий (3) осуществляется пут╦м введения дополнительных переменных обратных связей и соответствующих им элементов памяти для различия кодов внутренних состояний автомата.
Условия (2) и (3) являются необходимыми, но не достаточными для построения конечного автомата класса E. Дело в том, что для детерминированности поведения конечного автомата все коды его внутренних состояний должны быть взаимно ортогональны. Однако однозначное соответствие различных входных наборов различным внутренним состояниям конечного автомата, то есть выполнение условия (3), ещ╦ не обеспечивает ортогональность кодов. Для сравнения, при синтезе автоматов классов А и В различные выходные наборы всегда ортогональны, так как это двоичные наборы. Входные же наборы представляют собой троичные векторы, прич╦мдоопределение безразличных значений входных переменных в общем случае не допустимо. Поэтому обязательным этапом синтеза конечных автоматов класса E является обеспечение ортогональности наборов входных переменных пут╦м их доопределения с помощью дополнительных внутренних переменных.
Суть метода синтеза конечного автомата класса E заключается в расщеплении всех состояний, для которых не выполняются условия (2), и введении внутренних переменных для обеспечения ортогональности кодов внутренних состояний. Пусть P(ai) - множество переходов конечного автомата из состояния ai; C(ai) - множество переходов конечного автомата, которые оканчиваются в состоянии ai, ai € A; X(ai) - некоторое условие перехода в состояние ai, X(ai) € U(ai). Тогда алгоритм синтеза конечных автоматов класса E имеет следующий вид.
