01
概述
本文通過matlab自帶的工具箱生成一個可編程FIR濾波器的硬件HDL代碼,可生成VHDL或者Verilog HDL兩種類型的代碼。
02
具體操作步驟
新建一個matlab的腳本,鍵入下面兩行代碼,這里是直接調用matlab已經定義好的“dspprogfirhdl”模型,然后在simulink工具中打開該系統模型。
modelname = ‘dspprogfirhdl’;open_system(modelname)
運行上面兩行代碼后,會打開simulink并出現下圖:
上圖就是“dspprogfirhdl”模型的結構圖, 圖中Host Behavioral Model 是用來產生可編程FIR濾波器的系數(低通或者高通濾波器系數),Programmable FIR via Registers 是我們要生成的可編程濾波器模塊,FIR Behavioral 是一個行為級的參考模塊,它用來和可編程濾波器模塊做結果的比對。
雙擊上圖中的 Programmable FIR via Registers 模塊或者運行如下腳本中:
systemname = [modelname ‘/Programmable FIR via Registers’];open_system(systemname);
會出現下圖,這是programmable FIR via Registers模塊的內部結構:
上圖中coeffs_registers 是一個FIR 濾波器的系數寄存器,當‘write_enable’ 信號拉高寫FIR的系數;當 ‘write_done’ 拉高,也就是寫完成時, shadow registers 才會更新一次FIR的濾波器系數,該模型生成的HDL代碼默認是全并行的結構實現,可根據需要改為串行流水結構。
開始執行仿真,以及查看仿真波形,執行如下代碼;
sim(modelname);open_system([modelname ‘/Scope’]);
會生成如下的仿真結果:
上圖中,filter_input是輸入的信號,ref_out和dut output是參考模型和dut的輸出結果,error是二者的結果比對情況。
也可以使用simulink工具中的 Logic Analyzer邏輯分析儀查看波形,點擊本文第一張圖中的wifi符號,如下圖:
最后會在 Logic Analyzer中生成如下的波形圖:
將filter濾波器輸入信號和輸出信號用模擬形式展開,如下圖:
03
生成HDL代碼
下面通過兩種方式生成HDL代碼
方式一(腳本):
腳本中鍵入如下代碼,生成HDL的dut代碼(默認生成.vhd的代碼):
workingdir = tempname;makehdl(systemname,‘TargetDirectory’,workingdir);
matlab命令行窗口中出現如下圖,表示成功FIR濾波器的DUT代碼:
腳本中鍵入如下代碼,生成HDL的tb代碼:
makehdltb(systemname,‘TargetDirectory’,workingdir);
matlab命令行窗口中出現如下圖,表示成功FIR濾波器的TB代碼:
方式二(界面):
在下圖中雙擊箭頭所示部分,會出現configration配置界面(生成.v格式的代碼):
出現下圖,按照如下圖操作1,2,3,然后點擊下方generate。
matlab的命令行出現下圖,表示成功生成FIR濾波器的DUT代碼:
在configuration中選取testbench然后點擊生成testbench即可。
matlab的命令行出現下圖,表示成功生成FIR濾波器的TB代碼:
04
modelsim工具仿真
經過matlab工具生成可編程的FIR濾波器HDL代碼后,在工作目錄中會有如下的文件(包括:仿真用的數據.dat文件,dut和tb文件,run.do腳本):
使用modelsim仿真后的結果如下:
原文標題:matlab工具生成可編程FIR濾波器的HDL代碼
文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
matlab
+關注
關注
185文章
2981瀏覽量
231017 -
濾波器
+關注
關注
161文章
7862瀏覽量
178948
原文標題:matlab工具生成可編程FIR濾波器的HDL代碼
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
ADS7066有可編程濾波器,請問使用該濾波器時,是否可以簡化設計抗混疊濾波的截止頻率?
基于FPGA實現FIR數字濾波器
![基于FPGA實現<b class='flag-5'>FIR</b>數字<b class='flag-5'>濾波器</b>](https://file1.elecfans.com/web2/M00/0B/C9/wKgaomcp1z2ANDBJAAAG52-NZzg463.jpg)
如何區分IIR濾波器和FIR濾波器
iir濾波器和fir濾波器的優勢和特點
基于matlab FPGA verilog的FIR濾波器設計
matlab與FPGA數字信號處理系列 Verilog 實現并行 FIR 濾波器
Vivado 使用Simulink設計FIR濾波器
Vivado經典案例:使用Simulink設計FIR濾波器
![Vivado經典案例:使用Simulink設計<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>](https://file1.elecfans.com/web2/M00/C6/82/wKgaomYA0T-AcDvvAAAZ77SrOs8816.jpg)
評論