メインコンテンツ

Real Reciprocal HDL Optimized

CORDIC アルゴリズムを使って逆数を計算して最適化された HDL コードを生成

R2021a 以降

  • Real Reciprocal HDL Optimized block

ライブラリ:
Fixed-Point Designer HDL Support / Math Operations

説明

Real Reciprocal HDL Optimized ブロックは、1/u を計算します。ここで、u は実数スカラーです。

制限

Real Reciprocal HDL Optimized ブロックではデータ型オーバーライドはサポートされていません。

端子

入力

すべて展開する

逆数を求める値。実数値のスカラー、ベクトル、または行列として指定します。

傾きとバイアス表現は固定小数点データ型ではサポートされていません。

データ型: single | double | fixed point

入力が有効であるかどうか。boolean スカラーとして指定します。この制御信号は u 入力端子からのデータが有効であるかどうかを示します。この値が 1 (true) の場合、ブロックは u 入力端子の値を取得します。この値が 0 (false) の場合、ブロックは入力サンプルを無視します。

データ型: Boolean

出力

すべて展開する

逆数。[出力データ型] パラメーターで指定されたデータ型の実数スカラーとして返されます。

データ型: single | double | fixed point

R2024b 以降

y 出力端子の値がゼロ除算演算の結果であるかどうか。boolean スカラーとして返されます。この信号の値が 1 (true) の場合、y 端子の対応する出力値はゼロ除算の結果です。この信号の値が 0 (false) の場合、y 端子の対応する出力値は非ゼロ値による除算の結果です。

既定のゼロ除算の動作の説明については、ゼロ除算の動作を参照してください。

依存関係

この端子を有効にするには、[ゼロ除算端子を表示] パラメーターを選択します。

データ型: Boolean

出力データが有効であるかどうか。boolean スカラーとして返されます。この制御信号の値が 1 (true) の場合、ブロックは端子 y の出力を正常に計算しています。この値が 0 (false) の場合、出力データは有効ではありません。

データ型: Boolean

パラメーター

すべて展開する

出力 y のデータ型。fixdt(1,18,10)singledoublefixdt(1,16,0)、またはユーザー指定のデータ型式として指定します。型は直接指定されるか、Simulink.NumericType などのデータ型オブジェクトとして表現されます。

R2024b において: このパラメーターでは、符号なしデータ型がサポートされています。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: OutputType
値: fixdt(1,18,10) (既定値) | single | double | fixdt(1,16,0) | <data type expression>
データ型: char | string

例: set_param(gcb,"OutputType","fixdt(1,16,0)")

R2024b 以降

divideByZero 端子を表示する場合は、このパラメーターを選択します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: dbzPort
値: 0 (false) (既定値) | 1 (true)
データ型: logical

例: set_param(gcb,"dbzPort",1)

R2024b 以降

入力の語長に基づいて CORDIC の最大シフト値を自動選択します。このパラメーターが選択されている場合、既定の CORDIC の maximumShiftValuewl - 1 に等しくなります。ここで、wl = u.WordLength + ~issigned(u) です。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: autoMaximumShiftVal
値: on (既定値) | off
データ型: char | string

例: set_param(gcb,"autoMaximumShiftVal","off")

R2024b 以降

双曲線ベクトル CORDIC の最大シフト値。正の整数値スカラーとして指定します。このパラメーターの既定値は wl - 1 です。ここでは wl = u.WordLength + ~issigned(u) です。

依存関係

このパラメーターを有効にするには、[入力の語長に基づいて CORDIC の最大シフト値を自動選択] パラメーターをクリアします。

ヒント

詳細については、カスタマイズ可能なパイプラインを参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: maximumShiftValue
値: 10 (既定値) | positive integer-valued scalar
データ型: char | string

例: set_param(gcb,"maximumShiftValue","10")

R2024b 以降

パイプライン ステージごとに実行する CORDIC の反復回数。正の整数値のスカラーとして指定します。

詳細については、カスタマイズ可能なパイプラインを参照してください。詳細と、このパラメーターがレイテンシとハードウェア リソースの使用率に与える影響を示す例については、Real Reciprocal HDL Optimized ブロックとのインターフェイスハードウェア リソースの使用を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: nIterPerReg
値: 1 (既定値) | positive integer-valued scalar
データ型: char | string

例: set_param(gcb,"nIterPerReg","2")

ヒント

  • Real Reciprocal HDL Optimized ブロックの動作は fixed.cordicReciprocal 関数と同じです。関数への入力が 2 進小数点でスケーリングされた固定小数点データ型をもつ実数の場合、関数とブロックはビット単位で正確に一致する結果を提供します。

アルゴリズム

すべて展開する

参照

[1] Volder, Jack E. “The CORDIC Trigonometric Computing Technique.” IRE Transactions on Electronic Computers. EC-8, no. 3 (Sept. 1959): 330–334.

[2] Andraka, Ray. “A Survey of CORDIC Algorithm for FPGA Based Computers.” In Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays, 191–200. https://dl.acm.org/doi/10.1145/275107.275139.

[3] Walther, J.S. “A Unified Algorithm for Elementary Functions.” In Proceedings of the May 18-20, 1971 Spring Joint Computer Conference, 379–386. https://dl.acm.org/doi/10.1145/1478786.1478840.

[4] Schelin, Charles W. “Calculator Function Approximation.” The American Mathematical Monthly, no. 5 (May 1983): 317–325. https://doi.org/10.2307/2975781.

拡張機能

すべて展開する

バージョン履歴

R2021a で導入

すべて展開する