DSPLinksで係数を導出する
DSPLinksを使うとデジタルフィルタの係数を簡単に得ることが出来ます。また係数を量子化(整数化)することも出来ます。
このアーカイブを解凍した後、DSPLinksのディレクトリにコピーしましょう。その後DSPLinksを実行し、OpenアイコンをクリックしてIirLpfHpf.DE2を開きましょう。

CHBLPF(チェビシェフ型LPF)のコンポネントを選択し、右クリックでOpen a Monitorを選択してください。

すると新しいウインドウに周波数特性が描画されます。これは100kHzまでを通すLPFです。

U_0ウインドウを最前面に出した状態でTools→Save Coefficientsを選択すると係数がセーブできます。

ファイル名はデフォルトでcoeff1.txtになっています。2次のLPFは1個のBiquadからなるので、「1st
biquad」のみが有効です。また、値は2進数になっており、量子化ビット数は11です。

そしてDSPLinksで得られた係数の下位12ビットをVHDLにコピーします。この際、A0, A1, A2はそのままで良いのですが、B1, B2は正負を反転させる必要があります。

ところでVHDLでは係数を12ビットとしているのに、なぜDSPLinksでは11ビットで量子化するのでしょうか?その理由をこれから説明します。CHBLPFをダブルクリックするとParts Attributeダイアログが現れ、そこでChange Parametersをクリックすると、さらにChebychev LPF Parametersダイアログが現れます。

そこでQuantize Coefficientsをクリックするともう一枚ダイアログが現れるので、Quantize
by 11bitsのチェックボックスを外してみましょう。これによって量子化が無効になります。

OKを3回クリックしてダイアログを3つ閉じ、もう一度係数をセーブしましょう。するとこのようにb1が-1.78となっています。このように係数の絶対値が1より大きい場合、12ビットでは量子化しきれません(ダイナミックレンジが足りない)。ビット数を11ビットとして(解像度を落として)量子化すると、12ビットのレンジにきっちり収まります。

|