レジスタライトでIIRフィルタを制御する
MicroBlazeとIIRフィルタコアとはPLBというバスでつながっており、MicroBlazeはレジスタ経由でIIRフィルタコアの入力ポートにアクセスすることができます。

Applicationタブを選択し、Add Software Application Projectをダブルクリックします。Project Nameをdemo0としてOKをクリック。

Sourceを選択し、右クリックでAdd New File。


Appsというディレクトリを作成し、ファイル名をdemo0.cとする。


Sourcesを展開し、demo0.cをダブルクリックして開き、これをペーストする。


Project: demo0を選択し、右クリックでMark to Initialize BRAMsを選択。


Project: demo0のアイコン上の赤色の「Xマーク」が消え、他のプロジェクトにXマークが付いているのを確認(この場合プロジェクトが3つあり、その中のdemo0のみが有効になっているということ)。


メニューのDevice ConfigurationからUpdate Bitstreamを選択。これによりdemo0.cを含んだビットストリームを生成します。


下部のConsoleに「Done!」と出たら成功です。以降この手順に従ってFPGAにダウンロードしましょう。

シンセシスレポートを見るとIIRフィルタで乗算器を6個使っています。Biquadが6個あるからです(3段×2ch)。

iirfilters_0にはIIRフィルタが2個(Lch/Rch)入っていますが、それらの係数はレジスタに繋がっているのでMicroBlazeから自由に設定できます。demo0.cではLPFの係数を設定しています(以下は周波数特性、SoftOscillo2 Standard Editionで基板に白色雑音を入力し、その出力をFFTアナライザでアベレージングしたもの)。


また、demo0.cではHPF/BPF/BRFの係数設定をコメントアウトしているので、それらを有効にすると以下のように特性が変わります。






Biquad3段縦続接続なので係数の数は3×5=15個。15個のレジスタの値を書き換えることにより、さまざまな特性を実現することができます。

Back


Top Page