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

Врезка 12

SUBDESIGN daisy

(

/local_request : INPUT;

/local_grant : OUTPUT;

/request_in : INPUT; % from lower priority % /request_out : OUTPUT; % to higher

priority % /grant_in : INPUT; % from higher priority % /grant_out : OUTPUT; % to lower priority %

)

BEGIN

DEFAULTS

/local_grant = VCC; % active-low output % /request_out = VCC; % signals should default % /

grant_out = VCC; % to VCC %

END DEFAULTS;

IF /request_in == GND # /local_request == GND THEN

/request_out = GND;

END IF;

IF /grant_in == GND THEN

IF /local_request == GND THEN

/local_grant = GND;

ELSIF /request_in -- GND THEN

/grant_out = GND;

END IF;

END IF;

END;

Все сигналы в данном файле имеют активный низкий уровень. Фирма Altera рекомендует помечать как-нибудь имена сигналов с низким активным уровнем, например, первым символом в имени ставить “/”, не являющийся оператором, и использовать его постоянно.

В операторе IF проверяется, является ли модуль активным, то есть равен ли он GND. Если это так, то реализуются действия, записанные в операторе IF.

В объявлении по умолчанию DEFAULTS считается, что сигналу присваивается значение VCC, если он не активен.

Система MAX+PlusII позволяет конфигурировать порты ввода/вывода (I/O) в устройствах Altera как двунаправленные порты. Двунаправленный вывод задаётся как порт BIDIR, который подсоединяется к выходу примитива TRI. Сигнал между этим выводом и буфером с тремя состояниями является двунаправленным, и его можно использовать в проекте для запуска других логических схем.

Приводимый на врезке 13 файл bus_reg2.tdf реализует регистр, который делает выборку значения, найденного на шине с тремя состояниями, а также может передать обратно на шину хранимое значение.

Врезка 13

SUBDESIGN bus_reg2

(

clk : INPUT;

oe : INPUT;

io : BIDIR;

)

BEGIN

io = TRI(DFF(io, clk,, ), oe);

END;

Двунаправленный сигнал io, запускаемый примитивом TRI, используется в качестве входа d для D-триггера (DFF). Запятые в конце списка параметров отделяют места для сигналов триггера clrn и prn. Эти сигналы по умолчанию установлены в неактивное состояние.

Двунаправленный вывод можно также использовать для подсоединения TDF-файла более низкого уровня к выводу с высоким уровнем. Прототип функции для TDF-файла более низкого уровня должен содержать двунаправленный вывод в предложении RETURNS. В приведённом на врезке 14 файле bidir1.tdf даны четыре примера использования макрофункции bus_reg2.