Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Использование непараметрических функций

Поиск

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

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

 

· Объявить переменную для функции, т.е. имя экземпляра, в разделе Variable объявления Instance и использовать порты экземпляра функции в разделе Logic.

· Использовать ссылку на логическую функцию в разделе Logic TDF файла.

 

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

Входы и выходы мега и макрофункций должны объявляться с помощью оператора прототипа функции (Function Prototype). Прототипы функций не требуются для примитивов. MAX+PLUS II снабжена файлами включения (Include Files), которые содержат прототипы для всех мега и макрофункций MAX+PLUS II в каталогах \maxplus2\max2lib\mega_lpm и \maxplus2\max2inc, соответственно. С помощью оператора Include, Вы можете передавать содержимое Include файла в файл TDF, для объявления прототипа мега или макрофункции MAX+PLUS II.

Файл macro1.tdf, приведенный ниже, демонстрирует 4-битный счетчик, соединенный с дешифратором 4 в 16. Экземпляры этих функций создаются с помощью объявлений Instance в разделе Variable.

 

INCLUDE "4count";

INCLUDE "16dmux";

SUBDESIGN macro1

(

clk: INPUT;

out[15..0]: OUTPUT;

)

VARIABLE

counter: 4count;

decoder: 16dmux;

BEGIN

counter.clk = clk;

counter.dnup = GND;

decoder.(d,c,b,a) = counter.(qd,qc,qb,qa);

out[15..0] = decoder.q[15..0];

END;

 

Этот файл использует операторы Include, для импортирования прототипов функций для двух макрофункций: 4count и 16dmux. В разделе Variable переменная counter объявлена как экземпляр функции 4count, а переменная decoder объявлена как экземпляр функции 16dmux. Входные порты функций, в формате <имя экземпляра>.<имя порта>, определены с левой стороны булевых уравнений в разделе Logic, а выходные порты с правой стороны.

Файл macro2.tdf, приведенный ниже, имеет такую же функциональность как и macro1.tdf, но создает экземпляры двух функций с помощью ссылок и узлов q[3..0]:

 

INCLUDE "4count";

INCLUDE "16dmux";

SUBDESIGN macro2

(

clk: INPUT;

out[15..0]: OUTPUT;

)

VARIABLE

q[3..0]: NODE;

BEGIN

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

% эквивалент подставляемой ссылки со связью по имени порта %

% (q[3..0],) = 4count (.clk=clk,.dnup=GND); %

 

% эквивалент подставляемой ссылки со связью по имени порта %

% и предложением RETURNS, определяющим требуемый выход %

% q[3..0] = 4count (.clk=clk,.dnup=GND) %

% RETURNS (qd, qc, qb, qa); %

 

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

 

% эквивалент подставляемой ссылки со связью по положению порта %

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

 

END;

 

Прототипы функций 4count.inc и 16dmux.inc приведены ниже:

 

FUNCTION 4count (clk, clrn, setn, ldn, cin, dnup, d, c, b, a)

RETURNS (qd, qc, qb, qa, cout);

FUNCTION 16dmux (d, c, b, a)

RETURNS (q[15..0]);

 

Ссылки на 4count и 16dmux появляются в первом и втором булевых уравнениях в разделе Logic, соответственно. Ссылка на 4count использует связь по положению порта, тогда как ссылка на 16dmux использует связь по имени порта. Входные порты обоих макрофункций определяются с правой стороны ссылки, а выходные порты с левой.

Комментарии демонстрируют эквивалентные ссылки для различных видов связи с портом. В ссылке порты с правой стороны символа равенства (=) можно перечислять с помощью или связи по положению или по имени порта. Порты с левой стороны символа равенства всегда используют связь по положению. При использовании связи по положению важен порядок портов, так как существует соответствие один в один между порядком портов в прототипе функции и портами, определенными в разделе Logic. В ссылке на 4count запятые используются как разделители для портов, которые не соединяются точно.

Предложение RETURNS является дополнительным с ссылке. RETURNS можно использовать для перечисления подмножества выходов функции, которые используются в экземпляре.

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



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 88; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.206.19 (0.009 с.)