zabika.ru 1 ... 15 16 17 18 19

1.4.10Раздел Subdesign

Раздел Subdesign определяет входные, выходные и двунаправленные порты данного проекта.

Следующий пример демонстрирует использование раздела Subdesign:
SUBDESIGN top

(

foo, bar, clk1, clk2 : INPUT = VCC;

a0, a1, a2, a3, a4 : OUTPUT;

b[7..0] : BIDIR;

)

Раздел Subdesign имеет следующие характеристики:


                  • За ключевым словом SUBDESIGN следует имя подпроекта. Имя подпроекта должно совпадать с именем текстового файла проекта. В данном примере подпроект имеет имя top.

                  • Список сигналов заключается в круглые скобки.

                  • Сигналы представляются символическими именами с определением их типа (например, INPUT)

                  • Имена сигналов отделяются друг от друга запятыми .За именами следует двоеточие, далее тип сигналов и символ (;).

                  • Возможными типами портов являются : INPUT, OUTPUT, BIDIR, MACHINE INPUT или MACHINE OUTPUT.В примере, показанном выше, сигналы foo, bar, clk1 и clk2, а сигналы a0, a1, a2, a3 и a4 являются выходами. Шина b[7..0] является двунаправленной.

                  • Ключевые слова MACHINE INPUT и MACHINE OUTPUT используются для импорта и экспорта конечных автоматов между текстовыми файлами проектов и другими файлами проектов. Однако типы портов MACHINE INPUT и MACHINE OUTPUT не могут использоваться в текстовых файлах проектов верхнего уровня.

                  • После указания типа порта в необязательном порядке можно указать значение по умолчанию GND или VCC (в противном случае значений по умолчанию не предусматривается).В примере приведенном выше VCC является значением, присвоенным по умолчанию для входных сигналов в том случае, если они не используются в файле более высокого уровня иерархии (присвоения, осуществляемые в файле более высокого уровня иерархии, имеют больший приоритет)



В файле высшего уровня иерархии порты, имеющие тип INPUT, OUTPUT или BIDIR являются выводами устройства. В файлах более низких уровней иерархии все типы портов являются точками входа и выхода данного файла, но не устройства в целом.

1.4.11Раздел Variable


Необязательный раздел Variable используется для описания и/или генерации переменных, используемых в разделе Logic. Переменные языка AHDL сходны с переменными, используемыми в языках высокого уровня; они используются для определения внутренней логики.

Следующий пример демонстрирует использование раздела Variable:
VARIABLE

a, b, c : NODE;

temp : halfadd;

ts_node : TRI_STATE_NODE;

IF DEVICE_FAMILY == "FLEX8000" GENERATE

8kadder : flex_adder;

d, e : NODE;

ELSE GENERATE

7kadder : pterm_adder;

f, g : NODE;

END GENERATE;
Раздел Variable может включать следующие операторы и конструкции:


                  • Описание объектов.

                  • Описание узлов.

                  • Описание регистров.

                  • Описание конечных автоматов.

                  • Описание псевдоимен конечных автоматов.





                  • Раздел Variable может также содержать операторы If Generate, которые могут быть использованы для генерирования объектов, узлов, регистров, конечных автоматов, и псевдоимен конечных автоматов.

                  • Раздел Variable имеет следующие характеристики:




                  • Раздел начинается с ключевого слова VARIABLE.

                  • Определенные пользователем символические имена переменных отделяются друг от друга запятыми, а от соответствующего им типа символом двоеточия. Допустимыми типами переменных являются: NODE, TRI_STATE_NODE,
                    , ,
                    или . В примере, показанном выше, внутренними переменными являются a, b и c, имеющие тип NODE; temp является экземпляром макрофункции halfadd; и tsnode является объектом типа TRI_STATE_NODE.

                  • Каждая строка определения переменных заканчивается символом (;).



                  • В файле с расширением .fit для текущего проекта могут иметь место имена, сгенерированные компилятором и имеющие в своем составе знак тильда (