Документация Engee

Логический оператор

Выполняет указанную логическую операцию над входными сигналами.

Тип: Logic

Путь в библиотеке:

/Basic/Logic and Bit Operations/Logical Operator

Описание

Блок Логический оператор выполняет заданную логическую операцию для одного или нескольких операндов. Входное значение интерпретируется как true (1), если оно не равно нулю, и false (0), если оно равно нулю.

Конкретную логическую операцию можно выбрать в настройках блока при помощи параметра Оператор.

В таблице показаны поддерживаемые логические операции:

Операция Описание

AND

true, если все входы false

OR

true, если хотя бы один вход true

NAND

true, если хотя бы один вход false

NOR

true, когда нет входных данных в значении true

XOR

true, если нечетное количество входов true

NXOR

true, если четное количество входов true

NOT

true, если вход false

Значок блока меняется в зависимости от выбранной в параметре Оператор логической операции. Количество входных портов задается в параметре Количество входных портов.

Размер вывода зависит от размера входного вектора и выбранного оператора:

  • Если блок имеет более одного входа, размерность остальных портов расширяется до максимально возможного с использованием broadcast-операций. Например, если сигналы на входе имеют размеры 4 на 1, 1 на 5 и 1 на 1, то при помощи broadcast на выходе получится массив размером 4 на 5. Этот процесс автоматически расширяет массивы по измерениям, равным единице, чтобы согласовать размерности входных данных для вычислений.

    Broadcast — это процесс автоматического приведения массивов к совместимым размерам для выполнения операций. Broadcast работает по правилам "распространения" по измерениям, равным единице: если массивы имеют несовпадающие размеры, но хотя бы одно из измерений равно 1, то операция выполняется, при этом массив расширяется по соответствующему измерению.

    Размерность скалярных входных сигналов увеличивается до размерности нескалярных входных сигналов, что также достигается с помощью broadcast-операции. Если у блока несколько входов, и один из них скалярный, broadcast автоматически расширяет его до той же размерности, что и остальные входные данные.

    Если блок имеет более одного входа, выход имеет те же размерности, что и входы, и каждый выходной элемент является результатом применения указанной логической операции к соответствующим входным элементам. Например, если задана операция AND, а входные данные представляют собой массивы 2 на 2, на выходе будет массив 2 на 2, верхний левый элемент которого является результатом применения AND к верхним левым элементам входных данных, и так далее.

  • Для одного входного вектора блок применяет операцию (кроме оператора NOT) ко всем элементам вектора. Выход в этом случае всегда является скаляром.

  • Оператор NOT принимает только один вход, который может быть скаляром или вектором. Если вход представляет вектор, выход представляет вектор того же размера, содержащий логические дополнения элементов входного вектора.

Порты

Выход

# OUT_1 — выходной сигнал
скаляр | вектор | матрица

Details

Выходной сигнал, состоящий из нулей и единиц, с теми же размерностями, что и вход.

Типы данных

Bool

Поддержка комплексных чисел

Да

Вход

# IN_1 — первый входной сигнал
скаляр | вектор | матрица

Details

Первый входной сигнал. Скаляр, вектор или матрица.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Bool

Поддержка комплексных чисел

Да

# IN_2 — второй входной сигнал
скаляр | вектор | матрица

Details

Второй входной сигнал. Скаляр, вектор или матрица.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Bool

Поддержка комплексных чисел

Да

Параметры

Основные

# Оператор — логический оператор
AND | OR | NAND | NOR | XOR | NXOR | NOT

Details

Выберите логический оператор, который будет применяться к входным сигналам блока:

  • ANDtrue, если все входы false.

  • ORtrue, если хотя бы один вход true.

  • NANDtrue, если хотя бы один вход false.

  • NORtrue, когда нет входных данных в значении true.

  • XORtrue, если нечетное количество входов true.

  • NXORtrue, если четное количество входов true.

  • NOTtrue, если вход false.

Значения

AND | OR | NAND | NOR | XOR | NXOR | NOT

Значение по умолчанию

AND

Имя для программного использования

Operator

Настраиваемый

Нет

Вычисляемый

Нет

# Количество входных портов — количество входов
Целое число типа Int64

Details

Задайте количество входных портов блока как положительное целое число.

Зависимости

Чтобы использовать этот параметр, установите для параметра Оператор любое значение кроме NOT.

Значение по умолчанию

2

Имя для программного использования

Inputs

Настраиваемый

Нет

Вычисляемый

Да

Дополнительные возможности

Генерация Си кода: Да

Генерация Verilog: Да