Главная страница  Автономные управляющие системы 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [ 22 ] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

3.5.1. Реализация цифровых автоматов (state machine)

Цифровой автомат задают в секции VARIABLE путем объявления имени цифрового автомата, его состояний и, возможно, выходных битов

Ниже приведен файл simple.tdf, который реализует функцию D-триггера

SUBDESIGN simple (

elk . INPUT; reset : INPUT; d : INPUT;

q : OUTPUT,

VARIABLE

SS MACHINE И1ТН STATES (sO, Si);

BEGIN

SS elk = elk,

SS reset = reset;

CASE SS IS

WHEN sO =>

q = GND; IF d THEN

SS = si;

END IF, WHEN si =>

q = VCC, IF <d THEN

SS = sO,

END IF;

END CASE;

END;

В данном файле в секции VARIABLE объявлен цифровой автомат (state machine) ss Состояния автомата определяются как sO и s1 Биты состояний не определены

3.5.2. Установка сигналов Clock, Reset и Enable

Сигналы Clock, Reset и Enable управляют триггерами регистра состояний в цифровом автомате Эти сигналы задаются булевыми уравнениями управления в логической секции

В предыдущем примере (файл simple.tdf) синхросигнал цифрового автомата (Clock) формируется входом elk Асинхронный сигнал сброса цифрового автомата (Reset) формируется входом reset, имеющим высокий активный уровень Для подключения сигнала отпирания (Enable) нужно добавить в данный файл проекта строку епа INPUT, в секцию SUBDESIGN, а также добавить в логическую секцию булево уравнение ss епа = епа,

3.5.3. Задание выходных значений для состояний

Для задания выходных значений можно использовать операторы IF и CASE В приведенном выше примере (файл simple.tdf) значение выхода q устанавливается равным GND, если цифровой автомат SS находится в состоянии sO, и равным VCC, когда она находится в состоянии s1 Эти присваивания делаются в предложениях WHEN оператора CASE

Выходные значения можно также задавать в таблицах истинности, как будет описано в разделе Присвоение битов и значений в машине состояний

3.5.4. Задание переходов между состояниями

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

В приведенном выше примере (файл simple.tdf) переходы для каждого состояния определены в предложениях WHEN оператора CASE

3.5.5. Присвоение битов и значений в цифровом автомате

Бит состояния - это выход триггера, используемый для хранения одного бита значений цифрового автомата. В большинстве случаев для минимизации логических ресурсов следует предоставить компилятору системы fHAX+PLUS II присвоение битов и значений состояния Однако пользователь может сделать это самостоятельно в объявлении цифрового автомата, если, например, он хочет, чтобы определенные биты были выходами цифрового автомата

Ниже приведен файл stepper.tdf, реализующий функцию контроллера шагового двигателя SUBDESIGN stepper (

elk, reset : INPUT; ccw, ow : INPUT,

phase[3..0] : OUTPUT;

VARIABLE

SS : MACHINE OF BITS (phase[3..0])

WITH STATES (

sO = B 0001 , si = B 0010 , s2 = B 0100 , s3 = B 1000 ), BEGIN

ss elk = elk; ss.reset = reset, TABLE

SS, ccw, ow => ss;

sO, 1, X => S3;

sO, X, 1 => sl,

si, 1, X => sO;

sl, X, 1 => s2;

s2, 1, X => sl;

s2, X, 1 => S3;

s3, 1, X => s2,

s3, X, 1 => sO;

END TABLE; END,

В данном примере выходы phase[3..0], объявленные в секции SUBDESIGN, объявляются также, как биты цифрового автомата ss в объявлении цифрового автомата

3.5.6. Цифровые автоматы с синхронными выходами

Если выходы цифрового автомата зависят только от его состояния, их можно задать в предложении WITH STATES объявления цифрового автомата. Это сделает их менее подверженными ошибкам Кроме того, в некоторых случаях для логических операций потребу- ется меньше логических ячеек

Ниже приведен пример (файл moorel tdf), в котором реализован автомат Мура с четырьмя состояниями



SUBDESIGN moorel (

elk : INPUT;

NODE, BEGIN

ss.clk = elk;

reset : INPUT;

ss.reset =

reset;

у : INPUT;

= DFF(zd

elk, VCC, VCC)

x : OUTPUT;

TABLE

* current

current

next

next *

VARIABLE % current current

% stateinput

state

output

% state output %

=>

ss :MACHINE OF BITS (z)

~>

И1ТН STATES

= 0,

=>

= 1,

=>

= 1,

=>

= 0) ;

=>

BEGIN

=>

ss.clk = elk;

=>

ss.reset = reset,

=>

TABLE

% current current next % % state input state %

=>

=>

=>

=>

=>

=>

=>

=>

=>

END TABLE;

END,

В данном примере состояния определены в объявлении цифрового автомата Переходы между состояниями определены в таблица next state, которая задана в объявлении таблицы истинности В данном примере машина имеет четыре состояния и только один бит состояния Z Компилятор системы MAX+PLUS II автоматически добавляет еще один бит и делает соответствующие присвоения этой синтезированной переменной, для того чтобы получилась машина с четырьмя состояниями Такой цифровой автомат (state machine) требует, по крайней мере, двух битов

Если значения состояний используются как выходы (как в файле mooreLtdf), для проекта потребуется меньше логических ячеек, но, возможно, логические ячейки потребуют больше логики, чтобы возбудить входы триггера В этом случае модуль логического синтезатора компилятора, возможно, не сможет полностью минимизировать автомат

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

Этот альтернативный метод использован в приведенном ниже файле moore2.tdf

SUBDESIGN moore2 (

elk . INPUT, reset : INPUT, у : INPUT; z OUTPUT,

VARIABLE

SS . MACHINE WITH STATES

END TABLE, END,

В данном примере, вместо того чтобы задать выходы присвоением значений состояниям в объявлении цифрового автомата, в объявление таблицы истинности Добавлен один столбец под названием next output (следующий выход) В этом методе для синхронизации выходов используется D-триггер, вызов которого записан с помощью непосредственной ссылки

3.5.7. Цифровые автоматы с асинхронными выходами

В языке AHDL возможна реализация цифрового автомата с асинхронными выходами Выходы такого типа автоматов всегда изменяются, когда изменяются входы, независимо от состояния синхросигнала

В приведенном ниже фале mealy.tdf реализован автомат Мили с четырьмя состояниями и асинхронными выходами SUBDESIGN mealy (

elk INPUT, reset INPUT, у INPUT, z OUTPUT,

VARIABLE SS

BEGIN

MACHINE WITH STATES (sO, si, s2, s3),

ss elk = oik,

ss reset = reset,

TABLE

current current current next %

state input output state % ss, sO, sO, si, si, s2, s2, s3, s3.

=>

=>

=>

->

=>

=>

=>

=>

=>

END TABLE,

END,

(sO, si, s2, S3)



3,5.8. Восстановление после неправильных состояний

Логика, сгенерированная для цифрового автомата компилятором системы MAX+PLUS II, будет работать так, как определено в TDF-файле Однако проекты с использованием цифровых автоматов часто допускают значения битов состояний, которые не присваиваются правильным Состояниям Эти значения с не присвоенными битами состояний называются неправильными состояниями. Проект, который переходит в неправильное состояние, например в результате нарушений временных требований к установке или задержке, может реализовать ошибочные выходы Несмотря на рекомендации фирмы Altera по соблюдению временных требований к установке и задержке, пользователь может сделать восстановление цифрового автомата после неправильного состояния путем принудительного преобразования неправильного состояния к известному правильному в рамках оператора САЗЕ

Для восстановления после неправильных состояний следует поименовать их все для данного автомата Предложение WHEN OTHERS в операторе CASE, которое принудительно преобразует состояния, применяется только к состояниям, которые были объявлены, а не упомянуты в предложении WHEN Данный метод работает, только если все неправильные состояния определены в объявлении цифрового автомата

Для п-битового цифрового автомата существует 2 возможных состояний Поэтому нужно добавить воображаемые имена состояний, чтобы получилось такое их чиспо

Ниже приведен файл reoover.tdf, в котором реализован цифровой автомат, который может восстанавливаться из неправильных состояний

SUBDESIGN recover (

INPUT; INPUT; OUTPUT;

oik go . ok .

VARIABLE sequence

OF BITS (qI2 Idle,

MACHINE

.0]) WITH STATES

three, four, illegall, illegal2, illegalS); BEGIN

sequence.elk = elk; CASE sequence IS WHEN Idle => IF go THEN

sequence = one; END IF; WHEN one =>

sequence = two, WHEN two =>

sequence = three; WHEN three =>

sequence = four, WHEN OTHERS =>

sequence = idle,

two,

END CASE;

ok = (sequence = four); END;

В данном примере цифровой автомат управляется тремя битами, поэтому он должен иметь 2, или 8 состояний. В объявлении заданы только 5 состояний. Следовательно, нужно туда добавить еще три воображаемых состояния illegal 1, illegal2, IllegalS.

3.6. РЕАЛИЗАЦИЯ ИЕРАРХИЧЕСКОГО ПРОЕКТА

В иерархической структуре проекта TDF-файлы, написанные на языке AHDL, можно использовать вместе с другими файлами проектов. На нижнем уровне проекта могут быть макрофункции, поставляемые фирмой Altera или разработанные пользователями

3.6.1. Использование макрофункций системы Altera MAX+PLUS II

В системе MAX+PLUS II есть большая библиотека, в которую входят 74 стандартные макрофункции, реализующие шины с последовательным опросом, функции оптимизации архитектуры и конкретные приложения. Библиотека представляет собой собрание блоков высокого уровня, используемых для создания проекта с иерархической логикой Во время инсталляции системы эти макрофункции автоматически записываются в каталог \maxplus2\max2lib и его подкаталоги, создаваемые в процессе инсталляции

В языке AHDL существуют два способа вызова (то есть вставки в качестве примера) макрофункции

♦ объявить переменную типа <macrofunction> в объявлении примеров INSTANCE в секции VARIABLE и использовать порты примера макрофункции в логической секции В этом способе важное значение имеют имена портов,

♦ использовать для макрофункции непосредственную ссылку в логической секции файла TDF В этом способе важен порядок Портов

Входы и выходы макрофункций перечисляются в описании прототипов функций (FUNCTION PROTOTYPE). Прототипы функций можно записать в отдельный файл и указать его в своем файле с помощью директивы INCLUDE Такие lnclude-файлы создаются автоматически для данного проекта с помощью команды Create Default Include File lnclude-файл вставляется вместо вызывающей его директивы INCLUDE Для всех макрофункций системы MAX+PLUS II lnclude-файлы должны находиться в каталоге \max-plus2\max2inc

Ниже приведен файл macrol .tdf, который реализует 4-битовый счетчик, подсоединенный к дешифратору 4бит -> 16 бит. Соответствующие макрофункции вызываются объявлениями примеров в секции VARIABLE.

INCLUDE 4oount ; INCLUDE ledmux ;

SUBDESIGN macrol (

oik : INPUT;

out[15..0] : OUTPUT;

VARIABLE

counter : 4oount; decoder : 16dmux;



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [ 22 ] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

© 2000 - 2021 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.