Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mat_mod.docx
Скачиваний:
249
Добавлен:
22.02.2016
Размер:
807.96 Кб
Скачать

44. Карта портов и карта настройки в языке vhdl.

Описание структуры объекта строится как описание связей конкретных компонент, каждая из которых  имеет имя, тип и карты портов. Карта портов portmap определяет соответствие портов компонент поступающим на них сигналам, можно интерпретировать карту портов как разъём, на который приходят сигналы и в который вставляется объект-компонента.

Принятая в VHDL форма описания связей конкретных компонент имеет следующий вид:

Имя : тип_связи (сигнал, порт);

Например, описание связей объекта Q1, представленного на рис. 3, выглядит следующим образом:

K1: SM port map (X1, X2, S);

K3: M port map (S, Y1);

K2: SM port map (S, X3, Y2);

Здесь K1, K2, K3 - имена компонент; SM, M - типы компонент; X1, X2, X3, Y1, Y2 - имена сигналов, связанных с портами.

Полное VHDL описание архитектуры STRUCTURA объекта Q1 имеет вид:

Architecture STRUXTURA of Q1 is

Component SM port (A, B : in real; C : out real);

End component;

Component M port (E : in real; D : out real);

End component;

Signal S : real;

Begin

K1: SM port map (X1, X2, S);

K3: M port map (S, Y1);

K2: SM port map (S, X3, Y2);

EndSTRUCTURA.

45. Параллельный оператор generate в языке vhdl: назначение, общая формаописания, примеры применения.

Если необходимо неоднократно повторить один или несколько параллельных операторов, то используют оператор generate. Его синтаксис: \оператор generate::= \метка\: for \идентификатор\ in \диапазон\ generate        [{\объявление в блоке\}        begin]        { \параллельный оператор\}        end generate [\метка\]; Метка оператора generate необходима для обозначения сгенерированной структуры,\идентификатор\ - это параметр оператора generate, а фраза \диапазон\ - диапазон его изменения. Они имеют такие же синтаксис и семантику, как и в операторе loop. В операторе могут быть вставлены такие же объявления, как в декларативной части тела архитектуры. В отличие от оператора loop, который повторяет в цикле один или несколько последовательных операторов, оператор generate делает несколько копий параллельных операторов, когда параметр оператора пробегает все значения из заданного диапазона. В следующем примере с помощью оператора generate запрограммирована схема сдвигового регистра длиной n на триггерах FD из библиотеки компонентов ПЛИС Xilinx, описанного в пакете UNISIM.unisim_VITAL с входом DI и выходом DO, тактируемого синхросерией CLK.

signal t: std_logic_vector(1 to n+1);

t(1)<=DI;

FIFO: for i in 1 to n generate

U_ TT: FD(C=>CLK, D=>t(i), Q=>t(i+1));

end generate;

DO<=t(n+1);

УСЛОВНЫЙ ОПЕРАТОР GENERATE

Для того чтобы управлять структурой проектируемого устройства используется условный оператор generate. Его синтаксис: \условный оператор generate\ ::= \метка\: if \булевское выражение\ generate        [ {\объявление в блоке\}        begin]        { \параллельный оператор\}        end generate [\метка\];

В зависимости от условия, заданного булевским выражением, оператор вставляет или нет в структуру устройства узлы, представленные параллельными операторами. Так как это булевское выражение влияет на структуру устройства, оно должно быть статическим. Впримере:

RESn: if \подключить_PULLUP\=1 generate

RES1:for i in DATA_BUS'range generate

U_ RES: PULLUP(DATA_BUS(i));

end generate;

end generate;

Еслицелоезначение \подключить_PULLUP\ равно 1, токшине DATA_BUSподключаютсякомпонентынагрузочныхрезисторов PULLUP избиблиотеки UNISIM. Направлением научной деятельности автора является синтез структур вычислительных устройств. Поэтому язык VHDL нравится именно тем, что с помощью таких средств, как оператор generate можно программировать структуру устройства в зависимости от параметров ее настройки. Например, можно создать проект универсального цифрового фильтра, число ступеней которого изменяется в зависимости от заданного качества фильтрации.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]