Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники / Язык AHDL.DOC
Скачиваний:
56
Добавлен:
13.06.2014
Размер:
995.84 Кб
Скачать
        1. Управляющие булевские выражения.

Управляющие булевские выражения используются в разделе Logic для определения значений сигналов Clock, Reset и Clock Enable в конечных автоматах.

Следующий пример демонстрирует использование управляющих булевских выражений:

ss.clk = clk1;

ss.reset = a & b;

ss.ena = clk1ena;

Управляющие булевские выражения имеют следующие характеристики:

  • Значения сигналов Clock, Reset и Clock Enable для всякого конечного автомата могут быть определены с использованием следующего формата: <имя конечного автомата>.<имя порта>.В примере, показанном выше, значения этих входов определены для конечного автомата с именем ss.

  • Имя конечного автомата, определенное на этапе его объявления, может быть использовано в управляющих булевских выражениях.

  • Тактирующему сигналу <имя конечного автомата>.clk должно быть присвоено значение.

  • Если в качестве начального значения конечного автомата выбрано ненулевое значение, то должен использоваться сигнал начальной установки <имя конечного автомата>.reset;в противном случае использование этого сигнала необязательно.

  • Использовать тактирующий сигнал <имя конечного автомата>.ena необязательно.

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

        1. Оператор 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 является допустимым.

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