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

6. Пример использования функции lpm_ram_dq

INCLUDE “lpm_ram_dq.inc”; INCLUDE “lpm_bustri.inc”; SUBDESIGN ram

(we_ram : INPUT;

data_in[5..0],address_r[3..0] : INPUT;

en_data : INPUT;

data_out[5..0] : BIDIR;

) VARIABLE data_r[5..0] : NODE;

BEGIN data_r[]=lpm_ram_dq(.data[]=data_in[], .address[]=address_r[], .we=we_ram)

WITH (LPM_WIDTH=6, LPM_WIDTHAD=4,

LPM_OUTDATA=”UNREGISTERED”, LPM_ADDRESS_CONTROL=”UNREGISTERED”, LPM_INDATA=”UNREGISTERED”)

RETURNS (.q[]);

data_out[]=lpm_bustri(.data[]=data_r[],.enabledt=en_data) WITH(LPM_WIDTH=6)

RETURNS(.tridata[]); END;

4. Описание логических схем

4.1. Операторы Оператор if then

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

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

IF a[] == b[] THEN

c[8..1] = H "77";

addr[3..1] = f[3..1].q;

f[].d = addr[] + 1;

ELSIF g3 $ g4 THEN

f[].d = addr[];

ELSE

d = VCC;

END IF;

Оператор If Then имеет следующие характеристики.

  1. Между ключевыми словами IF и THEN располагается булевское выражение, в зависимости от значения которого выполняется или не выполняется список операторов, располагающийся за ключевым словом THEN. Каждый оператор в этом списке оканчивается символом (;).

  2. Между ключевыми словами ELSEIF и THEN располагается дополнительное булевское выражение, а за ключевым словом THEN также располагается список операторов, выполняемых в зависимости от значения булевского выражения. Эти необязательные ключевые слова и операторы могут повторяться многократно.

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

  4. Ключевое слово ELSE, за которым следует один или более операторов, схоже по своему значению с ключевыми словами WHEN OTHERS в операторе Case. Если ни одно из булевских выражений не приняло истинное значение, то выполняются операторы, следующие за ключевым словом ELSE. В примере, показанном выше, если ни одно из булевских выражений не приняло истинного значения, то выполняется оператор d = VCC. Использование ключевого слова ELSE не является обязательным.

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

  6. Оператор If Then заканчивается ключевыми словами END IF, за которыми следует символ (;).

Оператор If Then может генерировать логические схемы, которые слишком сложны для компилятора. Если оператор If Then содержит сложные булевские выражения, то учет инверсии каждого из этих выражений вероятно приведет к еще более сложным булевским выражениям. Например, если a и b – сложные выражения, то инверсия этих выражений может быть еще более сложной.

Оператор If

Интерпретация компилятором

IF a THEN

c = d;

ELSIF b THEN

c = e;

ELSE

c = f;

END IF;

IF a THEN

c = d;

END IF;

IF !a & b THEN

c = e;

END IF;

IF !a & !b THEN

c = f;

END IF;

В отличие от операторов If Then, которые могут оценивать лишь значения булевских выражений, операторы If Generate могут оценивать значения наборов арифметических выражений. Основное различие между операторами If Then и If Generate состоит в том, что в первом случае значение булевского выражения оценивается аппаратным способом, а во втором случае значение набора арифметических выражений оценивается на этапе компиляции.

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