Читайте также:
|
|
Каждое использование или реализация конкретной логической функции может быть произведено как объявлением переменной в разделе описания переменных, так и процедурой реализации объекта. После указанного объявления входные и выходные порты каждой логической функции можно использовать также как и порты проектируемого текстового файла проекта.
При необходимости реализации объекта мега- или макрофункции надо убедиться в существовании соответствующего ей файла с описанием ее логического функционирования. Затем используется оператор Function Prototype для описания портов и параметров функции и производится реализация функции посредством подставляемой ссылки или объявления объекта.
Для экземпляра примитива также используется подставляемая ссылка или объявления объекта. Однако, в отличие от мега- и макрофункций, логика функционирования примитива предопределена, поэтому нет необходимости определять логику функционирования примитива в отдельном текстовом файле проекта. В большинстве случаев нет необходимости использовать оператор Function Prototype.
При использовании процедуры объявления объекта в разделе описания переменных производится описание переменной типа <primitive>, <megafunction> или <macrofunction>. Для параметрических мега- и макрофункций объявление включает список параметров, используемых объектом и в необязательном порядке, значения этих параметров. После определения переменной порты объекта функции можно использовать с применением следующего формата:
<имя экземпляра>.<имя порта>
Например, если необходимо использовать в данном файле проекта функции adder и compare, нужно выполнить следующие описания экземпляров в разделе описания переменных:
VARIABLE
comp: compare;
adder: lpm_add_sub WITH (LPM_WIDTH = 8);
Переменные comp и adder являются объектами функций compare и lpm_add_sub, имеющих следующие входы и выходы:
a[3..0], b[3..0]: INPUT; -- входы компаратора
less, equal, greater:OUTPUT;--выходы компаратора
a[8..1], b[8..1]: INPUT; -- входы сумматора
sum[8..1]: OUTPUT;--выходы сумматора
Таким образом, в секции Logic можно использовать следующие порты переменных comp и adder:
comp.a[], comp.b[], comp.less, comp.equal, comp.greater
adder.dataa[], adder.datab[], adder.result[]
Эти порты могут использоваться в любом операторе также как и узлы.
Поскольку все примитивы имеют только один выход можно использовать имя примитива без указания имени его выходного порта (например, без.q или.out) в правой части выражений. Аналогично, если примитив имеет лишь один вход (т.е. все примитивы за исключением примитивов JKFF, JKFFE, SRFF и SRFFE), то можно использовать имя примитива без указания имени его входного порта в левой части выражений (т.е., без.d,.t или.in).
На этапе компиляции компилятор осуществляет поиск значений параметров мега- и макрофункций в порядке, описанном в разделе “Оператор Parameters”.
Дата добавления: 2015-08-21; просмотров: 97 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Определение порядка следования битов (оператор Options) | | | Объявление конечных автоматов (State Machine Declarations) |