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