GPIOでFIRフィルタコアを制御する |
ここではGPIOを新たに追加し、FIRフィルタコアのCOEFFSEL端子の制御に使用します。 IP Catalogタブを選択し、General Purpose IOを展開し、XPS General...→Add IPを選択。 Bus Interfacesタブにxps_gpio_0が追加されましたが、まだバス(PLB)とつながっていないので、白丸をクリックで茶色くして接続する。 xps_gpio_0をダブルクリックし、Channel1を選択してGPIO Data Channel Widthを1にする。 Portsタブでfirfilters_0を展開し、coeffsel_sigと名前を付ける(このプルダウンはエディット可)。 xps_gpio_0を展開し、GPIO_IO_Oのプルダウンメニューを開き、coeffsel_sigを探して選択する。これによりGPIOがFIRフィルタのCOEFFSEL端子と繋がる。 AddressタブでGenerate Addressも忘れずに行う。これによりGPIOに適当なアドレスが割り振られる。 その後ApplicationタブのSourcesのdemo0.cを開き、これを追加します。MicroBlazeはDIPスイッチの値を見ながら、GPIOによってFIRフィルタのCOEFFSELを切り替えます。 ここでUpdate Bitstreamします。これでdemo0.cの変更がビットストリームに反映されます。 Consoleに何事もなくDone!と表示されれば成功です。以降この手順に従ってFPGAにダウンロードしましょう。 シンセシスレポートを見てRAMが遅延器に割り当てられているか確認しましょう。 firfilters_0にはFIRフィルタ(200タップ)が2個(Lch/Rch)入っており、それぞれ2種類の係数(LPF/HPF)を持っています。そしてCOEFFSELがLだとLPF、HだとHPFの係数を選択します。以下はLPFを選択したときの周波数特性です。DIPスイッチのビット0, 1をL, Lにしてみましょう。 DIPスイッチのビット0, 1のどちらかをHにするとHPFになります。以下はその周波数特性です(SoftOscillo2 Standard Editionで測定)。
|