Skip to content

FixPt Bitwise Operator

Perform the specified bitwise operation on the inputs.

Description

The FixPt Bitwise Operator block is a masked S-function that performs the specified bitwise operation on its operands.

Unlike the logic operations performed by the FixPt Logical Operator block, bitwise operations treat the operands as a vector of bits rather than a single number. You select the bitwise Boolean operation with the Operator parameter list. The supported operations are given below.

Operation Description
AND TRUE if the corresponding bits are all TRUE
OR TRUE if at least one of the corresponding bits is TRUE
NAND TRUE if at least one of the corresponding bits is FALSE
NOR TRUE if no corresponding bits are TRUE
XOR TRUE if an odd number of corresponding bits are TRUE
NOT TRUE if the input is FALSE (available only for single input)

Unlike Simulink's Bitwise Logical Operator block, the FixPt Bitwise Operator block does not support shift operations. Refer to Shifts to learn how to perform shift operations with the Fixed-Point Blockset. The size of the output depends on the number of inputs, their vector size, and the selected operator:

  • The NOT operator accepts only one input, which can be a scalar or a vector. If the input is a vector, the output is a vector of the same size containing the bitwise logical complements of the input vector elements.

  • For a single vector input, the block applies the operation (except the NOT operator) to all elements of the vector. If a bit mask is not specified, then the output is a scalar. If a bit mask is specified, then the output is a vector.

  • For two or more inputs, the block performs the operation between all of the inputs. If the inputs are vectors, the operation is performed between corresponding elements of the vectors to produce a vector output.

When configured as a multi-input XOR gate, this block performs an addition- modulo-two operation as mandated by the IEEE Standard for Logic Elements.

If the Use bit mask check box is not checked, then the block can accept multiple inputs. You select the number of input ports with the Number of input ports parameter. The input data types must be identical.

If the Use bit mask check box is checked, then a single input is associated with the bit mask you specify with the Bit mask parameter. You specify the bit mask using any valid MATLAB expression. For example, you can specify the bit mask 00100101 as 2^5+2^2+2^0. Alternatively, you can use strings to specify a hexadecimal bit mask such as {'FE73','12AC'}. If the bit mask is larger than the input signal data type, then it is ignored.

The output data type, which is inherited from the driving block, should represent zero exactly. Data types that satisfy this condition include signed and unsigned integers and any floating-point data type.

The Treat mask as parameter list controls how the mask is treated. The possible values are Real World Value and Stored Integer. In terms of the general encoding scheme described in Scaling, Real World Value treats the mask as \(V = SQ + B\) where \(S\) is the slope and \(B\) is the bias. Stored Integer treats the mask as a stored integer \(Q\). For more information about this parameter list, refer to the FixPt Gateway In block.

Dialog Box Parameters

  • Operator - The bitwise logical operator associated with the specified operands.
  • Use bit mask - Specify if the bit mask is used (single input only).
  • Number of input ports - The number of inputs.
  • Bit mask - The bit mask to associate with a single input. The bit mask is converted from a double to the input data type offline using round-to-nearest and saturation.
  • Treat mask as - Treat the mask as a real-world value or as an integer.

Example

To help you understand the FixPt Bitwise Operator block logic operations, consider the fixed-point model shown below.

The Fixpt Constant blocks are configured to output an 8-bit unsigned integer (uint(8)). The results for all logic operations are shown below.

Operation Binary Value Decimal Value
AND 00101000 40
OR 11111101 253
NAND 11010111 215
NOR 00000010 2
XOR 11111000 248
NOT N/A N/A

Characteristics

Characteristic Description
Input Port Any data type supported by the blockset
Output Port Same as the input
Direct Feedthrough No
Sample Time Inherited by driving block
Scalar Expansion Of inputs
States 0
Vectorized Yes