- •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
Алгоритм 1
Для каждого внутреннего состояния ai, ai € A, согласно (1) определяется множество U(ai).
Обеспечивается выполнение условий (2). Последовательно просматриваются состояния множества A. Если для некоторого состояния ai, ai € A, нарушено условие (2), то выполняется расщепление состояния ai.
Для
этого вводится H = |U(ai)|
новых состояний ai1,...,aiH.
Каждому состоянию aih,
h = ¯1,H, ставится в соответствие одно и
только одно условие X(aih)
множества U(ai).
Для каждого состояния aih,
h = ¯1,H, определяются множества P(aih)
и C(aih)
следующим образом: P(aih)
:= P(ai),
а C(aih)
образуется из всех переходов, которые
осуществляются при выполнении условия
X(aih).
Полагается: A := A \ {ai}
и A := A
{ai1,...,aiH}.
Пункт 2 выполняется для всех состояний ai множества А.
Вводятся дополнительные внутренние переменные для обеспечения ортогональности кодов внутренних состояний автомата класса E. Для этого строится троичная матрица W. Строки матрицы соответствуют внутренним состояниям множества A, а столбцы - переменным g1,...,gL. На пересечении строки i и столбца j матрицы W ставится единица, если входная переменная xj входит в условие X(ai) в прямом значении; ноль - в инверсном; и неопредел╦нное значение (дефис), если переменная xj не входит в условие X(ai).
Решается следующая задача: добавить в матрицу W минимальное число столбцов, соответствующих дополнительным переменным e1,...,eR, и закодировать строки матрицы W двоичными значениями переменных e1,...,eR таким образом, чтобы все строки матрицы W были взаимно ортогональны. Алгоритм решения последней задачи приводится в [1].
Определяются коды внутренних состояний автомата класса E. При этом код K(ai) каждого состояния ai, ai € A, будет определяться содержимым соответствующей строки матрицы W.
Строится структурная таблица переходов конечного автомата, составляются логические уравнения функций переходов и выходов.
Конец.
Пример 1. В качестве примера рассмотрим синтез автомата Мили класса E, таблица переходов которого представлена в табл. 1. Отметим, что поскольку |A| = 5, то при синтезе автомата Мили класса A потребуется не менее тр╦х элементов памяти для хранения кодов внутренних состояний. Множества U(ai), ai € A, сформированные в результате выполнения пункта 1, приведены в табл. 2. Поскольку для состояний a4 и a5 нарушены условия (2), то согласно пункту 2 выполняется их расщепление, прич╦м состояние a4 расщепляется на два состояния, состояние a5 - на три. Построенная в пункте 3 матрица W показана в табл. 3 (первые четыре столбца). Для обеспечения ортогональности кодов внутренних состояний конечного автомата введены две дополнительные переменные e1 и e2, а также выполнено кодирование строк таблицы W (пятый и шестой столбец табл. 3). В результате определены следующие коды внутренних состояний:
K(a1) = ¯g4·¯e1·¯e2; K(a2) = g1·¯e1·e2; K(a3) = ¯g1·¯e1·e2; K(a41) = g1·¯g2·e1·¯e2; K(a4²) = g3·e1·e2; K(a51) = g1·g1·e1·¯e2; K(a5²) = ¯g3·e1·e2; K(a5³) = g4·¯e1·¯e2.
Таблица 1. Исходная таблица переходов автомата Мили
am |
X(amas) |
as |
Y(amas) |
a1 |
x1 ¯x1 |
a2 a3 |
y3,y4 y3,y4 |
a2 |
x1 x2 x1 ¯x2 ¯x1 |
a5 a4 a3 |
y4 y3 √ |
a3 |
x3 ¯x3 |
a4 a5 |
y3 y4 |
a4 |
x4 ¯x4 |
a5 a1 |
y2 √ |
a5 |
x4 ¯x4 |
a5 a1 |
y1 √ |
Таблица 2. Множества U(am)
am |
U(am) |
a1 |
¯x4 |
a2 |
x1 |
a3 |
¯x1 |
a4 |
x1 ¯x2; x3 |
a5 |
x1 x2; x3; x4 |
Таблица 3. Матрица W
|
g1 |
g2 |
g3 |
g4 |
e1 |
e2 |
a1 |
- |
- |
- |
0 |
0 |
0 |
a2 |
1 |
- |
- |
- |
0 |
1 |
a3 |
0 |
- |
- |
- |
0 |
1 |
a41 |
1 |
0 |
- |
- |
1 |
0 |
a4² |
- |
- |
1 |
- |
1 |
1 |
a51 |
1 |
1 |
- |
- |
1 |
0 |
a5² |
- |
- |
0 |
- |
1 |
1 |
a5³ |
- |
- |
- |
1 |
0 |
0 |
Структурная таблица переходов представлена в табл. 4, на основании которой составляются следующие логические уравнения функций переходов и выходов:
d1 = g1·e1·e2·x1·x2 + g1·e1·e2·x1·x2 + g1·e1·e2; d2 = ¯g4·¯e1·¯e2 + g1·¯e1·e2·¯x1 + ¯g1·¯e1·e2; y1 = g1·g2·e1·¯e2·x4 + ¯g3·e1·e2·x4 + g4·¯e1·¯e2·x4; y2 = g1·¯g2·e1·¯e2¯x4 + g3·e1·e2·x4; y3 = ¯g4·¯e1·¯e2 + g1·e1·e2·x1·¯x2 + ¯g1·¯e1·e2·x3; y4 = ¯g4·¯e1·¯e2 + g1·¯e1·e2·x1·x2 + ¯g1·¯e1·e2·¯x3.
Таблица 4. Структурная таблица переходов автомата класса E
am |
K(am) |
X(am,as) |
as |
K(as) |
Y(am,as) |
D(am,as) |
a1 |
¯g4╥¯e1╥¯e2 |
x1 ¯x1 |
a2 a3 |
g1╥¯e1╥e2 ¯g1╥¯e1╥e2 |
y3,y4 y3,y4 |
d2 d2 |
a2 |
g1╥¯e1╥e2 |
x1 x2 x1 ¯x2 ¯x1 |
a51 a41 a3 |
g1╥g2╥e1╥¯e2 g1╥¯g2╥e1╥¯e2 ¯g1╥¯e1╥e2 |
y4 y3 √ |
d1 d1 d2 |
a3 |
¯g1╥¯e1╥e2 |
x3 ¯x3 |
a4² a5² |
g3╥e1╥e2¯g3╥e1╥e2 |
y3 y4 |
d1,d2 d1,d2 |
a41 |
g1╥¯g2╥e1╥¯e2 |
x4 ¯x4 |
a5³ a1 |
g4╥¯e1╥¯e2 ¯g4╥¯e1╥¯e2 |
y2 √ |
- - |
a4² |
g3╥e1╥e2 |
x4 ¯x4 |
a5³ a1 |
g4╥¯e1╥¯e2 ¯g4╥¯e1╥¯e2 |
y2 √ |
- - |
a51 |
g1╥g2╥e1╥¯e2 |
x4 ¯x4 |
a5³ a1 |
g4╥¯e1╥¯e2 ¯g4╥¯e1╥¯e2 |
y1 √ |
- - |
a5² |
¯g3╥e1╥e2 |
x4 ¯x4 |
a5³ a1 |
g4╥¯e1╥¯e2 ¯g4╥¯e1╥¯e2 |
y1 √ |
- - |
a5³ |
g4╥¯e1╥¯e2 |
x4 ¯x4 |
a5³ a1 |
g4╥¯e1╥¯e2 ¯g4╥¯e1╥¯e2 |
y1 √ |
- - |
Окончательная реализация конечного автомата класса E показана на рис. 2.
Рисунок 2. Реализация на ПЛИС автомата класса E
Отметим, что в данном примере при синтезе автомата класса E, по сравнению с автоматом класса A, удалось на единицу сократить число макроячеек ПЛИС, необходимых для построения памяти конечного автомата.
