Читайте также:
|
|
Оператор 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 состоит в том, что в первом случае значение булевского выражения оценивается аппаратным способом (в кремнии), а во втором случае значение набора арифметических выражений оценивается на этапе компиляции.
Дата добавления: 2015-08-21; просмотров: 55 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Задание исходных значений (Defaults Statment) | | | Использование ссылок на прототипы функций (In-Line Logic Function Reference) |