Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ШкПЛИС_ahdl.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
164 Кб
Скачать
☆

Врезка 4

SUBDESIGN simple

(

clk : INPUT;

reset : INPUT;

d : INPUT;

q : OUTPUT;

)

VARIABLE

ss : MACHINE WITH STATES (s0, s1);

BEGIN

ss.clk = clk;

ss.reset = reset;

CASE ss IS

WHEN s0 

q = GND;

IF d THEN

ss = s1;

END IF;

WHEN s1 

q = VCC;

IF !d THEN

ss = s0;

END IF;

END CASE;

END;

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

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

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

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

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

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

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

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

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

На врезке 5 приведён пример, в котором реализован автомат Мура с четырьмя состояниями.