Язык AHDL


Оператор If Then против оператора Case


Операторы If Then и  Case

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

Но между ними существует важное различие:

¨    В операторе If Then можно использовать любые виды булевых выражений. Каждое выражение, следующее за IF или  ELSIF областями, может быть несвязанно с другими выражениями в операторе. В операторе Case, напротив, только одно булево выражение сравнивается с константой в каждой WHEN области.

¨    Использование ELSIF предложения может привести к логике, которая слишком сложна для компилятора, так как каждое следующее друг за другом предложение ELSIF должно еще проверять, ложность предыдущих IF/ELSIF предложений. Следующий пример показывает как компилятор интерпретирует оператор If Then. Если a и b сложные выражения, тогда инверсия этих выражений даст, возможно, даже более сложные выражения.

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

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;



Содержание раздела