01
概述
本文通過matlab自帶的工具箱生成一個可編程FIR濾波器的硬件HDL代碼,可生成VHDL或者Verilog HDL兩種類型的代碼。
02
具體操作步驟
新建一個matlab的腳本,鍵入下面兩行代碼,這里是直接調(diào)用matlab已經(jīng)定義好的“dspprogfirhdl”模型,然后在simulink工具中打開該系統(tǒng)模型。
modelname = ‘dspprogfirhdl’;open_system(modelname)
運行上面兩行代碼后,會打開simulink并出現(xiàn)下圖:

上圖就是“dspprogfirhdl”模型的結(jié)構(gòu)圖, 圖中Host Behavioral Model 是用來產(chǎn)生可編程FIR濾波器的系數(shù)(低通或者高通濾波器系數(shù)),Programmable FIR via Registers 是我們要生成的可編程濾波器模塊,F(xiàn)IR Behavioral 是一個行為級的參考模塊,它用來和可編程濾波器模塊做結(jié)果的比對。
雙擊上圖中的 Programmable FIR via Registers 模塊或者運行如下腳本中:
systemname = [modelname ‘/Programmable FIR via Registers’];open_system(systemname);
會出現(xiàn)下圖,這是programmable FIR via Registers模塊的內(nèi)部結(jié)構(gòu):

上圖中coeffs_registers 是一個FIR 濾波器的系數(shù)寄存器,當(dāng)‘write_enable’ 信號拉高寫FIR的系數(shù);當(dāng) ‘write_done’ 拉高,也就是寫完成時, shadow registers 才會更新一次FIR的濾波器系數(shù),該模型生成的HDL代碼默認(rèn)是全并行的結(jié)構(gòu)實現(xiàn),可根據(jù)需要改為串行流水結(jié)構(gòu)。
開始執(zhí)行仿真,以及查看仿真波形,執(zhí)行如下代碼;
sim(modelname);open_system([modelname ‘/Scope’]);
會生成如下的仿真結(jié)果:
上圖中,filter_input是輸入的信號,ref_out和dut output是參考模型和dut的輸出結(jié)果,error是二者的結(jié)果比對情況。
也可以使用simulink工具中的 Logic Analyzer邏輯分析儀查看波形,點擊本文第一張圖中的wifi符號,如下圖:

最后會在 Logic Analyzer中生成如下的波形圖:

將filter濾波器輸入信號和輸出信號用模擬形式展開,如下圖:

03
生成HDL代碼
下面通過兩種方式生成HDL代碼
方式一(腳本):
腳本中鍵入如下代碼,生成HDL的dut代碼(默認(rèn)生成.vhd的代碼):
workingdir = tempname;makehdl(systemname,‘TargetDirectory’,workingdir);
matlab命令行窗口中出現(xiàn)如下圖,表示成功FIR濾波器的DUT代碼:

腳本中鍵入如下代碼,生成HDL的tb代碼:
makehdltb(systemname,‘TargetDirectory’,workingdir);
matlab命令行窗口中出現(xiàn)如下圖,表示成功FIR濾波器的TB代碼:

方式二(界面):
在下圖中雙擊箭頭所示部分,會出現(xiàn)configration配置界面(生成.v格式的代碼):

出現(xiàn)下圖,按照如下圖操作1,2,3,然后點擊下方generate。

matlab的命令行出現(xiàn)下圖,表示成功生成FIR濾波器的DUT代碼:

在configuration中選取testbench然后點擊生成testbench即可。

matlab的命令行出現(xiàn)下圖,表示成功生成FIR濾波器的TB代碼:

04
modelsim工具仿真
經(jīng)過matlab工具生成可編程的FIR濾波器HDL代碼后,在工作目錄中會有如下的文件(包括:仿真用的數(shù)據(jù).dat文件,dut和tb文件,run.do腳本):

使用modelsim仿真后的結(jié)果如下:

原文標(biāo)題:matlab工具生成可編程FIR濾波器的HDL代碼
文章出處:【微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
matlab
+關(guān)注
關(guān)注
189文章
3029瀏覽量
239273 -
濾波器
+關(guān)注
關(guān)注
162文章
8478瀏覽量
186369
原文標(biāo)題:matlab工具生成可編程FIR濾波器的HDL代碼
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
MAX260/MAX261/MAX262:微處理器可編程通用有源濾波器的設(shè)計與應(yīng)用
深入剖析MAX263/264/267/268:引腳可編程通用和帶通濾波器
20位引腳可編程低功耗Σ-Δ ADC AD7781:特性、應(yīng)用與設(shè)計要點
IDT821024:四通道非可編程PCM編解碼器的技術(shù)剖析
通過vivado HLS設(shè)計一個FIR低通濾波器
MAX262微處理器可編程通用有源濾波器:設(shè)計與應(yīng)用指南
MAX261微處理器可編程通用有源濾波器的深度剖析
MAX260微處理器可編程通用有源濾波器的深度解析
MAX270/MAX271 數(shù)字可編程雙二階連續(xù)時間低通濾波器詳解
HMC1023LP5E:72 MHz 雙可編程低通濾波器驅(qū)動的卓越之選
ADRF6520:用于微瓦級無線電的雙可編程濾波器和可變增益放大器
IDT821024:四通道非可編程PCM編解碼器的技術(shù)剖析
LP5560可編程單LED驅(qū)動器數(shù)據(jù)手冊總結(jié)
如何用matlab生成一個可編程FIR濾波器的硬件HDL代碼?
評論