Язык AHDL


Оператор Case


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

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

 

CASE f[].q IS

            WHEN H"00" =>

                        addr[] = 0;

                        s = a & b;

            WHEN H"01" =>

                        count[].d = count[].q + 1;

            WHEN H"02", H"03", H"04" =>

                        f[3..0].d = addr[4..1];

            WHEN OTHERS =>

                        f[].d = f[].q;

END CASE;

 

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

 

¨    Булевское выражение, группа или конечный автомат  располагаются между ключевыми словами CASE и IS (в примере, показанном выше,  это f[ ].q).

¨    Оператор Case завершается ключевыми словами END CASE за которыми следует символ (;).

¨    Телом оператора Case является список из одного или более неповторяющихся альтернативных вариантов, следующих за ключевым словом WHEN. Каждому альтернативному варианту предшествует ключевое слово WHEN.

¨    Каждый альтернативный вариант представляет собой одно или более отделенных друг от друга запятыми значений констант, за  которыми следует символ (=>).

¨    Если значение булевского выражения, стоящего за ключевым словом CASE, соответствует какому - либо альтернативному варианту, то все операторы, следующие за соответствующим символом (=>) активизируются. В примере, приведенном выше, если f[ ].q равно h”01”, то активизируется булевское выражение count[ ].d = count[ ].q + 1.

¨    Если значение булевского выражения, стоящего за ключевым словом CASE не равно ни одному из альтернативных вариантов, то активизируется  альтернативный вариант, стоящий за ключевыми словами WHEN OTHERS. В примере, показанном выше, если значение f[ ].q не равно H”00”, H’01” или H”CF”, то активизируется выражение f[ ].d = f[].q.

¨    Оператор Defaults  определяет значение по умолчанию для тех случаев, когда ключевые слова WHEN OTHERS не используются.

¨    Если оператор Case используется для определения переходов конечного автомата, то ключевые слова WHEN OTHERS не могут использоваться для выхода из недопустимых состояний. Если состояния конечного автомата определяются n -мерным кодом и при этом автомат имеет 2^n состояний, то использование ключевых слов WHEN OTHERS является допустимым.

¨    Каждый альтернативный вариант должен заканчиваться символом (;).




Начало  Назад  Вперед



Книжный магазин