Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЛИС_Ответы_к_экзамену_8110.doc
Скачиваний:
19
Добавлен:
24.04.2019
Размер:
2.35 Mб
Скачать

Вопрос 26 - Логические выражения и уравнения языка ahdl. Логические уравнения управления. Назначение, синтаксис, применение.

Логические выражения состоят из операндов, разделенных логическими и арифметическими операторами и компараторами и дополнительно сгруппированы с помощью круглых скобок. Выражения используются в булевых уравнениях также как и в других операторах таких как Case и If Then.

Логическое выражение может быть одним из следующих:

  1. Операнд

Например, a, b[5..1], 7, VCC

  1. Подставляемая ссылка на логическую функцию

Например, out[15..0] = 16dmux(q[3..0]);

  1. Префиксный оператор (! или -), применяемый к логическому выражению

Например, !c

  1. Два логических выражения, разделенных бинарным оператором

Например, d1 $ d3

  1. Логическое выражение, заключенное в круглые скобки

Например, (!foo & bar)

Логические уравнения:

Логические уравнения используются в Логической секции для поведенческого и структурного описания функционирования модуля.

a[ ] = ((c[ ] & -B"001101") + e[6..1]) # (p, q, r, s, t, v) & !B"001101" ;

Синтаксис:

< логическое уравнение > ::= <lgroup> = <rgroup>;

Примеры выполнения операций с группами:

  1. (a, b) = (c, d); ::= a = c; b = d;

  2. a[4..1] = b[2..1]; ::= a4 = b2; a3 = b1; a2 = b2; a1 = b1;

  3. (a, b) = e; ::= a = e; b = e;

  4. (a, b) = 1; ::= a = 0; b = 1;

  5. (a, b, c, d) = B"1011"; ::= a = 1; b = 0; c = 1; d = 1;

  6. (a, , c, ) = B"1011"; ::= a = 1; c = 1;

  7. (cout, sum[7..0]) = (a[7], a[7..0]) + (b[7], b[7..0]);

Логические уравнения управления:

Логические уравнения используются в Логической секции для представления соединения управляющих входов проектируемого модуля (clock, set, reset, ce и т.д.) с соответствующими входами и выходами модулей верхнего уровня:

Примеры:

tr[ ].clk = clock;

tr[ ].clrn = !reset;

tr[ ].prn = !set;

tr[ ].ena =a & !b # c;

или

tr[ ].(clk, ena, prn, clrn) = (clock, a & !b # c, !set, !reset);

Вопрос 27 - Условный оператор 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 за которыми следует символ (;).