Main Content

Simulink データ型の考慮事項

次のガイドラインは、HDL コード生成用の Simulink® モデルで使用するデータ型の推奨設定を示します。各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。

logical データでの boolean の使用と数値データでの Ufix1 の使用

ガイドライン ID

2.10.1

重大度

必須

説明

Boolean および固定小数点型の ufix1 は、MATLAB® および Simulink の両方で 1-bit データ型です。これらの型の処理方法は異なります。

  • イネーブル信号およびローカル リセット信号などの制御ロジック信号には Boolean を使用します。固定小数点データ型の Boolean 信号を計算する場合、Data Type Conversion を使用して信号を fixdt(0,1,0) 型に変換します。

  • 数値計算を実行するには、fixdt(0,1,0) を使用します。出力ビット幅がビット幅より大きくなることがあります。そのような演算を実行するには、numerictype プロパティが fixdt(0,1,0) であるため Inherit: Inherit via internal rule 設定を使用します。

Gain ブロックのデータ型の指定

ガイドライン ID

2.10.2

重大度

推奨

説明

Gain ブロックには [ゲイン] パラメーターと [出力データ型] 設定があります。これらの設定には固定小数点データ型を使用することを推奨します。Gain ブロックの [ブロック パラメーター] ダイアログ ボックスで、以下を行います。

  • fixdt(1,16,8) などの Simulink.NumericType オブジェクトを指定する。

  • ブロックの [ゲイン] パラメーターが丸められたパラメーター値を使用していないことを確認する。ゲイン値を丸めないようにするには、fi(3.44,0,8,4) のように fi オブジェクトを指定します。

  • [Inherit:Inherit via internal rule] を使用しないようにする。この設定により誤ったデータ型がブロックに割り当てられるため、HDL コード生成エラーが発生する可能性があります。

列挙データ型の制限

ガイドライン ID

2.10.3

重大度

必須

説明

パイプラインおよびリソース共有などの最適化によっては、列挙データ型が存在するためにシームレスに動作しません。必要に応じて、列挙型を使用することを推奨します。列挙型を使用してモデル化を行う場合、HDL コード生成には一定の制約があります。

  • 最上位レベルの DUT の入力端子または出力端子には列挙データ型を使用できない。

  • 列挙値を使用した */- および + などの算術演算を実行できません。

固定小数点データ型で正弦関数と余弦関数を計算するために最適な Simulink ブロックの選択

ガイドライン ID

2.10.4

重大度

推奨

説明

Trigonometric Function ブロック、n-D Lookup Table ブロック、Sine HDL Optimized ブロック、Cosine HDL Optimized ブロック、および NCO (DSP HDL Toolbox) ブロックを使用して、固定小数点データ型で正弦関数と余弦関数を計算できます。これらのブロックごとに異なるレイテンシが追加され、速度と面積について得られるパフォーマンスが異なります。特定のユース ケースに基づいて、適切なブロックを選択してください。

最適なブロックを決定するには、次のガイドラインに従ってください。

  • 固定小数点アプリケーションの精度を高めるには、Trigonometric Function ブロックを使用してください。CORDIC 近似の反復回数を増やすことができるため、最高の精度が得られます。

  • 速度を向上させるには、n-D Lookup Table ブロックを使用してください。高速計算機能があるため、1 サイクルで出力が生成されます。比較すると、Trigonometric Function ブロックの CORDIC 近似法では数サイクルかかります。

  • 回路の面積のサイズを最小化するには、Sine HDL Optimized and Cosine HDL Optimized ブロックを使用してください。n-D Lookup Table ブロックと比較して、メモリの使用量はわずか 1/4 です。

さらに、次の制限事項を考慮してください。

  • 必要な精度の結果、ルックアップ テーブル (LUT) のサイズが利用可能なブロック RAM 容量を超えた場合は、[近似法] パラメーターを CORDIC 法に設定して Trigonometric Function ブロックを使用してください。

  • 固定小数点 Trigonometric Function ブロックの場合、動作速度はレイテンシの設定に依存します。

