Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VHDL.doc
Скачиваний:
8
Добавлен:
22.08.2019
Размер:
272.38 Кб
Скачать

14 Повторное использование подсхем в языке vhdl.

Общий вид оператора конкретизации компонента (оператора создания экземпляра компонента):

метка: имя компонента

[generic (список параметров);]

[роrt mар (список портов)];

Этот оператор употребляется для структурной организация проекта. Часть схемы (подсхемы) описывается как компонент (component), имеющий имя (name). Одна и та же подсхема может входить в схему несколько раз, однако, при этом она имеет различные связи. Чтобы описать эти связи, употребляется оператор создания экземпляра компонента (оператор конкретизации компонента), т.е. имеется в виду конкретизация связей данной подсхемы.

Соответствие портов при создании экземпляров компонентов может быть осуществлено:

• позиционным сопоставлением;

• ключевым соответствием, с использованием оператора “=>”

Общий вид оператора generate (генерации):

метка: for параметр генерации generate

if условие generate

параллельные операторы

end generate [метка];

Параметр генерации — константа дискретного типа в определенном диапазоне. Параметром генерации не может быть декларированная переменная или сигнал. Оператор генерации позволяет сокращенно (по существу используя цикл) описывать совокупности повторяющихся операторов, в том числе и операторов конкретизации компонентов, т.е. оператор генерации представляет собой механизм для проектирования (описания) регулярных (систолических) структур.

15 Использование оператора generate в языке vhdl.

Общий вид оператора generate (генерации):

метка: for параметр генерации generate

if условие generate

параллельные операторы

end generate [метка];

Параметр генерации — константа дискретного типа в определенном диапазоне. Параметром генерации не может быть декларированная переменная или сигнал. Оператор генерации позволяет сокращенно (по существу используя цикл) описывать совокупности повторяющихся операторов, в том числе и операторов конкретизации компонентов, т.е. оператор генерации представляет собой механизм для проектирования (описания) регулярных (систолических) структур.

Имеются два способа употребления оператора генерации.

Способ 1 - (способ for), синтаксис такой же, как у последовательного оператора for loop.

Способ 2 - (способ if) употребление подобно по синтаксису последовательному оператору if.

В архитектуре RTL2 способ if употреблен внутри способа for.

Различия параллельного оператора генерации от последовательных операторов for, if.

1).Оператор генерации есть параллельный оператор, а if, for loop есть последовательные операторы.

2). Оператор генерации не имеет фраз else, elsif.

3). Необходима метка для оператора генерации.

4). Только параллельные операторы могут появляться внутри оператора генерации. Только последовательные операторы могут появляться внутри последовательного for loop оператора и последовательного if оператора.

16 Проектирование комбинационных схем на языке vhdl.

Основной программной единицей в VHDL является процесс, при исполнении которого в источниках сигнала генерируется новое значение, являющееся некоторыми функциями от входных сигналов значений. Если при каждом запуске процесса выполняется присваивание всем переменным и сигналам процесса, то такой процесс отображается в комбинационную схему без памяти. Если при каком-либо запуске процесса по запускающему сигналу е, каким-то переменным/сигналам значение е присваивается, что означает, что переменная/сигнал сохраняет предыдущее значение, то переменная/сигнал отображается в тригер, а сигнал е служит сигналом разрешения записи.

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

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

Пример:

Process (A,D,E) begin

case A is

when “01” => C <= D+E;

when “10” => C <= D-E;

end case;

end process;

В данном случае, если А имеет тип bit, то не учитываются 2 комбинации битов сигнала. Если сигнал А имеет тип std_logic_vector то не учитываются более 70 возможных комбинаций сигнала. Для того чтобы избегать таких ситуаций рекомендуется :

1) использовать служебное слово others:

Process (A,D,E) begin

case A is

when “01” => C <= D+E;

when “10” => C <= D-E;

when others => C < = D+E;

end case;

end process;

2) использовать предварительное назначение сигнала:

Process (A,D,E) begin

C <= D+E;

if А=“10” then

C <= D-E;

end if;

end process;

Более сложным случаем приводящим к возникновению непредномеренных защелок является неккорректная вставка нескольких компонентов комбинационных схем при которых входы и выходы компонентов соединяются так, что получается замкнутое кольцо.

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