デジタルフィルタの仕様 |
FIRフィルタを組み込む 以下のようなFIR(Finite Impulse Response)フィルタを2個(左右2ch)、FPGAに組み込みます。
FIRフィルタの構成 FIRフィルタは以下のようにN個の乗算器と遅延器からなります。乗算器の数Nを一般的に「次数」または「タップ数」と呼び、それはFIRフィルタの性能を大きく左右します。 乗算器は1個で行う(L/Rで2個) 今回のFIRフィルタは200次(200タップ)なので乗算器は200個必要です。しかし現実的に200個の乗算器を用意することは困難であるため、普通は1個の乗算器を時分割で使用してFIRフィルタを構成します。1サンプリング周期(1/97.7kHz)に200回の積和演算が必要ですが、マスタークロックが50MHzなので十分間に合います。 遅延器はRAMで構成する 遅延器としてよく用いられるのはDF/F(D型フリップフロップ)ですが、今回はデータが16ビット、タップ数が200なので16x200=3,200個、左右2chあるので倍の6,400個のDF/Fが必要になります。しかし、ここにあるようにフリップフロップは4,896個しかありません。したがってRAMを使って遅延器を構成します。 係数はROMに格納する 上図のh[0], h[1], h[2], ... h[N-1]は係数で、これらはROMに格納します。 (*)VHDLではROMのように記述するが、論理合成するとRAMまたはロジックに割り当てられる。
|