Main Content

Atan2

制御信号ベースの関数 atan2 を実装する

R2020b 以降

  • HDL Math Atan2 Block

説明

HDL Math Atan2 Block

Atan2 ブロックは、実数値の入力信号 y_dataInx_dataIn の 4 象限逆正接を実行します。このブロックは COordinate Rotation DIgital Computer (CORDIC) の近似手法を使用して、入力の 4 象限逆正接を計算します。詳細については、アルゴリズムの CORDIC 近似手法を参照してください。このブロックには入出力データが有効かどうかを示す制御信号があります。また、アルゴリズムの反復回数およびレイテンシ手法も指定できます。

Simulink® モデルでこのブロックを使用するには、MATLAB® コマンド ウィンドウで以下のコマンドを入力して HDLMathLib ライブラリを開きます。

open_system('HDLMathLib')

レイテンシの考慮事項

Atan2 ブロックをレイテンシを加味してシミュレートできます。このブロックは、MATLAB Function ブロック LumpLatency を含むマスク サブシステムです。このサブシステムはこの MATLAB Function ブロックを使用して、[反復回数] に基づいてレイテンシを計算します。ブロックのレイテンシを計算する関数を表示するには、マスク サブシステムの LumpLatency ブロックを開きます。マスク内を表示するには、ブロックの ⇩ アイコンをクリックします。

Atan2 ブロックの最大レイテンシ LMax は、以下の方程式によって計算されます。

LMax = N + 3

ここで、N は [反復回数] パラメーターの値です。

Atan2 ブロックの最小レイテンシ LMin は、以下の方程式によって計算されます。

LMin = 2 + ceil(N / 3)

このブロックでは 4 つのレイテンシ モードがサポートされています。[レイテンシ手法] パラメーターを [カスタム] に設定して、カスタム レイテンシ値を指定できます。詳細については、Custom latencyを参照してください。

制限

  • このブロックでは、halfsingledouble などの浮動小数点データ型はサポートされていません。

端子

入力

すべて展開する

y 座標のデータ入力信号。入力データは実数値でなければなりません。

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

x 座標のデータ入力信号。入力は実数値でなければなりません。

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

入力信号が有効かどうかを示す入力制御信号。

データ型: Boolean

出力

すべて展開する

x 座標と y 座標の入力信号の 4 象限逆正接。出力は原点から点 (x_dataIn, y_dataIn) へのベクトルと正の x 軸がなす角度です。

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

出力信号が有効かどうかを示す出力制御信号。

データ型: Boolean

パラメーター

すべて展開する

CORDIC アルゴリズムの反復回数を指定します。

プログラムでの使用

ブロック パラメーター: iter
: 文字ベクトル
: Integer values
既定の設定: '11'

設計内のブロックを最小レイテンシ、最大レイテンシ、カスタム レイテンシ、またはゼロ レイテンシのいずれにマッピングするかを指定します。詳細については、LatencyStrategyを参照してください。

プログラムでの使用

ブロック パラメーター: latencyMode
: 文字ベクトル
: 'Max' | 'Min' | 'Custom' | 'Zero'
既定の設定: 'Max'

[レイテンシ手法][カスタム] に設定した場合は、このパラメーターを使用してカスタム レイテンシ値を指定します。レイテンシは範囲 [0, L] の非負の整数でなければなりません。ここで、L は Atan2 ブロックの最大レイテンシ値です。詳細については、CustomLatencyを参照してください。

依存関係

このパラメーターを有効にするには、[レイテンシ手法][カスタム] に設定します。

プログラムでの使用

ブロック パラメーター: customLatencyValue
: 整数
: 0 to Max latency
既定の設定: 0

ヒント

このブロックでは、HDL Coder™ を使用した HDL コード生成がサポートされています。HDL Coder には、HDL の実装および合成されたロジックに影響する追加の構成オプションがあります。詳細については、HDL ブロック プロパティを参照してください。

アルゴリズム

すべて展開する

参照

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

[2] Andraka, Ray “A Survey of CORDIC Algorithm for FPGA Based Computers.” Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays. Feb. 22–24 (1998): 191–200.

[3] Walther, J.S., “A Unified Algorithm for Elementary Functions,” Proceedings of the Spring Joint Computer Conference, May 18-20, 1971: 379–386.

[4] Schelin, Charles W., “Calculator Function Approximation,” The American Mathematical Monthly 90, no. 5 (1983): 317–325.

バージョン履歴

R2020b で導入