ブロック RAM 割り当てのガイドライン:

  • 必要に応じて、n-D Lookup Table ブロック、Sine HDL Optimized ブロック、Cosine HDL Optimized ブロック、NCO ブロックをブロック RAM に割り当ててください。

  • n-D Lookup Table ブロックをブロック RAM に割り当てるには、[HDL ブロック プロパティ] ウィンドウで [MAPToRAM] パラメーターを設定するか、n-D Lookup Table ブロックの後に Delay ブロックを挿入します。

  • Sine HDL Optimized ブロックおよび Cosine HDL Optimized ブロックをブロック RAM に配置する場合、その直後に Delay ブロックを配置しないでください。この構成により、テーブル データをスライス LUT に割り当てることができなくなります。

次の表では、固定小数点データ型で正弦関数と余弦関数を計算するために使用できる Simulink ブロックを比較しています。

ユース ケースブロック名ブロック パスパラメーター設定サポートされている三角関数特徴制限
精度Trigonometric FunctionSimulink/Math Operations/ Trigonometric Function

[近似法][CORDIC] に設定します。

[LatencyStrategy] の詳細について。LatencyStrategyを参照してください。

sin, cos, cos+jsin, sincos, atan2

このブロックは計算に CORDIC 近似アルゴリズムを使用します。このアルゴリズムはメモリを使用しませんが、パイプラインによる遅延が発生します。ビット幅が大きくなるほど精度が向上しますが、回路サイズは他の手法と比較して小さいままになります。詳細については、Trigonometric Function を参照してください。

ブロック パラメーターで指定する反復回数は、固定小数点データの語長以下の自然数でなければなりません。

速度n-D Lookup TableHDL Coder/Lookup Tables/n-D Lookup Table

[内挿法][フラット] または [線形の点と勾配] に設定します。

sin, cos, exp(j)

このブロックは全周期にわたってメモリを占有するため、回路の面積サイズの観点から非効率的です。

n-D Lookup Tableの「拡張機能」セクションを参照してください。

回路の面積のサイズSine HDL Optimized and Cosine HDL Optimized HDL Coder/Lookup Tables/Sine HDL Optimized and Cosine HDL Optimized

既定のブロック設定

sin, cos, exp(j), sincos

このブロックは 1/4 周期以下のテーブル データを使用するため効率的です。

ブロック RAM にマッピングする場合は、Lookup Table ブロックの直後に Delay ブロックを配置しないでください。

速度と回路の面積のサイズNCODSP HDL Toolbox/Signal Operations/NCO

[位相オフセットのソース][入力端子][位相増分]0 に設定します。

sin, cos, exp(j), sincos

このブロックは ¼ 周期以下のテーブル データを使用するため効率的です。

このブロックは信号生成用に設計されており、適切なパラメーターを構成することで正弦関数と余弦関数を計算するために使用できます。NCO (DSP HDL Toolbox)を参照してください。

次の表では、Xilinx® Kintex® 7、XC7K325T FFG900 デバイスで single 固定小数点データ型を使用した論理合成での関数 sin の演算結果を比較しています。

ブロック名ブロック パスパラメーター設定ブレーク ポイント数データ点数最大周波数 (MHz)パスの遅延 (ns)FPGA リソース使用量
LUTレジスタブロック RAMDSP
Trigonometric Function ブロックSimulink/Math Operations/ Trigonometric Function

[近似法][CORDIC][LatencyStrategy][カスタム][CustomLatency]13 に設定します。

該当なし該当なし3133.196565060該当なし

[近似法][CORDIC][LatencyStrategy][カスタム][CustomLatency]6 に設定します。

該当なし該当なし2653.7667192470該当なし

[近似法][CORDIC][LatencyStrategy][カスタム][CustomLatency]0 に設定します。

該当なし該当なし5020.015686590該当なし
n-D Lookup Table ブロックHDL Coder/Lookup Tables/n-D Lookup Table

[内挿法][フラット] に設定します。

1024該当なし6191.161421120.5該当なし

[内挿法][線形の点と勾配] に設定します。

128該当なし1099.158892602
Sine HDL Optimized and Cosine HDL Optimized ブロックHDL Coder/Lookup tables/Sine HDL Optimized and Cosine HDL Optimized

