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

Врезка 7

SUBDESIGN mealy

(

clk : INPUT;

reset : INPUT;

Y : INPUT;

z : OUTPUT;

)

VARIABLE

ss : MACHINE WITH STATES (s0, s1, s2, s3);

BEGIN

ss.clk = clk;

ss.reset = reset;

TABLE

% current current current next %

% state input output state %

ss, y  z, ss;

s0, 0  0, s0;

s0 1  1, s1;

s1, 0  1, s1;

s1, 1  0, s2;

s2, 0  0, s2;

s2, 1  1, s3;

s3, 0  0, s3;

s3, 1  1, s0;

END TABLE;

END;

Реализация иерархического проекта

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

В системе MAX+plusII есть большая библиотека, представляющая собой блоки высокого уровня, используемые для создания проекта с иерархической логикой.

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

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

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

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

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

Врезка 8

INCLUDE "4count";

INCLUDE "16dmux";

SUBDESIGN macro2

(

clk : INPUT;

out[15..0] : OUTPUT;

)

VARIABLE

q[3..0] : NODE;

BEGIN

(q[3..-], ) = 4count (clk, , , , , GND, , , , );

%

out[15..0] = 16dmux (.(d, c, b, a)=q[3..0]);

% equivalent in-line ref. with positional port association %

% out[15..0] = 16dmux (q[3..0]);

END;

В данном файле используются директивы INCLUDE для импортирования прототипов функций для двух макроофункций фирмы Altera: 4count и 16dmux. В секции VARIABLE объявляются две переменные: counter и decoder — как примеры этих макрофункций. В логической секции определяются входные порты для обеих макрофункций в формате “<имя переменной-примера>.<имя порта>” (Они ставятся в левой части булевых уравнений, а выходные порты — справа). Порядок портов в прототипе функции не важен, так как имена портов в логической секции перечисляются явно.

На врезке 9 приведён файл macro2.tdf, выполняющий те же функции, что и предыдущий, но макрофункции в нём вызываются непосредственной ссылкой.