dds與fir低通濾波聯合仿真

一.DDS
DDS的原理就是把正弦波數據存在rom裏,然後按照一定的速率輸出。比如設定rom的寬度爲8位,深度爲256。時鐘的採樣速率爲50M,則輸出的正弦波頻率爲:
f_out=50M/256=195KHZ
實現調頻就可以從中抽出數來輸出,比如隔一個輸出一次,一個週期只有128個點就可以把頻率擴大一倍。或者一個數輸出2次就可以把頻率縮小一倍實現調頻。
所以定義一個16位的計數器,高八位爲rom的地址,每次加的數不同就可以實現不同的頻率。
f_out/f_add=f_clk/2^16
f_add=2^16*f_out/f_clk

比如要輸出100K的正弦波
f_add=131
下面用matlab生成.coe文件存放正弦波數據
matlab代碼
由於.coe文件的格式要求在生成的文件裏開頭加上
在這裏插入圖片描述
再把結尾的‘,’號改爲‘;’即可。
在這裏插入圖片描述
數據寬度設置爲8,深度爲256和matlab中設置的一樣。
在這裏插入圖片描述
勾選出時鐘信號在這裏插入圖片描述
導入剛剛生成的coe文件,ROM的IP核設置就完成了。
在這裏插入圖片描述
這裏就把IP核例化一下,把f_word的高八位付給IP核的地址選擇位。
這裏的f_add只要在後面的testbench裏面進行賦值就可以看仿真了,這裏不單獨仿真後面一起看波形。
下面用matlab生成fir濾波器需要的.coe文件
在這裏插入圖片描述
在APP裏有filter designer設置參數之後就可以自動生成抽頭係數
在這裏插入圖片描述
以低通濾波器爲例,選擇窗函數,漢明窗採樣頻率設置成50M截止頻率設置爲500K,係數設置爲50個,因爲自動生成的是科學技術法的數值,在這裏設置成16位的數。
在這裏插入圖片描述
選擇上面的targets->xilinx(.coe)就可以自動生成.coe文件。濾波器原理不多介紹,自己拆看即可,其實就是卷積運算。
下面進行fir IP核的設置。
在這裏插入圖片描述
選擇coe file導入剛剛生成的coe文件,選擇濾波器類型
在這裏插入圖片描述
通道數選擇1,時鐘頻率選擇50M數據輸入頻率選擇10M.
在這裏插入圖片描述係數爲16位,因爲dds輸出的數據是8位的所以輸入爲8爲無符號數。後面的不用設置,都爲默認。
下面進行fir的例化
在這裏插入圖片描述
因爲輸出的數據是32位的額,但是剛剛核裏生成的是28位的,所以取低位的28位賦值給lpf_data。
在這裏插入圖片描述
這裏是每個位的具體功能。
在這裏插入圖片描述
編寫top頂層文件,因爲剛剛設置的數據輸入速率爲10M所以設置計數器,每次計數到4把q0賦值給q。這樣就完成了,開始編寫testbench。
在這裏插入圖片描述按照上面的計算方法,先生成100K的正弦波再生成1M的正弦波,開始仿真。
在這裏插入圖片描述
可以看到100K的輸入信號時輸出不變,當輸入1M的信號時被濾去。

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