既定のブロック設定。

該当なし10243742.67252130.5該当なし
NCO ブロックDSPHDL Toolbox/Signal Operations/NCO

既定のブロック設定。

該当なし該当なし3562.809481130.5該当なし

浮動小数点データ型で正弦関数と余弦関数を計算するために最適な Simulink ブロックの選択

ガイドライン ID

2.10.5

重大度

推奨

説明

Trigonometric Function ブロックまたは n-D Lookup Table ブロックを使用して、浮動小数点データ型で正弦関数と余弦関数を計算できます。これらのブロックごとに異なるレイテンシが追加され、速度と面積について得られるパフォーマンスが異なります。特定のユース ケースに基づいて、適切なブロックを選択してください。

最適なブロックを決定するには、次のガイドラインに従ってください。

  • n-D Lookup Table ブロックよりも優れた精度と速度を実現し、回路の面積を小さくするために Trigonometric Function ブロックを使用してください。

  • ブロック RAM では、n-D Lookup Table ブロックを使用してください。Trigonometric Function ブロックは RAM ストレージには適していません。

さらに、次の制限事項を考慮してください。

  • [LatencyStrategy]ZERO, MIN, MAX にすると、クロック周波数が変更されます。

  • Trigonometric Function ブロックは浮動小数点論理回路の計算によって広いダイナミック レンジをサポートしていますが、その複雑度により、回路の面積が増大することがあります。

ブロック RAM 割り当てのガイドライン

n-D Lookup Table ブロックをブロック RAM に割り当てるには、[HDL ブロック プロパティ] ウィンドウで [MAPToRAM] パラメーターを設定するか、n-D Lookup Table ブロックの後に Delay ブロックを挿入します。

次の表では、浮動小数点データ型で正弦関数と余弦関数を計算するために使用できる Simulink ブロックを比較しています。

ユース ケースブロック名ブロック パスサポートされているデータ型パラメーター設定サポートされている三角関数
精度Trigonometric FunctionSimulink/Math Operations/ Trigonometric Functionsingle

[近似法][なし] に設定します。

LatencyStrategy の設定については、浮動小数点演算子のレイテンシ値を参照してください。

sin, cos, cos+jsin, sincos, tan, asin, acos, atan, atan2, sinh, cosh, tanh, asinh, acosh, atanh.
速度 (ブロック RAM に実装)n-D Lookup TableHDL Coder/Lookup Tables/n-D Lookup Tablesingle、double、half

[内挿法][線形の点と勾配] または [フラット] に設定します。

LatencyStrategy の設定については、n-D Lookup Table を参照してください。

sin, cos, cos+jsin, sincos, tan, asin, acos, atan, atan2, sinh, cosh, tanh, asinh, acosh, atanh.

使用可能な関数はテーブル データの設定によって異なります。

次の表では、Xilinx Kintex 7 XC7K325T FFG900 デバイスで single 浮動小数点を使用した論理合成での関数 sin の演算の結果を比較しています。

ブロック名ブロック パスパラメーター設定ブレーク ポイント数最大周波数 (MHz)パスの遅延 (ns)FPGA リソース使用量
LUT レジスタブロック RAM DSP
Trigonometric Function Simulink/Math Operations/ Trigonometric Function

[近似法][なし][LatencyStrategy][最大値] に設定します。

該当なし2543.9423749254307

[近似法][なし][LatencyStrategy][ゼロ] に設定します。

該当なし2343.63434007
n-D Lookup TableHDL Coder/Lookup Tables/n-D Lookup Table

[内挿法][線形の点と勾配][LatencyStrategy][ゼロ] に設定します。数値誤差のオーダーは 1e-3 です。

641089.17762028811

[内挿法][線形の点と勾配][LatencyStrategy][最大値] に設定します。数値誤差のオーダーは 1e-3 です。

641039.7086456459311

[内挿法][フラット][LatencyStrategy][最大値] に設定します。数値誤差のオーダーは 1e-7 です。

10248212.1083324049011

参考

関数

関連するトピック