単一乗算器 MACC FIR フィルター

Versal ACAP DSP エンジン アーキテクチャ マニュアル (AM004)

Document ID
AM004
Release Date
2022-09-11
Revision
1.2.1 日本語

単一乗算器 MACC FIR フィルターは、最もシンプルな DSP フィルター構造の 1 つです。完全パラレル FIR フィルターとは異なり、MACC 構造は 1 つの乗算器と 1 つのアキュムレータを使用して、逐次的に FIR フィルターを実装します。MACC FIR フィルターはハードウェアの使用量を 1/N に削減できる一方、フィルター スループットも 1/N に低下するというトレードオフがあります。一般的な FIR フィルター式は、次式のように積 (内積) の総和として定義されます。



この式では、N 個の係数の集合と N 個の各データ サンプルを乗算し、その内積を合計して個々の結果を得ています。係数の値により、フィルター特性が決まります (ローパス フィルター、バンドパス フィルター、ハイパス フィルターなど)。この式は、さまざまなアーキテクチャで各種実装 (シーケンシャル、セミパラレル、パラレルなど) にマップできます。

MACC FIR フィルターの実装、およびデータ バッファーを実装するリソースの選択に関するガイドラインは、リソース使用率に関するガイドライン を参照してください。サンプル デザインの実装では、データ バッファーに SRL16 が使用されています。無限大への丸めをサポートするため、C 入力に (2^(小数部-1)) -1 の値を適用します。乗算器の後にアキュムレータを置き、係数の数と同じサイクル数で積を合計します。この関係により、MACC FIR フィルターの性能は次式で求められます。



係数が対称な形状をしている場合、対称 MACC FIR フィルター に示す構造を利用できます。これはややコストが大きくなりますが、最大サンプル レートは 2 倍に向上します。この構造のサンプル レートは、次式で定義されます。



FIR フィルターでは多数の MACC 演算が実行される性質上、フィルターの入力よりもビット数の多い出力が得られます。この効果はフィルターのビット増加またはゲインと呼ばれます。出力幅が大きくなるため、通常は完全な精度の結果に対して丸め処理と量子化が適用されます。ただし、MACC の出力から適切なビットを選択するには完全な精度の出力を計算することが重要です。

1 つの方法は、指定した 2 の補数のサイズに対してフィルターのすべての値が最悪値であると仮定するというものです。係数が未知でも、係数を表すのに必要なビット数が既知の場合 (たとえば適応型フィルターのように係数が再ロード可能な場合) は、まず最初に一般的な飽和レベルを使用することを推奨します。この場合の出力の幅は、次の式で与えられます。



説明:
  • ceil: 最も近い整数に切り上げ
  • b: データ サンプルのビット数
  • c: 係数のビット数

MACC FIR フィルターの実装には、2 つのクロックを使用できます。高速な方のクロックを DSP および係数メモリに供給し、低速な方のクロックを PL に供給します。これにより、入力をタップ数と同じサイクルだけ保持しておく必要がなくなります (クロックを 1 つしか使用しない実装では、入力スループットとタップ数が等しくなる)。

2 つの MACC FIR フィルターのユース ケースに関連するリファレンス デザイン ファイルは、デザイン アーカイブ ファイルam004-versal-dsp-engine.zipmacc_FIR/macc_FIR および macc_FIR/macc_FIR_2_clocks ディレクトリにあります。