前段時間自學了matlab和vivado聯合推出的system generator工具,用來做數字訊號處理,十分好用且使開發更便捷,下面舉個例子來供大家一起學習下。

首先開啟matlab命令列,輸入simulink。注意要先安裝system generator ,這個網上有教程。

然後新建一個model,拖入模組成我這樣:

一個一個來設定:首先是訊號源,取樣率模逆的WCDMA碼速率,為3.84Mcps。                                                然後是Gateway In,這個是IP核的輸入埠,設定如下:

                                                               

Register保持不變,事實上加不加好像都沒什麼影響。

重點是濾波器的設計,先點開FDA tool,設計出一個通帶截止點1MHz,阻帶起始點1.2MHz的低通濾波器。

然後開啟FIR compiler7.2,設定如下:1)輸入xlfda_numerator(‘FDATool’),繫結一個FDATool;2)量化形式選成跟隨FDATool量化,一般都是16bit保持不變。

接著做截斷處理,這一步關係著IP輸出位寬。然後勾選Provide enanle port,這樣就多了個截斷使能訊號。

預設16bit位寬,濾波器輸出位寬32bit,截斷為16bit,損失了一些精度,但是減小了輸出位寬。如果你想看各模組的資料位寬,可以點選model的選單欄的Display->signals&Ports->Ports Datas type。

然後設定system generator:1)主要找到對應的FPGA晶片型號,只有對應的型號才能呼叫該IP。2)設計輸入時鐘,為該IP的主時鐘,模擬時鐘設定為3.84MHz。

最終連起來

點選RUN,進行模擬,看看波形。頻譜儀點紅框可以看到雙邊譜,這裡我就看了單邊譜。

結論:因為我的訊號源是3.84Mcps的脈衝訊號,頻譜無限大,被一個單級低通濾波器限制帶1MHz,阻帶1.2MHz,功率下降了15個dbm,但是濾波器設計的是衰減80個db,看來實際用起來還是有一定差距。

最後還是開啟system generator,更改你想存放IP的資料夾,然後點gengerate。就生成了該低通濾波器的IP。

至於如何在vivado中匯入IP,網上也是有很多教程,這裡就不細說了。