Main Content

Bitwise Operator

入力に対する指定されたビット演算

  • Bitwise Operator block

ライブラリ:
Simulink / Logic and Bit Operations
HDL Coder / Logic and Bit Operations

説明

Bitwise Operator ブロックは、1 つ以上のオペランドに対して指定されたビット演算を行います。Logical Operator ブロックの論理演算とは異なり、ビット演算ではオペランドを 1 つの値ではなく複数のビットで構成される 1 つのベクトルとして扱います。

Operations ブロック演算の制限

Bitwise Operator ブロックはシフト演算をサポートしません。シフト演算については、Shift Arithmetic ブロックを使用します。

多入力 XOR ゲートとして構成されている場合、このブロックは論理要素に関する IEEE® 標準規格に従って、剰余 2 の加算を行います。

すべて展開する

次のモデルでは、符号なし入力に対する Bitwise Operator ブロックの動作を説明します。

各 Constant ブロックは、8 ビットの符号なし整数 (uint8) を出力します。各 Constant ブロック出力のバイナリ値を判断するには、関数 dec2bin を使用します。すべての論理演算に対応する結果を次の表にまとめます。

次のモデルでは、符号付き入力に対する Bitwise Operator ブロックの動作を示します。

各 Constant ブロックは、8 ビットの符号付き整数 (int8) を出力します。各 Constant ブロック出力のバイナリ値を判断するには、関数 dec2bin を使用します。すべての論理演算に対応する結果を次の表にまとめます。

端子

入力

すべて展開する

入力信号。スカラーまたはベクトルとして指定します。

  • NOT 演算子は 1 つの入力だけを受け入れ、入力はスカラーまたはベクトルです。入力がベクトルの場合、出力は入力されたベクトル要素のビット論理補数を含む同じサイズのベクトルです。

  • 単一ベクトル入力の場合、このブロックはベクトルのすべての要素に対して演算 (NOT 演算を除く) を適用します。

  • 入力が 2 つ以上の場合、ブロックはすべての入力の間で演算を実行します。入力がベクトルの場合、ブロックはベクトルの対応する要素間で演算を行い、ベクトル出力を生成します。

データ型: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

出力

すべて展開する

出力データ型として指定される出力信号は、ブロックが駆動ブロックから継承するものであり、ゼロを正確に表現しなければなりません。この条件を満たすデータ型には、符号付きおよび符号なしの整数データ型があります。

ブロック出力のサイズは、入力の数、ベクトルのサイズ、および選択された演算子によって異なります。ビット マスクを指定しないと、出力はスカラーになります。ビット マスクを指定すると、出力はベクトルになります。

データ型: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

パラメーター

すべて展開する

ブロック オペランドに対してビット論理演算子を指定します。

次のいずれかのビット論理演算子を選択できます。

ビット演算説明

AND

対応するビットがすべて TRUE の場合に TRUE

OR

対応するビットの少なくとも 1 つが TRUE の場合に TRUE

NAND

対応するビットの少なくとも 1 つが FALSE の場合に TRUE

NOR

対応するビットに TRUE がない場合に TRUE

XOR

対応するビットの奇数個が TRUE の場合に TRUE

NOT

入力が FALSE の場合に TRUE (単一入力の場合にのみ使用可能)

プログラムでの使用

ブロック パラメーター: logicop
: 文字ベクトル
: 'AND'|'OR' |'NAND'|'NOR' |'XOR' | 'NOT'
既定の設定: 'AND'

ビット マスクを使用するには、これを選択します。このチェック ボックスをオフにすると [入力端子の数] が有効になり、[ビット マスク][マスクの取り扱い] が無効になります。

プログラムでの使用

ブロック パラメーター: UseBitMask
: 文字ベクトル
: 'off'|'on'
既定の設定: 'on'

入力の数を指定します。複数の入力端子を設定できます。

依存関係

[ビット マスクの使用] チェック ボックスをオフにすると [入力端子の数] が有効になり、[ビット マスク][マスクの取り扱い] が無効になります。

プログラムでの使用

ブロック パラメーター: NumInputPorts
: 文字ベクトル
値: 正の整数
既定の設定: '1'

単一入力に関連付けられるビットマスクを指定します。このパラメーターは、値を 16 進数値として読み取ります。

ビット マスクを使用して、入力に対するビットの設定、取得、クリアを行うことができます。

実行内容Operator パラメーターの設定値ビット マスクの作成に使用するもの
Bit setOR1 に設定する対応する入力ビットそれぞれに対して A 1
Bit clearAND0 に設定する対応する入力ビットそれぞれに対して A 0
Bit getAND取得する対応する入力ビットそれぞれに対して A 1

8 ビット入力ベクトルの 4 番目のビットを設定するとします。ビット マスクは 00010000 になります。これは [ビットマスク] パラメーターで 2^4 として指定できます。ビットをクリアするには、ビット マスクを 11101111 とします。これは ビット マスク パラメーターで 2^7+2^6+2^5+2^3+2^2+2^1+2^0 として指定できます。

ヒント

53 ビットを超えるマスクを使用しないでください。そうしないと、シミュレーション中にエラー メッセージが表示されます。

依存関係

このパラメーターは、[ビット マスクの使用] をオンにする場合にのみ使用できます。

プログラムでの使用

ブロック パラメーター: BitMask
: 文字ベクトル
値: 正の整数
既定の設定: 'bin2dec('11011001')'

マスクを実際値として扱うのかそれとも格納された整数として扱うのかを指定します。

エンコード方式は、V = SQ + B です。詳細については、Fixed-Point Designer™ ドキュメンテーションのスケーリング (Fixed-Point Designer)を参照してください。[実際値] はマスクを V として扱います。[整数格納] はマスクを Q として扱います。

依存関係

このパラメーターは、[ビット マスクの使用] をオンにする場合にのみ使用できます。

プログラムでの使用

ブロック パラメーター: BitMaskRealWorld
: 文字ベクトル
: 'Real World Value' | 'Stored Integer'
既定の設定: 'Stored Integer'

ブロックの特性

データ型

Booleana | fixed point | integer

直達

いいえ

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

a ビット演算は、boolean 信号での使用を推奨しません。

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2006a より前に導入