このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ビット演算
この例では、Simulink® ブロック、Stateflow® チャート、および MATLAB® Function ブロックを使用してビット演算を実装する方法を示します。
Simulink Bitwise Operator ブロック
モデルに論理演算を含めるには、"Logic and Bit Operations" ライブラリの Bitwise Operator ブロックを使用します。
1. モデル例 ex_bit_logic_SL
を開きます。
Logical Operator ブロックは、モデルで AND 演算を実行します。演算を変更するには、ブロックをダブルクリックし、[演算子] フィールドをメニューのいずれかの演算に設定します。
2. ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。
3. ビットマスクを使用してビット演算を実行するには、[ビット マスクの使用] をオンにします。
別の入力でビット演算を使用する場合は、[ビット マスクの使用] パラメーターをオフにして入力端子の数を入力します。
4. [ビット マスク] フィールドに 10 進数を入力します。bin2dec
または hex2dec
を使用して、入力を 2 進数または 16 進数から変換します。この例では、「hex2dec('D9')
」と入力します。
5. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
ビット演算子 AND を実装するコードが ex_bit_logic_SL.c
の関数 ex_bit_logic_SL_step
に含まれています。
/* Exported block signals */ uint8_T u1; /* '<Root>/u1' */ uint8_T y1; /* '<Root>/Bitwise Operator' */ /* Model step function */ void ex_bit_logic_SL_step(void) { /* S-Function (sfix_bitop): '<Root>/Bitwise Operator' incorporates: * Inport: '<Root>/u1' */ y1 = (uint8_T)(u1 & 217); }
Stateflow チャート
1. モデル例 ex_bit_logic_SF
を開きます。
2. Stateflow チャートを右クリックしてチャートの [プロパティ] を開きます。
3. [C 言語のビット演算が可能] チェック ボックスがオンになっていることを確認します。詳細については、C 言語のビット演算が可能 (Stateflow)を参照してください。
4. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
ビット演算子 AND を実装するコードが ex_bit_logic_SF.c
の関数 ex_bit_logic_SF_step
に含まれています。
/* Exported block signals */ uint8_T u1; /* '<Root>/u1' */ uint8_T y1; /* '<Root>/Bit_Logic' */ /* Model step function */ void ex_bit_logic_SF_step(void) { /* Chart: '<Root>/Bit_Logic' incorporates: * Inport: '<Root>/u1' */ y1 = (uint8_T)(u1 & 0xD9); }
MATLAB Function ブロック
この例では、ビット論理を生成コードに実装する MATLAB Function ブロック メソッドを示すために、ビット単位 OR
、'|' を使用します。
1. モデル例 ex_bit_logic_ML
を開きます。
2. MATLAB Function ブロックには次の関数が含まれています。
function y1 = fcn(u1, u2) %#eml y1 = bitor(u1, u2); end
3. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
ビット演算子 OR を実装するコードが ex_bit_logic_ML.c
の関数 ex_bit_logic_ML_step
に含まれています。
/* Exported block signals */ uint8_T u1; /* '<Root>/u1' */ uint8_T u2; /* '<Root>/u2' */ uint8_T y1; /* '<Root>/Bitwise OR' */ /* Model step function */ void ex_bit_logic_ML_step(void) { /* MATLAB Function: '<Root>/Bitwise OR' incorporates: * Inport: '<Root>/u1' * Inport: '<Root>/u2' */ y1 = (uint8_T)(u1 | u2); }