Main Content

ネイティブ浮動小数点を使用したモデル化

HDL Coder™ のネイティブ浮動小数点テクノロジーによって、浮動小数点設計から HDL コードを生成できます。主な機能のいくつかを以下に示します。

  • 任意の FPGA または ASIC に展開可能な、ターゲットに依存しない HDL コードの生成

  • 非正規数、例外、丸めモードを含む IEEE-754 の全機能のサポート

  • Math ブロックおよび Trigonometric ブロックの広範なサポート

これらのガイドラインは、ネイティブ浮動小数点のコード生成の設計をモデル化する際のベスト プラクティスとして示したものです。

各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。

ガイドライン ID

1.5.1

重大度

推奨

説明

HDL Coder でのネイティブ浮動小数点のサポートで、浮動小数点設計からコードを生成します。設計に複素数演算や三角関数演算が使用されている場合、またはダイナミック レンジの広いデータが含まれている場合は、ネイティブ浮動小数点を使用します。生成された HDL コードはターゲットに依存せず、浮動小数点演算の IEEE 754 標準に準拠します。詳細については、HDL Coder のネイティブ浮動小数点サポート入門を参照してください。

ネイティブ浮動小数点のサポートを HDL Coder で使用する場合、次のモデリング ガイドラインを使用できます。

HDL Floating Point Operations ライブラリのブロックを使用する

[HDL Floating Point Operations] ブロック ライブラリは、数学関数と三角関数、およびネイティブ浮動小数点モードでの HDL コード生成用に構成された特定の Simulink ブロックから成ります。たとえば、[Architecture][Fully Parallel] に設定された Discrete FIR Filter です。

精度とハードウェア リソースの使用率の要件に基づいて浮動小数点型を使用する

ネイティブ浮動小数点モードで浮動小数点データ型および固定小数点データ型を含むモデルに対して、HDL コードを生成できます。浮動小数点型は、ダイナミック レンジが広くなりますが、ターゲット ハードウェア上でより多くの面積を占有する可能性があります。Simulink® モデルでこれらのトレードオフに対する設計を行うには、アルゴリズム データ パスのモデル化には浮動小数点データ型を使用し、制御ロジックのモデル化には固定小数点型を使用することが推奨されます。浮動小数点データ型と固定小数点データ型を切り替えるには、Data Type Conversion ブロックを使用します。

データ型の考慮事項も参照してください。

モデル上でリソース共有などの最適化を有効にする

モデル上で最適化を有効にすることで、ターゲットの FPGA デバイスでの設計の面積とタイミングが改善されます。たとえば、ターゲットの FPGA デバイスで面積を節約するには、リソース共有の最適化を使用します。共有するには次を行います。

リソース共有も参照してください。

モデル内のブロックのレイテンシをシミュレートする

浮動小数点設計には既定で固有のレイテンシがあります。このレイテンシはモデルの HDL コードを生成すると追加されます。このレイテンシ情報を元の Simulink モデルに追加して、モデル内のレイテンシをシミュレートすることをお勧めします。コード ジェネレーターは HDL コード生成時にこのレイテンシを吸収します。詳細については、浮動小数点演算子のレイテンシ値を参照してください。

モデルまたはブロックのレイテンシをカスタマイズする

モデル全体のレイテンシをカスタマイズすることも、設計内の特定のブロックを選択的にカスタマイズすることもできます。カスタム設定を使用して、カスタム レイテンシを指定し、レイテンシとスループットとの間のトレードオフに対する設計を行うことができます。

詳細については、ネイティブ浮動小数点のレイテンシに関する考慮事項を参照してください。

別個の sin ブロックと cos ブロックの代わりに sincos ブロックを使用する

使用する特定のモデリング パターンでは、ネイティブ浮動小数点テクノロジーでコードを生成する場合にモデルを最適化できます。たとえば、同じ入力の三角正弦と余弦を計算する場合は、HDL Floating Point Operations ブロック ライブラリで、別個の Sin ブロックと Cos ブロックではなく、Sincos ブロックを使用します。Sincos ブロックでは、入力の正弦と余弦の計算に使用されるロジックのいくつかが共有されます。この実装で、ターゲット FPGA デバイスの面積のフットプリントが削減されます。

Trigonometric Function も参照してください。

ツリーを HDL アーキテクチャとして使用する

レイテンシの低い実装を得るには、Sum of Elements および Product of Elements などのブロックに、[ツリー][HDL Architecture] として使用します。

Sum of Elements および Product of Elements も参照してください。

参考

関数

関連するトピック