メインコンテンツ

Real Divide HDL Optimized

CORDIC アルゴリズムを使って実数入力を別の実数入力で除算して最適化された HDL コードを生成

R2021a 以降

  • Real Divide HDL Optimized block

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

説明

Real Divide HDL Optimized ブロックは、実数スカラー num を実数スカラー deny = num/den として除算した結果を出力します。

制限

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

端子

入力

すべて展開する

分子。実数値のスカラー、ベクトル、または行列として指定します。numden は同じ次元でなければなりません。

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

データ型: single | double | fixed point

分母。実数値のスカラー、ベクトル、または行列として指定します。numden は同じ次元でなければなりません。

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

データ型: single | double | fixed point

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

データ型: Boolean

出力

すべて展開する

y = num/den として、numden で除算することによって計算された出力。実数スカラーとして返されます。

ヒント

出力端子 y のデータ型は、[出力データ型] パラメーターで指定されます。

データ型: 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 = max(num.WordLength + ~issigned(num), den.WordLength + ~issigned(den)) です。

プログラムでの使用

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

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

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

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

R2024b 以降

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

依存関係

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

ヒント

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

プログラムでの使用

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

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

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

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

R2024b 以降

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

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

プログラムでの使用

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

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

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

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

ヒント

ブロック Divide by Constant HDL OptimizedReal Divide HDL Optimized および Complex Divide HDL Optimized はすべて、除算演算を実行して最適化された HDL コードを生成します。

  • Real Divide HDL Optimized および Complex Divide HDL Optimized は CORDIC アルゴリズムに基づいています。これらのブロックはさまざまな入力を受け入れますが、レイテンシが大きくなります。

  • Divide by Constant HDL Optimized は、実数入力と定数除数のみを受け入れます。このブロックを使用すると DSP スライスが消費されますが、除算演算の実行時のサイクル数が減り、クロック レートが高くなります。

アルゴリズム

すべて展開する

参照

[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 で導入

すべて展開する