一 .濾波器介紹
濾波器是一種用來(lái)減少,消除干擾的電器部件,有對(duì)特定頻率的頻點(diǎn)或該頻點(diǎn)以外的頻率信號(hào)進(jìn)行有效濾除,從而實(shí)現(xiàn)消除干擾、獲取特定頻率信號(hào)的功能。數(shù)字濾波器相比模擬濾波器,有著更高的精度、信噪比、無(wú)可比擬的可靠性。
FIR,IIR是數(shù)字濾波器中最常見(jiàn)的兩種濾波器。 FIR濾波器是有限沖擊響應(yīng),最主要特點(diǎn)是沒(méi)有反饋回路,故不存在不穩(wěn)定的問(wèn)題,很容易做到嚴(yán)格的線性相位特性,另外設(shè)計(jì)方式是線性的,硬件容易實(shí)現(xiàn),對(duì)于抽取和插入,結(jié)構(gòu)簡(jiǎn)單,很容易得到高速流水線的設(shè)計(jì),有定義明確的量化噪聲,并且有較低的系數(shù)和算法四舍五入誤差預(yù)算,但是其高濾波器長(zhǎng)度的實(shí)現(xiàn)需要大量的工作量及資源;IIR濾波器是無(wú)限沖擊響應(yīng),最主要的特點(diǎn)是可以用較低的階數(shù),獲得高的選擇性,所用的存儲(chǔ)單元少,計(jì)算量小,效率高。但是這樣的效率是以非線性相位為代價(jià)的,選擇性越好,相位非線性越嚴(yán)重。本文以FIR為例介紹數(shù)字濾波器的設(shè)計(jì)及驗(yàn)證。
二.FIR濾波器設(shè)計(jì)
采用matlab的Filter Design 來(lái)完成對(duì)FIR濾波器的設(shè)計(jì),打開(kāi)matlab,在命令行輸入filterDesigner,進(jìn)入到設(shè)計(jì)頁(yè)面,如下
對(duì)濾波器的設(shè)計(jì)主要涉及三個(gè)點(diǎn):通帶,阻帶,過(guò)渡帶。
主要的參數(shù)有以下5個(gè):
Fpass:通帶上限截至頻率,Apass:帶內(nèi)平坦度;
Fstop:阻帶下限截至頻率,Astop:帶外抑制幅度;
Fs:數(shù)據(jù)率
輸入數(shù)據(jù)的速率為9.14MHz,通帶上限截止頻率為2M,由于考慮到鏡像干擾,阻帶截至頻率設(shè)為2.2M,階數(shù)選擇128階,濾波器階數(shù)可以根據(jù)需要設(shè)置,也可以設(shè)置帶內(nèi)平坦度和帶外抑制幅度,來(lái)選擇所需最小階數(shù),達(dá)到自己需要的精度即可。設(shè)置完成之后,如下:
濾波器設(shè)計(jì)完成之后需要對(duì)濾波器的系數(shù)進(jìn)行定點(diǎn)量化,選擇按鈕3,定義16位的數(shù)據(jù)位寬,其中15位為小數(shù)。如下:
點(diǎn)擊Filter Design菜單欄的Targets選項(xiàng)下拉菜單的Generate C Header和XILINX Coefficient(.COE) File,分別導(dǎo)出的是C的頭文件和.coe文件(濾波器系數(shù)文件),C的頭文件如下
Coe文件為:
這里選擇產(chǎn)生Generate C Header,產(chǎn)生濾波器系數(shù),此處沒(méi)有選擇coe文件,是因?yàn)楫?dāng)vivado IP核使用coe方式導(dǎo)入時(shí),vivado不能區(qū)分小數(shù)位。
三.vivado FIR IP核介紹
1.設(shè)置濾波器的屬性 :打開(kāi)vivado IP核,直接填入濾波器的系數(shù),此處系數(shù)需要量化為小數(shù),左邊為濾波器的增益,和matlab一致,如下:
濾波器的類(lèi)型包括單速率(Single Rate,即數(shù)據(jù)輸出與輸入速率相同),抽取(Decimation)和插值(Interpolation)應(yīng)用于多速率信號(hào)處理系統(tǒng),此外還支持希爾伯特變換(Hilbert)模式。抽取型一般多用于數(shù)字前端下變頻抽取樣值降低AD采樣速率,插值型用于常用于提高采樣速率。由于需要對(duì)AD數(shù)據(jù)進(jìn)行抽取濾波,這里選擇抽取類(lèi)型,抽取的倍數(shù)為2倍。
2.設(shè)置FIR濾波器的通道 ,由于只使用一個(gè)通道,因此交織通道序列(Channel Sequence)選擇Basic,通道數(shù)(Number of Channels)為1;Hardware Oversampling Specification中設(shè)置過(guò)采樣模式,選擇Input Sample Period,即輸入采樣周期,也可以通過(guò)輸入采樣頻率和時(shí)鐘頻率來(lái)設(shè)置,設(shè)置如下:
3.濾波器量化設(shè)置
填入濾波器系數(shù)之后,選擇量化的位數(shù),輸入的數(shù)據(jù)位寬為16,小數(shù)位數(shù)為15,如果全精度輸出,輸出位寬為33,對(duì)后續(xù)的處理很不方便,輸出也需要進(jìn)行相應(yīng)的截尾,因此設(shè)置為:
4.FIR濾波器在FPGA上實(shí)現(xiàn)資源選取的情況,一般采用系統(tǒng)默認(rèn)即可。
5.對(duì)外輸入和對(duì)外輸入接口情況, 這里只添加復(fù)位信號(hào),可以根據(jù)自己的實(shí)際需求,添加信號(hào)。
6.Summary是對(duì)FIR濾波器設(shè)計(jì)的總結(jié),所使用的類(lèi)型功能,濾波器階數(shù)等,最后點(diǎn)擊生成FIR IP核。
四.FIR 濾波器實(shí)現(xiàn)
1.C模型使用
Vivado提供了FIR IP核的C仿真模型,但是不能直接再matlab上運(yùn)行,需要搭建仿真環(huán)境,根據(jù)自己使用的matlab選擇不同的版本。搭建完成之后在matlab命令窗口輸入mex-setup,出現(xiàn)以下提示表示安裝成功
然后找到IP核C模型,在vivado工程FIR IP核的目錄下的cmodel的文件夾,F(xiàn)IR_demo.srcssources_1ipir_compiler_0cmodel,其中有兩個(gè)文件,lin64是linux版本的,nt64是windows版本的,選擇nt64解壓。
matlab打開(kāi)解壓的文件夾,輸入run make_fir_compiler_v7_2_mex,出現(xiàn)以下表示運(yùn)行成功。
最后要調(diào)用的文件是run_fir_compiler_v7_2_mex.m,這個(gè)文件可以作為參考使用,部分內(nèi)容為:
作如下修改:
其中FIR參數(shù)設(shè)置要和vivado中的IP核配置完全相同,否則會(huì)出現(xiàn)比對(duì)數(shù)據(jù)不一致的情況,具體參數(shù)配置見(jiàn)下表
各類(lèi)型對(duì)應(yīng)的數(shù)值選擇
2.Modelsim 仿真
仿真時(shí)需要注意,采用的抽取類(lèi)型,數(shù)據(jù)速率和時(shí)鐘速率不一樣,每隔8個(gè)時(shí)鐘周期采一個(gè)數(shù)據(jù),然后輸入到FIR IP核,輸出是每隔16個(gè)時(shí)鐘周期輸出一個(gè)數(shù)據(jù),輸出延遲可在FIR IP核Summary界面得知,模塊時(shí)序如下:
3.數(shù)據(jù)對(duì)比
濾波器的截至頻率為2MHz,用matlab產(chǎn)生一個(gè)1MHz和3MHz的混合信號(hào),分別輸入C仿真模型和modelsim進(jìn)行仿真,得到的結(jié)果進(jìn)行對(duì)比如下:
可以清楚的看到輸出的結(jié)果是一致的,通過(guò)比較matlab和modelsim輸出的數(shù)據(jù),發(fā)現(xiàn)也是一致的,相減之后為零,驗(yàn)證了濾波器的正確性。
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26485 -
數(shù)字濾波器
+關(guān)注
關(guān)注
4文章
269瀏覽量
46987 -
模擬濾波器
+關(guān)注
關(guān)注
0文章
30瀏覽量
13400 -
MATLAB仿真
+關(guān)注
關(guān)注
4文章
176瀏覽量
19904 -
fir濾波器
+關(guān)注
關(guān)注
1文章
95瀏覽量
19026
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論