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 Function | Simulink/Math Operations/ Trigonometric Function | [近似法] を [LatencyStrategy] の詳細について。LatencyStrategyを参照してください。 | sin , cos , cos+jsin , sincos , atan2 | このブロックは計算に | ブロック パラメーターで指定する反復回数は、固定小数点データの語長以下の自然数でなければなりません。 |
速度 | n-D Lookup Table | HDL 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 ブロックを配置しないでください。 |
速度と回路の面積のサイズ | NCO | DSP HDL Toolbox/Signal Operations/NCO | [位相オフセットのソース] を | sin , cos , exp(j) , sincos | このブロックは ¼ 周期以下のテーブル データを使用するため効率的です。 | このブロックは信号生成用に設計されており、適切なパラメーターを構成することで正弦関数と余弦関数を計算するために使用できます。NCO (DSP HDL Toolbox)を参照してください。 |
次の表では、Xilinx® Kintex® 7、XC7K325T FFG900 デバイスで single 固定小数点データ型を使用した論理合成での関数 sin
の演算結果を比較しています。
ブロック名 | ブロック パス | パラメーター設定 | ブレーク ポイント数 | データ点数 | 最大周波数 (MHz) | パスの遅延 (ns) | FPGA リソース使用量 | |||
---|---|---|---|---|---|---|---|---|---|---|
LUT | レジスタ | ブロック RAM | DSP | |||||||
Trigonometric Function ブロック | Simulink/Math Operations/ Trigonometric Function | [近似法] を | 該当なし | 該当なし | 313 | 3.19 | 656 | 506 | 0 | 該当なし |
[近似法] を | 該当なし | 該当なし | 265 | 3.766 | 719 | 247 | 0 | 該当なし | ||
[近似法] を | 該当なし | 該当なし | 50 | 20.015 | 686 | 59 | 0 | 該当なし | ||
n-D Lookup Table ブロック | HDL Coder/Lookup Tables/n-D Lookup Table | [内挿法] を | 1024 | 該当なし | 619 | 1.1614 | 21 | 12 | 0.5 | 該当なし |
[内挿法] を | 128 | 該当なし | 109 | 9.158 | 89 | 26 | 0 | 2 | ||
Sine HDL Optimized and Cosine HDL Optimized ブロック | HDL Coder/Lookup tables/Sine HDL Optimized and Cosine HDL Optimized | 既定のブロック設定。 | 該当なし | 1024 | 374 | 2.672 | 52 | 13 | 0.5 | 該当なし |
NCO ブロック | DSPHDL Toolbox/Signal Operations/NCO | 既定のブロック設定。 | 該当なし | 該当なし | 356 | 2.809 | 48 | 113 | 0.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 Function | Simulink/Math Operations/ Trigonometric Function | single | [近似法] を LatencyStrategy の設定については、浮動小数点演算子のレイテンシ値を参照してください。 | sin , cos , cos+jsin , sincos , tan , asin , acos , atan , atan2 , sinh , cosh , tanh , asinh , acosh , atanh . |
速度 (ブロック RAM に実装) | n-D Lookup Table | HDL Coder/Lookup Tables/n-D Lookup Table | single、double、half | [内挿法] を LatencyStrategy の設定については、n-D Lookup Table を参照してください。 |
使用可能な関数はテーブル データの設定によって異なります。 |
次の表では、Xilinx Kintex 7 XC7K325T FFG900 デバイスで single 浮動小数点を使用した論理合成での関数 sin
の演算の結果を比較しています。
ブロック名 | ブロック パス | パラメーター設定 | ブレーク ポイント数 | 最大周波数 (MHz) | パスの遅延 (ns) | FPGA リソース使用量 | |||
---|---|---|---|---|---|---|---|---|---|
LUT | レジスタ | ブロック RAM | DSP | ||||||
Trigonometric Function | Simulink/Math Operations/ Trigonometric Function | [近似法] を | 該当なし | 254 | 3.942 | 3749 | 2543 | 0 | 7 |
[近似法] を | 該当なし | 23 | 43.6 | 3434 | 0 | 0 | 7 | ||
n-D Lookup Table | HDL Coder/Lookup Tables/n-D Lookup Table | [内挿法] を | 64 | 108 | 9.177 | 6202 | 88 | 1 | 1 |
[内挿法] を | 64 | 103 | 9.708 | 6456 | 4593 | 1 | 1 | ||
[内挿法] を | 1024 | 82 | 12.108 | 33240 | 490 | 1 | 1 |