Main Content

フィルターのサブシステム最適化

Discrete FIR Filter ブロック (スカラーまたはマルチチャネル入力データと使用する場合) と Biquad Filter (DSP System Toolbox) ブロックは、サブシステム レベルの最適化に関与しています。最適化プロパティを設定するには、サブシステムを右クリックし、[HDL プロパティ] ダイアログ ボックスを開きます。

サブシステムレベルの最適化にこれらのブロックを使用する場合、ブロックレベルの [Architecture] は既定の [Fully parallel] に設定したままにしなければなりません。

フレームベースの入力モードで Discrete FIR Filter を使用するときは、これらのサブシステム最適化を使用することはできません。

共有

これらのフィルター ブロックでは、フィルター内およびサブシステムの複数のブロックにまたがるリソースの共有がサポートされます。[SharingFactor] を指定すると、最適化ツールは時間多重化を使用してリソースを共有するフィルター実装を HDL に生成します。最小限の数の乗算器を使用する HDL 実装を生成するには、[SharingFactor] を乗算器の合計数以上の数に設定します。共有アルゴリズムにより、同じ入出力データ型をもつ乗算器が共有されます。ブロック間での共有を有効にするには、フィルターの内部データ型をカスタマイズする必要がある場合があります。あるいは、[SharingFactor] の選択によって特定のシステム クロック レートをターゲットとすることもできます。

リソース共有は既定で乗算器に適用されます。加算器を共有するには、[コンフィギュレーション パラメーター][HDL コード生成][グローバル設定][最適化] ダイアログ ボックスで [リソース共有] の下のチェック ボックスをオンにします。

詳細については、リソース共有およびマルチチャネル フィルター サブシステムの面積の削減の例を参照してください。

また、[SharingFactor] はマルチチャネル フィルターと併用できます。フィルター サブシステムの面積の削減を参照してください。

ストリーミング

"ストリーミング" とは、複数のチャネル間で設計のアトミックな部分を共有することです。マルチチャネル サブシステムのストリーミング HDL 実装を生成するには、[StreamingFactor] を設計内のチャネル数に設定します。

サブシステムにフィルター ブロックが 1 つ含まれる場合、ブロックレベルの [ChannelSharing] オプションとサブシステムレベルの [StreamingFactor] オプションは結果として同様の HDL 実装になります。[StreamingFactor] は、1 つを超えたフィルター ブロックか、最適化に使用できる追加のマルチチャネル ロジックのどちらかがサブシステムに含まれる場合に使用します。ブロックレベルの [ChannelSharing][off] に設定し、サブシステム レベルで [StreamingFactor] を使用しなければなりません。

ストリーミングおよびフィルター サブシステムの面積の削減の例を参照してください。

パイプライン

サブシステム レベルで [DistributedPipelining] を有効にすると、パイプライン最適化にフィルターを使用できます。最適化ツールは、サブシステム レベルで指定された [InputPipeline] および [OutputPipeline] のパイプライン ステージで動作します。最適化ツールはまた、次のブロックレベルのパイプライン ステージでも動作します。

  • [InputPipeline] および [OutputPipeline]

  • [MultiplierInputPipeline] および [MultiplierOutputPipeline]

  • [AddPipelineRegisters]

最適化ツールはフィルターのアーキテクチャ内で設計の遅延を移動しません。分散型パイプライン方式を参照してください。

[コンフィギュレーション パラメーター] で有効にしている場合、フィルター ブロックもクロックレート パイプラインに使用できます。この機能は既定で有効になっています。クロックレート パイプラインを参照してください。

マルチチャネル フィルター サブシステムの面積の削減

マルチチャネル フィルターと周囲のロジックの HDL 実装で乗算器の数を削減するには、StreamingFactor HDL Coder™ 最適化を使用します。

モデルには、HDL コード生成をターゲットとしたフィルター サブシステムに接続されている 2 チャネルの正弦波信号ソースが含まれます。

サブシステムには、Discrete FIR Filter ブロックと定数乗算器が含まれます。乗算器は、サブシステム内の対象となるすべてのロジックで動作する最適化を示すために含められています。

フィルターには 44 個の対称の係数があります。最適化を有効にしない場合、生成される HDL コードは対称性を利用します。最適化されない HDL 実装では 46 個の乗算器を使用します。内訳は、フィルターのチャネルごとに 22 個、Product ブロックのチャネルごとに 1 つです。

Multichannel FIR Filter サブシステムでストリーミング最適化を有効にするには、サブシステムを右クリックし、[HDL コード][HDL ブロック プロパティ] の順に選択します。

この設計は 2 チャネル システムであるため、StreamingFactor は 2 に設定します。

最適化の効果を確認するには、[コンフィギュレーション パラメーター][HDL コード生成][リソース利用レポートを生成] および [最適化レポートを生成] を選択します。次に、HDL コードを生成するには、Multichannel FIR Filter サブシステムを右クリックし、[HDL コード][サブシステムに対する HDL を生成] の順に選択します。

ストリーミング係数が適用されると、1 チャネルのロジックが 1 回インスタンス化され、元のモデルの 2 倍のレートで実行されます。

[コード生成レポート] ウィンドウで、[高水準リソース レポート] をクリックします。生成された HDL コードでは、23 個の乗算器を使用しています (最適化されないコードでは 46 個)。フィルター カーネル内の乗算器とその後のスケーリングはチャネル間で共有されます。

マルチチャネル フィルターに SharingFactor を適用するには、SharingFactor を 23 に設定します。

最適化された HDL では乗算器を 2 つだけ使用しています。最適化ツールでは異なるサイズの乗算器は共有されません。

フィルター サブシステムの面積の削減

マルチフィルター設計の HDL 実装で乗算器の数を減らすには、SharingFactor HDL Coder™ 最適化を使用します。

モデルには、HDL コード生成をターゲットとしたフィルター サブシステムに接続されている正弦波信号ソースが含まれます。

サブシステムには、Discrete FIR Filter ブロックと Biquad Filter ブロックが含まれます。この設計は、複数のフィルター ブロック間で最適化ツールがリソースを共有する方法を示します。

Discrete FIR Filter ブロックには 43 個の対称の係数があります。Biquad Filter ブロックには 6 つの係数があり、そのうちの 2 つの値は 1 です。最適化を有効にしない場合、生成される HDL コードは対称で値が 1 の係数を利用します。サブシステムの最適化されない HDL 実装では 27 個の乗算器を使用します。

Multi-Filter Subsystem でストリーミング最適化を有効にするには、サブシステムを右クリックし、[HDL コード][HDL ブロック プロパティ] の順に選択します。

SharingFactor を 27 に設定し、設計を単一の乗算器まで削減します。最適化ツールは一致するデータ型をもつ乗算器を共有しようとします。単一の乗算器まで削減するには、フィルター ブロックの内部データ型が互いに一致するように設定しなければなりません。

最適化の効果を確認するには、[コンフィギュレーション パラメーター][HDL コード生成][リソース利用レポートを生成] および [最適化レポートを生成] を選択します。次に、HDL コードを生成するには、Multi-Filter Subsystem を右クリックし、[HDL コード][サブシステムに対する HDL を生成] の順に選択します。

SharingFactor が適用されると、サブシステムでレートが 27 アップサンプリングされ、すべての係数で単一の乗算器が共有されます。

[コード生成レポート] ウィンドウで、[高水準リソース レポート] をクリックします。生成された HDL コードでは 1 つの乗算器を使用しています。

関連するトピック