Язык AHDL

       

Булевы операторы, использующие AND, NAND, OR, NOR, XOR, и XNOR


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

1.   Если оба операнда - одиночные узлы или константы GND и VCC, оператор выполняет логическую операцию над двумя элементами. Например, (a & b).

2.   Если оба операнда - группы узлов, оператор действует  на соответствующие узлы каждой группы, выполняя побитовые операции между группами. Группы должны иметь одинаковый размер. Например, (a, b, c) # (d, e, f) интерпретируется как (a # d, b # e, c # f).

3.   Если один операнд - одиночный узел, GND, или VCC, а другой группа узлов, одиночный узел или константа дублируется для создания группы такого же размера как другой оператор. Затем выражение трактуется как групповая операция. Например, a & b[4..1] интерпретируется как (a & b4, a & b3, a & b2, a & b1).

4.   Если оба операнда - числа, то более короткое число расширяется с учетом знака для согласования с размером другого числа и трактуется затем как групповая операция. Например, в выражении (3 # 8), 3 и 8 преобразуются в двоичные числа  B"0011" и B"1000", соответственно. Результатом будет B"1011".

5.   Если один операнд - число, а другой узел или группа узлов, то число разделяется на биты для согласования с размером группы и выражение рассматривается как групповая операция. Например, в выражении (a, b, c) & 1, 1 преобразуется к  B"001" и выражение  становится (a, b, c) & (0, 0, 1). Результатом будет (a & 0, b & 0, c & 1).

Выражение, которое использует VCC как операнд, интерпретируется в зависимости от выражения, которое использует 1 как операнд. Например, в первом выражении, 1 - число в знакорасширенном формате . Во втором выражении, узел VCC дублируется . Затем каждое выражение трактуется как групповая операция.

 (a, b, c) & 1   = (0, 0, c)

(a, b, c) & VCC = (a, b, c)



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