xilinx IP核設計 FIR濾波器【小白專屬 大佬勿噴 傻瓜教程】

1、濾波器階數的獲得 採樣filter solutions軟件

實現方法【lmplementation】選擇數字方式【Digtal】,濾波器類型爲FIR

選擇濾波器階數及截止頻率

選擇濾波器方式 這裏我們選擇低通

接下來選擇採樣頻率 FPGA的時鐘爲50M 這裏我們選擇50M

最後選擇加窗類型

到此爲止 數字濾波器·設置完畢

整個設計完成界面如下

接下來查看抽頭係數

點擊Transfer Function

點擊vec 抽頭係數便可出現

需要用科學計數法 我們這裏進行手動轉化 結果如下

0.01862,0.02074,0.02282,0.02484,0.02678,0.02864,0.03039,0.03201,0.03349,0.03482,0.03598,0.03697,0.03777,0.03838,0.03878,0.03899,0.03899,0.03878,0.03838,0.03777,0.03697, 0.03598,0.03482,0.03349,0.03201,0.03039,0.02864,0.02678,0.02484,0.02282,0.02074,0.01862

中間用逗號隔開

2、FIR IP核的使用

fir ip核應該在DSP類目下 自己去找好了

在這裏 導入抽頭係數 可以直接導入文件 也可以手擼 我們選擇後者

濾波器選擇單一採樣率 並設置好輸入時鐘

coefficient width直接影響精度 在小數的定點數中 根據位寬會損失一定的精度 位寬越高 越接近浮點數 誤差越低 這個係數位寬一般我們選擇10或者12

Coefficient Fractional Bits也會影響精度 可以通過修改它的值 觀察左側響應變化

輸入數據類型選擇有符號數

輸入數據位寬爲9位【仿真需要 實際可改 關於原因 後續介紹】

輸出數據位寬爲8位

並將輸出進行截斷【數字信號處理中的內容】

接下來的一頁 默認即可 初始化完成

3、DDS IP核的使用【仿真需要】

例化兩個DDS ip核 以產生兩個不同頻率信號疊加的波形 我們選擇了100KHz與2MHz的信號進行疊加 以觀看濾波效果

具體配置不再將 配置如下:

僅選擇正弦波

輸出可選

選擇頻率

配置完成

 

【關於佔用了多少資源 我也沒去考慮 emmm 也不會 正如師兄所言 隨便用 資源不夠了 就換資源豐富的片子 顯然土豪作風 反正像我這種菜雞也不會考慮 搞個32階濾波器也無妨 反正我只關注效果】

 

4、例化

這就比較簡單了 只是該注意下 兩個有符號數相加問題 用如下語句:

assign sin_out_3 = $signed(sin_out_1)+$signed(sin_out_2);

方能實現兩個正弦波相加 由於 8位加8位 會產生進位 所以輸出設置爲9位 則濾波器的輸入也要設置爲9位

例化很簡單 簡單到令人髮指 根本不用寫啥代碼 就略過了

 

5、testbench的書寫

這就更簡單了 只需寫個時鐘就好

 

6、仿真

可以看出 2MHz的雜波被很好地濾掉了 【代碼下載地址:https://download.csdn.net/download/yulang007_/10568899

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章