メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Sin

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

  • HDL Math Sine Block

説明

HDL Math Sine Block

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

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

open_system('HDLMathLib')

レイテンシの考慮事項

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

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

LMax = N + 1

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

[反復回数]2 以下の場合、Sin ブロックの最小レイテンシ LMin2 です。反復回数が 2 より大きい場合、最小レイテンシは、以下の方程式によって計算されます。

LMin = 2 + ceil((N -1) / 3)

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

制限

このブロックには以下の制限があります。

  • halfsingledouble などの浮動小数点データ型はサポートされない。

  • Synchronous Subsystem では使用できない。

  • リソース共有最適化はサポートされない。

端子

入力

すべて展開する

正弦関数を計算する入力データ信号。入力値の範囲は -2π ~ 2*π です。

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

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

データ型: Boolean

出力

すべて展開する

入力信号の正弦を示す出力データ信号。

データ型: 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 は Sin ブロックの最大レイテンシ値です。詳細については、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 で導入