Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

サブシステムと浮動小数点 IP のリソース共有

"リソース共有" とは、HDL Coder™ によって行われる面積の最適化の 1 つです。機能的に等価な複数のリソースが特定され、単一のリソースに置き換えられます。同じ演算を実行するために、データが共有リソース全体で時間多重化されます。リソース共有の仕組みの詳細については、リソース共有を参照してください。

次のガイドラインは、リソース共有最適化を Atomic サブシステムおよび MATLAB Function ブロックなどのサブシステムおよび浮動小数点 IP で効率的に使用する方法を示します。各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。

サブシステム共有の一般的な注意事項

ガイドライン ID

3.1.5

重大度

推奨

説明

ProductAdd および Delay ブロックをグループ化して 1 つの DSP スライスにマッピングする場合など同じサブシステムのリソースを共有するには、共有対象のサブシステムは Atomic Subsystem ブロックまたは MATLAB Function ブロックでなければなりません。

  • 既存のクロック レートまたはそれより高いクロック レートでリソースを共有するかどうかを決定します。

  • Enabled Subsystem の共有はサポートされていません。共有リソースの場合、イネーブル セマンティクスがない Atomic サブシステムを使用します。

  • 共有するサブシステムの数が大きいか同じであるSharingFactorを指定します。

    たとえば、Atomic サブシステムが 10 個あり、[SharingFactor]5 に設定する場合、HDL Coder はリソース共有をサブシステムの 2 個のインスタンスに実装できません。サブシステムを共有するには、サブシステムを分割して小さい方のサブシステムのインスタンスを共有します。

  • さまざまなサブシステムに指定する [SharingFactor] を確認します。リソース共有最適化は、さまざまなサブシステムの [SharingFactor] の LCM (最小公倍数) に従って、共有リソースをオーバークロックします。

    たとえば、一方の Subsystem では [SharingFactor]5 に指定し、他方の Subsystem では [SharingFactor]7 に指定する場合、リソース共有最適化は 35 に従って共有リソースをオーバークロックします。そのような場合、57 などのように、両方のサブシステムで同じ [SharingFactor] を使用することを推奨します。この計算の詳細については、リソース共有の仕組みを参照してください。

MATLAB Function ブロックと共有するための MATLAB Datapath アーキテクチャの使用

ガイドライン ID

3.1.6

重大度

推奨

説明

HDL Coder は、以下の MATLAB Function ブロックを共有します。

  • Simulink® チェックサムが同一である。チェックサムを確認するには、Simulink.Subsystem.getChecksum を使用します。

  • HDL ブロック プロパティが同一である。

ブロックで以下が使用されていないことを確認します。

  • 永続変数

  • ループのストリーム

  • 出力パイプライン

MATLAB Datapath アーキテクチャを使用して、MATLAB Function ブロック内および MATLAB Function ブロックを超えたリソースを Simulink モデル内の他のブロックと共有できます。このアーキテクチャを使用すると、MATLAB Function ブロックがコード ジェネレーターで通常の Subsystem ブロックと同様に扱われます。この機能により、MATLAB Function ブロックを使用して速度と面積のさまざまな最適化をさらに広く適用できます。MATLAB Datapath アーキテクチャを使用した、MATLAB Function ブロック境界を越えた HDL 最適化を参照してください。

Atomic サブシステムの共有

ガイドライン ID

3.1.7

重大度

推奨

説明

HDL Coder は、同じ Simulink チェックサムと同じ HDL ブロック プロパティを持つ Atomic Subsystem ブロックを共有できます。

Atomic Subsystem ブロックを共有するために、ブロックに含めることができる状態要素は以下のとおりです。

  • Delay

  • Unit Delay

  • Unit Delay Enabled Synchronous

  • Unit Delay Resettable Synchronous

  • Unit Delay Enabled Resettable Synchronous

状態要素は、[初期条件] パラメーターを 0 に設定しなければなりません。

同期セマンティクスをもつ Enabled Subsystem 内の Atomic サブシステムの共有はサポートされていません。リソースを共有するには、クラシック セマンティクスをもつ Enabled Subsystem を使用します。

次のブロックまたはブロック実装を含む Atomic サブシステムは共有できません。

  • Detect Change

  • Discrete Transfer Fcn

  • HDL FFT

  • HDL FIFO

  • Math Function (conj、hermitian、transpose)

  • 永続変数を含む MATLAB Function ブロック

  • Sqrt

  • カスケード アーキテクチャ (MinMax、Product、Sum)

  • CORDIC アーキテクチャ

  • ニュートン法逆数アーキテクチャ

  • Discrete FIR Filter を含む Filter ブロック

  • Communications Toolbox™ ブロック

  • Discrete FIR Filter を除く DSP System Toolbox™ ブロック

  • Stateflow® ブロック

  • 遅延の均衡化でサポートされていないブロック。詳細については、遅延の均衡化の制限を参照してください。

HDL Coder は、同じ Simulink チェックサムと同じ HDL ブロック プロパティを持つ Atomic Subsystem ブロックを共有できます。

Atomic Subsystem ブロックを共有する場合、ブロックに含めることができる状態要素は以下のとおりです。

  • Delay

  • Unit Delay

  • Unit Delay Enabled Synchronous

  • Unit Delay Resettable Synchronous

  • Unit Delay Enabled Resettable Synchronous

状態要素は、[初期条件] パラメーターを 0 に設定しなければなりません。

次のブロックまたはブロック実装を含む Atomic サブシステムは共有できません。

  • Detect Change

  • Discrete Transfer Fcn

  • HDL FFT

  • HDL FIFO

  • Math Function (conj、hermitian、transpose)

  • 永続変数を含む MATLAB Function ブロック

  • Sqrt

  • カスケード アーキテクチャ (MinMax、Product、Sum)

  • CORDIC アーキテクチャ

  • ニュートン法逆数アーキテクチャ

  • Discrete FIR Filter を含む Filter ブロック

  • Communications Toolbox ブロック

  • Discrete FIR Filter を除く DSP System Toolbox ブロック

  • Stateflow ブロック

  • 遅延の均衡化でサポートされていないブロック。詳細については、遅延の均衡化の制限を参照してください。

浮動小数点 IP のリソース共有

ガイドライン ID

3.1.8

重大度

推奨

説明

複数を共有するには、次の手順に従います。

  • 浮動小数点加算器の ShareAdders をオンに設定する。

  • 浮動小数点乗算器の ShareMultipliers がオンであることを確認する。

  • 他の浮動小数点リソースの ShareFloatingPointIP をオンに設定する。

ネイティブ浮動小数点を使用したモデル化も参照してください。

参考

Simulink コンフィギュレーション パラメーター

関連する例

詳細