CIC濾波器的設(shè)計與仿真驗證
CIC濾波器是一種極,、零點相消的FIR濾波器,,只有加法和延時運算,沒有一般FIR濾波器所需的大量乘法運算,,所以通常工作在DDC(數(shù)字下變頻)系統(tǒng)中運算量最大的第一級,,可以節(jié)省資源,降低功耗,。
1.CIC濾波器的基本原理
級聯(lián)積分梳狀濾波器(cascade integrator comb filter)是高分解率濾波器的一種非常有效的結(jié)構(gòu),,具有結(jié)構(gòu)簡單。規(guī)整,,需要的存儲量小的優(yōu)點,。由于不需要乘法器,而且利用積分環(huán)節(jié)減少了中間過程的存儲量,,因此常常用在高速采樣和插值比很大的場合,。
CIC濾波器一般由Integrator(積分部分)和Comb(梳狀部分)兩個基本模塊組成。
Integrator模塊的差分方程為:
y[n]=y[n-1]+x[n]
轉(zhuǎn)換到Z域后,,其傳遞函數(shù)為
HI(Z)=1/(1-Z-1)
Comb模塊的差分方程為
y[n]=x[n]-x[n-RD]
轉(zhuǎn)換到Z域后,,其傳遞函數(shù)為
HC(z)=1-z-RD
CIC濾波器有2種形式,一種被稱為抽取器,另外一種被稱為內(nèi)插器,。抽取器是由N個Intergrator模塊級聯(lián)(采樣頻率為fs),,再級聯(lián)N個Comb模塊(采樣頻率為fs/RD),結(jié)構(gòu)見圖1(a)。而內(nèi)插器的級聯(lián)方式則與抽取器的級聯(lián)方式相反,,結(jié)構(gòu)見圖1(b),。
圖1 多級CIC結(jié)構(gòu)框圖
抽取器Z域的傳遞函數(shù)為
內(nèi)插器的Z域的傳遞函數(shù)為
以CIC抽取器的傳遞函數(shù)可以看出,H(z)有RDN個零點,,N個極點,。所有零點都處于2π/RD處,圓心起始于z=1可以看出,,每個不同的零點都重復了N次,,而H(z)的極點都處于z=1處。由此可以看出,,CIC抽取器的極點抵消情況,,CIC濾波器相當于N個矩形沖激響應濾波器的級聯(lián)。
由CIC濾波器的傳遞函數(shù)和圖1可以看出,,在CIC濾波器中,,沒有乘法運算,因此CIC濾波器比FIR和IIR濾波器更節(jié)省資源,,電路也更簡單,。
2.CIC濾波器的Simulink仿真實現(xiàn)
CIC濾波器分為CIC抽取器和CIC內(nèi)插器2種類型,但其區(qū)別僅僅在于其integrator和comb的級聯(lián)次序及采樣頻率的不同,。本文將以CIC插值器為例介紹其simulink仿真實現(xiàn),。
按照圖1(b)的CIC內(nèi)插器結(jié)構(gòu)框圖,我們應先設(shè)計comb部分,,simulink的模型搭建如下圖所示:
Comb部分simulink模型
由于我們實現(xiàn)的是8倍插值,,所以應當實現(xiàn)5級級聯(lián),simulink模型如下;
將comb部分生成subsystem,,完成comb部分的模型搭建,。下面,我們繼續(xù)搭建integrator部分的simulink模型,。
首先還是,,最基本的integrator的simulink模型如下:
其次5級級聯(lián)的integrator如下圖所示:
Comb和integrator的模塊已經(jīng)搭建完成,為了實現(xiàn)CIC插值濾波器,,須以comb在前integrator在后的順序,,實現(xiàn)CIC插值濾波器的功能。其系統(tǒng)模型如下:
為了驗證
CIC插值濾波器的功能,,我們有必要加入一些simulink自帶的信號源與示波器,,來驗證與完善本系統(tǒng)模型,。框圖如下:
我們設(shè)定信號源為離散的正弦信號,,其一個周期僅有8個采樣點。該正弦信號源的參數(shù)設(shè)置如下:
設(shè)置完畢后,,本系統(tǒng)即可以開始仿真了,。下面點下仿真按鍵實現(xiàn)仿真,仿真結(jié)果如下:
由波形可以看出,,輸入信號為鋸齒明顯的正弦信號,,通過傅立葉變換即發(fā)現(xiàn)其為基波是正弦波,含有眾多高次諧波的信號,。通過CIC插值濾波器后,,高次諧波被濾除,剩下的即為基波正弦信號,。仿真結(jié)果證明本系統(tǒng)完全實現(xiàn)了CIC濾波器的功能,。
3.CIC插值濾波器通過Dspbuilder生成VHDL代碼
Simulink的仿真結(jié)果證明了本系統(tǒng)的正確性,下面來通過dspbuilder的Signal Compiler生成VHDL代碼,,具體步驟如下:
1.雙擊Signal Compiler,,生成如下的對話框。
2.Family設(shè)置為Cyclone II
3.標簽選擇為Advanced,依次點擊Create Project,Synthesis,Fitter,。需要注意的是,,必須等每一步運行完后,再點下一步,。
生成文件為Quartus II的工程文件,,在Matlab設(shè)計的CIC.mdl同一文件夾下,為cic_dspbuilder文件夾下,。至此,,dspbuilder轉(zhuǎn)換完成。
4.CIC濾波器的FPGA實現(xiàn)與Modelsim仿真
雙擊cic.qpf,,打開工程文件,,將 cic2VHDL_GNIDDHHVE3.vhd文件生成symbol file文件,并新建CIC.bdf文件,,搭建CIC濾波器系統(tǒng),,如下圖所示:
我們先運用下QuartusII自帶的波形仿真軟件驗證一下CIC濾波器。新建vwf波形仿真文件,,設(shè)置引腳后,,即可仿真。仿真圖如下:
從波形中可以看出,,本系統(tǒng)對每一個輸入信號實現(xiàn)了8倍插值,。
下面進行Modelsim仿真,。
在Simulink中進行的仿真是屬于系統(tǒng)驗證性質(zhì)的,是對.mdl文件的仿真,,并沒有對生成的VHDL代碼進行過仿真,。事實上,生成VHDL描述的是RTL級的,,是針對具體的硬件結(jié)構(gòu)的,,而在MATLAB的simulink中的模型仿真是算法級(系統(tǒng)級)的。二者之間有可能存在軟件理解上的差異,。轉(zhuǎn)換后的VHDL代碼實現(xiàn)可能與mdl模型描述的情況不完全相符,,這就需要針對生成的RTL級VHDL代碼進行功能仿真。
設(shè)置步驟如下:
1.在Simulink的系統(tǒng)中添加dspbuilder庫中的tesbench模塊,,如下圖:
2.雙擊testBench,,彈出對話框如下:
依次單擊Generate HDL,Run Simulink.其他的不用單擊。運行完后,,會在同樣的文件夾下生成tb_cic文件夾,,該文件夾中包涵了Modelsim仿真所需的文件。
3.打開Modelsim,。首先,,需要設(shè)置Modelsim的工作目錄。單擊菜單欄file,,單擊Change Directory,,在彈出的對話框中,選擇tb_cic文件夾,。單擊確定,。如下圖所示:
然后單擊菜單欄Tools—TCL---Execute Macro命令,在彈出的對話框中,,選擇tb_cic.tcl文件,,等待幾分鐘,讓Modelsim完成自動編譯,。
在彈出的wave波形窗口中,,對著黑幕右擊ZOOM FULL。下面依次將datain和dataout設(shè)置為模擬量,。鼠標右擊datain,,選擇最下面的“Properties”,設(shè)置如下圖:
dataout進行同樣的設(shè)置,,設(shè)置如下圖:
這個時候,,可以觀測到具體的波形了:
可以看出,如simulink的仿真圖如出一轍,,同樣驗證了本系統(tǒng)的正確性,。
圖片已更新完畢,。其實我想說的是,這篇CIC濾波器只是應付考試論文的東西,,并沒有對CIC濾波器的性能進行詳細的分析,。這篇論文沒什么價值。不過,,可以參考本文中simulink中的關(guān)于TestBench的聯(lián)調(diào)Modelsim的應用,,研究好久才出來,其實也蠻簡單的,。OVER。