Скачиваний:
196
Добавлен:
08.06.2016
Размер:
635.39 Кб
Скачать
      1. Оператор проверки логического выражения (If Then.)

Оператор 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 имеет следующие характеристики:

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

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

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

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

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

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

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

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

IF a THEN IF a THEN

c = d; c = d;

END IF;

ELSIF b THEN IF !a & b THEN

c = e; c = e;

END IF;

ELSE IF !a & !b THEN

c = f; c = f;

END IF; END IF;

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

      1. Оператор проверки логического выражения (If Generate )

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

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

IF DEVICE_FAMILY == "FLEX8K" GENERATE

c[] = 8kadder(a[], b[], cin);

ELSE GENERATE

c[] = otheradder(a[], b[], cin);

END GENERATE;

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

  • Между ключевыми словами If Generate заключается арифметическое выражение, значение которого подвергается оценке. За ключевым словом GENERATE следует список операторов, каждый из которых заканчивается символом (;). Операторы активизируются в том случае, если арифметическое выражение принимает истинное значение.

  • За ключевыми словами ELSE GENERATE следует один или более операторов, которые активизируются в случае, если арифметическое выражение принимает ложное значение.

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

  • Оператор If Generate может использоваться в разделе Logic и в разделе Variable.

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

  • Оператор If Generate особенно часто используется с операторами For Generate, что позволяет различным образом обрабатывать особые ситуации, например, младший значащий бит в многокаскадном умножителе. Этот оператор может также использоваться для тестирования значений параметров, как показано в последнем примере.

Соседние файлы в папке Минина 2014
  • #
    08.06.2016338.77 Кб291113PV1.pdf
  • #
    08.06.2016635.39 Кб196ahdl.doc
  • #
    08.06.20167.32 Кб22Digital term.vi
  • #
    08.06.201651 б22L8.asv
  • #
    08.06.201645 б22L8.m
  • #
    08.06.201613.4 Кб24temp. analis.vi
  • #
    08.06.201616.62 Кб23temp. control.vi