係数の導出
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ビットのレンジにきっちり収まります。


Back


Top Page