【摘 要】基于積分級聯(lián)梳狀(CIC)濾波器的工作原理,應(yīng)用verilog HDL語言及Quartus II軟件,通過引入分頻器可以分別實現(xiàn)多級CIC抽取濾波器和多級CIC插值濾波器的功能,且能改變CIC濾波器的抽取率和插值率。并對仿真結(jié)果進行分析,驗證了該設(shè)計方法的可靠性和可行性。
【關(guān)鍵詞】CIC;分頻器;FPGA;Quartus II
在數(shù)字信號處理中,隨著采樣速率的不斷提高,采樣之后的數(shù)據(jù)流速率會變的很高,這就會導(dǎo)致在后面的信號處理中的速度跟不上數(shù)據(jù)流速率。實現(xiàn)采樣后速率的改變(抽取與內(nèi)插)的關(guān)鍵問題是怎樣實現(xiàn)一個滿足抽取或內(nèi)插(抗混疊)要求的數(shù)字濾波器。該濾波器性能的好壞直接影響采樣后速率變換的效果及實時處理能力。積分級聯(lián)梳狀(CIC)濾波器就是一種被廣泛應(yīng)用于軟件無線電中實現(xiàn)抽取或插值的濾波器。由于它結(jié)構(gòu)簡單,沒有乘法器,只有加法器、積分器和寄存器,因此在高速率不宜進行過多乘法運算的系統(tǒng)中,相對于普通的FIR濾波器來說具有較大的優(yōu)勢。本文介紹的設(shè)計方法可以方便的實現(xiàn)CIC抽取濾波器與插值濾波器之間的轉(zhuǎn)換,并能根據(jù)要求改變相應(yīng)的抽取速率和插值速率。
一、 CIC濾波器的結(jié)構(gòu)和工作原理
CIC濾波器是一種基于零極點相抵消的FIR濾波器,由圖可知它包括三個基本組成部分:積分器、抽取器和梳狀濾波器,如圖1-1和圖1-2所示,積分部分的積分器是單極點的IIR濾波器,并且反饋系數(shù)為1,也可看成是累加器,根據(jù)Z變化,積分器的傳輸函數(shù)為,梳狀濾波器是一個對稱的FIR濾波器。其傳輸函數(shù)為,式中,D是設(shè)計參數(shù),稱為微分延遲,則一個多級CIC濾波器的傳遞函數(shù)為。
二、 CIC濾波器的設(shè)計方案
設(shè)計的CIC濾波器原理方框圖,它包含分頻器fre_div,CIC抽取濾波器cic_cq,CIC插值濾波器cic_cz三個部分,通過控制分頻器的E端口,可控制CIC抽取濾波器和CIC插值濾波器的選取,當E=1’b1時,CIC抽取濾波器選通;當E=1’b0時,CIC插值濾波器選通。x_in是數(shù)據(jù)輸入端口,clk,clk1是CIC濾波器的時鐘輸入端口,en是控制CIC濾波器的選通端口,y_out是CIC抽取濾波器的輸出端口,yz_out是CIC插值濾波器的輸出端口 。
三、程序設(shè)計
該程序使用verilogHDL語言實現(xiàn)一個3級、抽取率為2和插值率為2的8位CIC抽取濾波器。
分頻器模塊部分程序如下:
…………..
assign clkk=clock,
clk11=cnt[0];
always@(posedge clock)
begin
if(E==1'b0)
en0<=1’b0;
else
en0<=1’b1;
end
………….
通過改變clkk,clk11的賦值就可以改變CIC抽取濾波器與CIC插值濾波器的抽取率和插值率。
CIC抽取濾波器模塊的部分程序如下:
…………….
i1<={i1[7:0],x_in};
i2<={i2[7:0],i1_out1};
i3<={i3[7:0],i2_out2};
i1_out1<=i1[15:8]+i1[7:0];
i2_out2<=i2[15:8]+i2[7:0];
i3_out3<=i3[15:8]+i3[7:0];//積分濾波
……………………..
c1<={c1[7:0],i3_out3};
c2<={c2[7:0],c1_out1};
c3<={c3[7:0],c2_out2};
c1_out1<=c1[7:0]-c1[15:8];
c2_out2<=c2[7:0]-c2[15:8];
y_out<=c3[7:0]-c3[15:8];//梳狀濾波
…………………….
CIC插值濾波器模塊的部分程序如下:
…………..
i1<={i1[7:0],x_in};
i2<={i2[7:0],i1_out1};
i3<={i3[7:0],i2_out2};
i1_out1<=i1[15:8]+i1[7:0];
i2_out2<=i2[15:8]+i2[7:0];
i3_out3<=i3[15:8]+i3[7:0];//積分濾波
…………….
if(clk1==1'b1)
temp<=8'b0;//2倍插值
else
temp<=i3_out3;
c1<={c1[7:0],temp};
c2<={c2[7:0],c1_out1};
c3<={c3[7:0],c2_out2};
c1_out1<=c1[7:0]-c1[15:8];
c2_out2<=c2[7:0]-c2[15:8];
yz_out<=c3[7:0]-c3[15:8];//梳狀濾波
四、仿真結(jié)果及分析
源程序經(jīng)過Quartus II和Modelsim完成綜合、仿真,波形變化情況是當E為高電平時,選通的是CIC抽取濾波器,在經(jīng)過15個時鐘后抽取濾波器才開始抽取,這是由于添加了中間寄存器造成的。當E為低電平時,選通的是CIC插值濾波器,經(jīng)過19個時鐘后,插值濾波器才開始輸出2倍過采樣輸出,這是由于添加了中間寄存器造成的。
五、結(jié)束語
經(jīng)過對仿真結(jié)果的分析,驗證了該設(shè)計方法的有效性?;贔PGA進行電路設(shè)計,在同一模塊中可方便的實現(xiàn)兩種不同功能的濾波器之間的轉(zhuǎn)換,大大減少了開發(fā)成本和縮短了開發(fā)時間,設(shè)計人員可以根據(jù)需要來修改程序,極大的提高了設(shè)計的靈活性和通用性。
參考文獻:
[1]馬建國,孟憲元.FPGA現(xiàn)代數(shù)字系統(tǒng)設(shè)計.北京:清華大學出版社,2010.4.
[2]姜宇柏,黃志強,等.通信收發(fā)信機的Verilog實現(xiàn)與仿真,北京:機械工業(yè)出版社,2006.10.
[3]洗進,等.Verilog HDL數(shù)字控制系統(tǒng)設(shè)計實例,北京:中國水利水電出版社,2007.