デジタルフィルタの仕様
FIRフィルタを組み込む
 前回はIIRフィルタでしたが、今回はFIR(Finite Impulse Response)フィルタを1個、FPGAに組み込みます。以下にその仕様を示します。
フィルタタイプ FIR型
次数 400次
入出力データビット数 16ビット
係数ビット数 20ビット
サンプリング周波数 12kHz
マスタークロック 48MHz

FIRは高性能で大規模
 IIRに比べてFIRフィルタは急峻なカットオフ特性や深い減衰率を持ちます(高性能)。しかし次数が100を越えてくることが多く、データを保持するRAMや係数を保持するROMが必要になり、回路は大規模になります。

FIRフィルタの構成
 FIRフィルタは以下のようにN個の乗算器と遅延器からなります。乗算器の数Nを一般的に「次数」または「タップ数」と呼び、それはFIRフィルタの性能を大きく左右します。

乗算器は1個で行う
 今回のFIRフィルタは400次(400タップ)なので、乗算器は400個必要です。しかし現実的に400個の乗算器を用意することは困難であるため、普通は1個の乗算器を時分割で使用してFIRフィルタを構成します。1サンプリング周期(1/12kHz)に400回の積和演算が必要ですが、マスタークロックが48MHzなので十分間に合います。

遅延器はRAMで構成する
 遅延器としてよく用いられるのはDF/F(D型フリップフロップ)ですが、今回はデータが16ビット、タップ数が400なので16x400=6,400個のDF/Fが必要になります。しかし、ここにあるようにフリップフロップは4,896個しかありません。したがってRAMを使って遅延器を構成します。

係数はROMに格納する
 上図のh[0], h[1], h[2], ... h[N-1]は係数で、これらはROMに格納します。
(*)VHDLではROMのように記述するが、論理合成するとRAMまたはロジックに割り当てられる。

Back


Top Page