Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Булевы операторы, использующие 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)

Арифметические операторы

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

Таблица 6. Операторы сложения и вычитания языка AHDL

Оператор: Пример: Описание:
+ (унарный) +1 плюс
- (унарный) -a[4..1] минус
+ count[7..0] + delta[7..0] сложение
- rightmost_x[] - leftmost_x[] вычитание

К бинарным операторам применимы следующие правила:

· Операции выполняются между двумя операндами, которые должны быть шинами или числами.

· Если оба операнда - шины, то они должны иметь один размер.

· Если оба операнда числа, более короткое число расширяется до размеров другого операнда.

· Если один оператор - число, а другой группа узлов, то число усекается или расширяется для согласования размеров операндов. Если отбрасываются любые значимые биты, то компилятор MAX+PLUS II выдает сообщение об ошибке.

 

ÞКогда Вы складываете две шины вместе с правой стороны булева уравнения с помощью оператора +, Вы можете поместить 0 с левой стороны группы для расширения ширины шины. Этот метод обеспечивает добавление дополнительного бита данных с левой стороны уравнения, который можно использовать как сигнал выходного переноса. Например, шины count[7..0] и delta[7..0] дополняются нулями для обеспечения информацией сигнала cout:

 

(cout, answer[7..0]) = (0, count[7..0]) + (0, delta[7..0])

Компараторы

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

Таблица 7. Компараторы одиночных узлов и шин

Компаратор: Пример: Описание
== (логический) addr[19..4] == B"B800" равно
!= (логический) b1!= b3 не равно
< (арифметический) fame[] < power[] меньше чем
<= (арифметический) money[] <= power[] меньше чем или равно
> (арифметический) love[] > money[] больше чем
>= (арифметический) delta[] >= 0 больше чем или равно

Логические компараторы могут сравнивать одиночные узлы, шины и числа без неопределенных (X) значений. При сравнении шин или чисел, шины должны иметь одинаковый размер. Компилятор MAX+PLUS II выполняет побитовое сравнение шин, возвращая VCC, когда сравнение истинно, и GND, когда сравнение ложно.

Арифметические компараторы могут сравнивать только шины и числа; шины должны иметь одинаковый размер. Компилятор выполняет беззнаковое сравнение значений шин, т.е., каждая шина интерпретируется как положительное двоичное число и сравнивается с другой шиной.



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 251; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.91.116 (0.009 с.)