DSP48Eの例: nタップFIRフィルタを作成する
- 更新日2025-03-06
- 4分で読める
n個のDSP48E関数を使用して、nタップFIRフィルタを作成することができます。各関数はFIRフィルタの1つの係数 (タップ) を処理し、h[0..n–1]はFIRフィルタの n 係数を表します。以下の手順に従って、3タップFIRフィルタを作成します。
- サポートされているFPGAターゲットで新規のブランクVIを作成します。
- DSP48E関数をブロックダイアグラムに追加します。
- この関数をダブルクリックし、以下の方法で構成します。
- 関数ページ:

- 端子ページ:

- OKボタンをクリックして変更を保存し、ブロックダイアグラムに戻ります。
- 関数ページ:
- 別のDSP48E関数をブロックダイアグラムに追加します。この関数を以下の方法で構成します。
- 関数ページ:

- 端子ページ:

- OKボタンをクリックして変更を保存し、ブロックダイアグラムに戻ります。
- 関数ページ:
- <Ctrl>キーを押しながらこのノードをドラッグし、ブロックダイアグラムにコピーを作成します。ブロックダイアグラムに合計n個のDSP48E関数が作成されるまでこの手順を繰り返します。3タップフィルタのこの例では、ブロックダイアグラムに3つのDSP48E関数があります。
- n番目の関数をダブルクリックし、端子タブをクリックして、pcoutチェックボックスをオフにします。
- OKボタンをクリックして変更を保存し、ブロックダイアグラムに戻ります。

- 関数と端子を配線します。
- フィルタリングするデータを各DSP48E関数のa入力に配線します。この入力のソースによって、a入力の整数ワード長を調整する必要がある場合があります。
- 連続する各DSP48E関数のb入力に個々のフィルタ係数を配線します。配線する値をこれらの端子にスケールする必要がある場合があります。
- 各pcout出力端子を次のDSP48E関数のpcin入力端子に配線します。
- 最後のDSP48E関数のp出力端子は、フィルタ処理済みのデータを返します。この関数の表示器を作成するか、またはそれを別の関数に配線します。
- これでブロックダイアグラムは以下の図のようになります。

- VIをDSP48E FIR Filter.viという名前で任意のディレクトリに保存します。
上記の図で、各関数のa入力はフィルタリングするデータを処理します。b入力は、各DSP48E関数に1つずつ割り当てられる合計 n 個のフィルタ係数 (h[0]~h[n–1]まで) を処理します。
ヒント n が大きい値の場合、以下の推奨事項が適用されます。
- 大規模な配列はFPGAで領域を大幅に消費します。したがって、係数を保存する際にはメモリ項目などの他のメソッドを使用することをNIは推奨します。また、一連のクロックサイクルに対して複数の係数を保存する場合、離散遅延関数を使用することができます。
- ブロックダイアグラムには、複数のDSP48Eアイコンが配置されます。各アイコンが使用する領域を減らすために、これらのアイコンを縮小することができます。
これで、このVIをシミュレーションのためにエクスポートできるようになりました。FPGAターゲットでこのVIを実行するには、シングルサイクルタイミングループでコードを囲む必要があります。