単純な算術演算 - 2023.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2023-11-15
Version
2023.2 日本語

この例では、単純な算術演算と型変換を示します。xlSimpleArith M 関数を定義する xlSimpleArith.m ファイルの内容は、次のとおりです。

function [z1, z2, z3, z4] = xlSimpleArith(a, b)
  % xlSimpleArith demonstrates some of the arithmetic operations
  % supported by the Xilinx MCode block. The function uses xfix()
  % to create Xilinx fixed-point numbers with appropriate
  % container types.%
  % You must use a xfix() to specify type, number of bits, and
  % binary point position to convert floating point values to
  % Xilinx fixed-point constants or variables.
  % By default, the xfix call uses xlTruncate
  % and xlWrap for quantization and overflow modes. 
  % const1 is Ufix_8_3 
  const1 = xfix({xlUnsigned, 8, 3}, 1.53); 
  % const2 is Fix_10_4 
  const2 = xfix({xlSigned, 10, 4, xlRound, xlWrap}, 5.687); 
  z1 = a + const1; 
  z2 = -b - const2;
  z3 = z1 - z2; 
  % convert z3 to Fix_12_8 with saturation for overflow 
  z3 = xfix({xlSigned, 12, 8, xlTruncate, xlSaturate}, z3); 
  % z4 is true if both inputs are positive 
  z4 = a>const1 & b>-1;

この M 関数では、加算演算子と減算演算子を使用しています。MCode ブロックは、これらの演算子を完全精度で計算します。つまり、出力の精度は、これらの演算を情報を失わずに実行するのに十分であるということです。

ここで、xfix という関数の呼び出しに注目してください。この関数には、固定小数点型の精度と値の 2 つの引数が必要です。精度は、セル配列で指定します。精度のセル配列の最初の要素はデータ型で、xlUnsignedxlSignedxlBoolean のいずれかです。2 番目の要素は固定小数点値のビット数、3 番目の要素は 2 進小数点の位置です。データ型が xlBoolean の場合は、ビット数および 2 進小数点の位置を指定する必要はありません。ビット数と 2 進小数点の位置は、対にして指定する必要があります。4 番目の要素は量子化モード、5 番目の要素はオーバーフロー モードです。量子化モードは、xlTruncatexlRound、または xlRoundBanker のいずれかに指定します。オーバーフロー モードは、xlWrapxlSaturate、または xlThrowOverflow のいずれかに指定します。量子化モードとオーバーフロー モードは、対にして指定する必要があります。量子化モードとオーバーフロー モードを指定しない場合は、xfix 関数で符号付きおよび符号なしの値に対して xlTruncatexlWrap が使用されます。xfix 関数の 2 番目の引数は、倍精度または AMD 固定小数点値で指定します。定数が整数値である場合は、xfix 関数を使用する必要はありません。MCode ブロックで、自動的に適切な固定小数点値に変換されます。

MCode ブロックのパラメーター ダイアログ ボックスで MATLAB function に「xlSimpleArith」を入力した場合は、ブロックに 2 つの入力ポート a および b と、4 つの出力ポート z1、z2、z3、および z4 が表示されます。

図 1. xlSimpleArith MCode パラメーター
図 2. xlSimpleArith デザイン

AMD のデータ型および関数を使用する M 関数は、MATLAB のコマンド ウィンドウでテストできます。たとえば、MATLAB のコマンド ウィンドウに「[z1, z2, z3, z4] = xlSimpleArith(2, 3)」と入力すると、次の行が表示されます。

UFix(9, 3): 3.500000 
Fix(12, 4): -8.687500 
Fix(12, 8): 7.996094 
Bool: true 
注記: 2 つの引数 2 および 3 は、自動的に固定小数点値に変換されています。引数として浮動小数点値を使用する場合は、xfix 関数呼び出しが必要です。