matlab與FPGA數字濾波器設計、無線通信、FPGA數字信號處理系列(3)—— Matlab 與 Vivado 聯合仿真 FIR 濾波器,fdatool工具箱

本講使用 matlab 產生待濾波信號,並編寫 testbench 進行仿真分析,在 Vivado 中調用 FIR 濾波器的 IP 核進行濾波測試,下一講使用 兩個 DDS 產生待濾波的信號第五講第六講開始編寫verilog代碼設計FIR濾波器,不再調用IP核。

MATLAB 與 FPGA無線通信、圖像處理、數字信號處理系列 彙總

本例使用上一講的FIR濾波器IP核工程
在這裏插入圖片描述

1.新建仿真文件

(1)Simulation Sources -> sim_1 ->右鍵 Add Sources;
(2)Add or Create Simulation Sources,新建仿真文件 fir_ip_tb;
在這裏插入圖片描述

2.編寫testbench

(1)例化加入的 IP 核,其中:
@ 輸入時鐘引腳爲 clk,設置爲 32MHz(此處暫時還未設定頻率,後面會在 testbench 的 initial 塊裏給出);
@ 輸入數據引腳爲 data_in,位寬 16-bit,表示待濾波數據;
@ 輸出數據引腳爲 data_out,位寬 40-bit,表示濾波後的數據;
@ 輸出數據有效信號引腳 data_out_valid,位寬 1-bit,輸出狀態,爲高電平時表示輸出的 data_out 有效;
@ 輸入數據準備好信號引腳 data_in_ready,位寬 1-bit,輸出狀態,爲高電平時表示準備好接收輸入數據;
@ 輸入有效信號 S_AXIS_DATA_0_tvalid,爲 1 時表示輸入信號有效,爲 0 時即使有輸入信號 data_in 到 fir 的 ip 核 ,ip 核也不做處理,此處直接讓其恆爲 1,輸入數據恆有效
@ 總結,需要給ip核輸入的數據目前只有兩個,一個是時鐘,一個是待濾波數據;
在這裏插入圖片描述
(2)產生32MHz時鐘信號;
初始 initial 時設置時鐘信號 clk 爲低電平0,always 表示一直執行,#16表示每隔 16 ns(單位是在仿真文件開頭自動有定義 ns)時鐘取反一次,即每隔 16ns 時鐘 0/1 間隔變化,相當於 32ns 一個時鐘週期,約等於32 MHz;
在這裏插入圖片描述

3.產生待濾波數據data_in

(1)編寫 matlab 程序,產生兩個信號 0.5 MHz 和 5 MHz,採樣頻率32 MHz,採樣 5 個週期,進行 16-bit 量化,並把量化後的數據寫到 .txt 文件中;
在這裏插入圖片描述
可以看到,在 0.5 MHz 和 5 MHz處有兩個峯,表示抽樣後的兩個信號,經過濾波器之後,5 MHz 信號被濾除,只剩下 0.5 MHz 信號,藍色框內可以看到,在 3 MHz 以後濾波器的響應已經低於 -80 dB,相當於濾波後的幅度是濾波前的1/10000,濾波效果很好。
在這裏插入圖片描述
使用 32 MHz 的採樣時鐘採樣 0.5 MHz 待濾波信號(相當於 0.5 MHz 信號疊加了5 MHz噪聲),每個週期採樣64個點,在 testbench 中讀取一個週期的 64 個點,重複 30 個週期得到 30 個週期的輸入待濾波信號給 FIR 濾波器;
在這裏插入圖片描述

4.仿真結果分析

點擊 1 處開始仿真,一般默認只會仿真 1 us,這時候只看到了初始化的一部分,是看不到後續結果的,點擊 2 處進行仿真,會將所有的仿真步驟完成,執行到上圖中第64行的 $stop 語句停止仿真
在這裏插入圖片描述

5.仿真結果分析

(1)data_out_valid:初始爲 0,在 1.872 ns跳變爲 1,輸出數據開始有效,在爲 0 的那段時間輸出數據 data_out 無效,這段時間內是 FIR 的 IP 核進行一些內部的配置和初始化;
在這裏插入圖片描述
(2)更改數據表示模式
對 data_in,右鍵設置其數據格式 Radix 爲有符號的十進制數(Signed Decimal),設置其波形爲模擬波形(Analog);
對 data_out同樣設置;
對 Pattern 設置 無符號十進制,不需要設置波形。
在這裏插入圖片描述
(3)點擊放大縮小可以查看整個仿真的效果
通過下面幾圖,可以看到仿真效果很好,5 MHz 高頻噪聲濾除乾淨,肉眼觀察不出來雜波噪聲。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
(4)Matlab數據分析
肉眼觀察時域的仿真圖無法得知高頻噪聲具體被濾掉了多少,是否還混有噪聲,此時需要將濾波後的數據按照類似前文讀取仿真數據的方式,將仿真得到的濾波後的數據寫入 .txt 文件再通過 matlab 讀取 FPGA 濾波後的數據進行FFT 頻譜分析通過頻域的波形來觀察濾波效果,通過 matlab 仿真,可以看到高頻信號的確被濾除。
在這裏插入圖片描述
在這裏插入圖片描述
下一講 使用兩個 DDS 產生待濾波的信號,結合FIR濾波器搭建一個信號產生及濾波的系統,並編寫 testbench進行仿真分析。

matlab與FPGA無線通信(1)——通過matlab的fdatool工具箱設計FIR濾波器

matlab與FPGA無線通信(2)——Vivado調用IP核設計FIR濾波器

matlab與FPGA無線通信(4)—— Vivado DDS 與 FIR IP核設計 FIR 濾波器系統

MATLAB 與 FPGA無線通信、圖像處理、數字信號處理系列 彙總

歡迎關注
在這裏插入圖片描述

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