1. 程式人生 > 實用技巧 >CIC濾波器的設計與模擬

CIC濾波器的設計與模擬

CIC濾波器已經被證明是在高速抽取和插值系統中非常有效的單元,具有結構簡單,易於工程實現的特點。CIC濾波器是資料通訊中的常用模組,一般用於數字下變頻(DDC)和數字上變頻(DUC)系統,隨著資料傳輸率的增加,級聯梳狀濾波器(CIC)的應用變得尤為重要。.CIC濾波器的主要特點是,僅利用加法器、減法器和暫存器(無需乘法器),適合工作在高取樣率。在數字下變頻(DDC)中,CIC(級聯積分梳狀)濾波器起著重要的作用.它主要用於取樣速率的抽取,同時具有低通濾波的作用。針對軟體無線電中的多速率訊號處理,結合二進位制補碼錶示法,介紹了積分梳狀濾波器的基本組成原理,以及決定濾波器效能的引數選擇。本文在研究CIC濾波器基本原理的基礎上,對其進行了FPGA模擬、綜合,並最終應用在工程中,達到了設計要求。

CIC(Cascaded Integral Comb)抽取濾波器,最初由Hogenauer提出,因為它結構簡單,而且實現時無需乘法器和係數的儲存,所以作為一種簡單有效的抽樣率轉換方法,CIC已被廣泛應用於通訊和訊號處理領域。CIC抽取濾波器通常是由一個積分梳狀濾波器和一個抽取濾波器級聯組合而成,其中,級聯的積分梳狀濾波器又分為積分部分和梳狀部分,其傳輸函式表示式分別為

整個濾波器的傳輸函式為

(1-3)

其中,M為抽取器的抽取倍數,R為梳狀部分的差分延遲,一般取值為1或2,N為級聯的級數,尺度因子1/MR用來歸一化濾波器的直流增益。在實現時,通常將後M倍抽取器提到梳狀濾波器之前,此時只有積分器工作在輸入的高取樣率上,而濾波器則工作在抽取之後的低取樣率上,這樣就大大減少了計算量。圖1.1給出了CIC抽取濾波器的框圖(R

圖1.2 低通濾波器極-零圖

圖1.3 低通濾波器幅頻特性

=1)。

該濾波器的幅頻和相頻響應如圖1.5所示。可以看出單級CIC濾波器的旁瓣電平是比較大的,只比主瓣低13.46dB,這意味著阻帶衰減很差,難以滿足一般的應用需求。為了降低旁瓣電平,可以採用多級CIC濾波器級聯的辦法解決,M級CIC濾波器級聯,其阻帶衰減將變為Q*13.46dB。在數字下變頻晶片HSP50214中使用5級CIC濾波器,用來實現整數倍抽取。

圖1.5 CIC濾波器的幅頻和相頻響應

5級CIC濾波器級聯後的頻率響應如圖1.6所示,可見旁瓣衰減已經大於60dB。

圖1.6 5級CIC級聯濾波器頻率響應

引數要求:

fp:通帶截止頻率;(1500HZ)

fs:阻帶起始頻率;(2000HZ)

Rp:通帶內波動,即通帶內容許的最大衰減;(3dB)

Rs:阻帶內最小衰減;(50dB)

fN:取樣頻率;(8000HZ)

wp:通帶截止角頻率;(1500/4000)

ws:阻帶起始角頻率;(2000/4000)

本例中,首先在Filter Type中選擇Lowpass(低通濾波器);在Design Method選項中選擇FIR Equiripple,接著在Frequency Specifications選項中選取Units為Hz;指定Fs為8000Hz,Fpass為1500Hz,Fstop為2000Hz,Wpass為0.375dB,Wstop為0.5dB。設定完以後點選Design Filter即可得到所設計的FIR濾波器。通過選單選項Analysis可以在特性區看到所設計濾波器的幅頻響應、相頻響應、零極點配置和濾波器係數等各種特性。設計完成後將

在MATLAB中,對各種濾波器的設計都有相應的計算振幅響應的函式也可以用來做濾波器的程式設計。

%積分梳狀濾波器的設計

clear;

clc;

%積分濾波器的響應

b1=1;

a1=[1 -1];

% freqz(b1,a1,'whole');

hold on;

%梳狀濾波器的響應

D=9;

b2=[1 zeros(1,D-1) -1];

a2=1;

% freqz(b2,a2,'whole');

%積分梳狀濾波器響應

b3=b2;

a3=a1;

% freqz(b3/D,a3,'whole');

%兩隻內插因子為9的CIC級聯響應

b4=conv(b3,b3);

a4=conv(a3,a3);

% freqz(b4/D^2,a4,'whole');

%三隻內插因子為9的CIC級聯響應

b5=conv(b4,b3);

a5=conv(a4,a3);

% freqz(b5/D^3,a5,'whole');

%四隻內插因子為9的CIC級聯響應

b6=conv(b4,b4);

a6=conv(a4,a4);

freqz(b6/D^4,a6,'whole');

%五隻內插因子為9的CIC級聯響應

b7=conv(b6,b3);

a7=conv(a6,a3);

freqz(b7/D^5,a7,'whole');

在下面的程式程式碼中,實現了兩路(I和Q)寬度為9位的資料的16倍內插,內插濾波器採用5級級聯CIC濾波器,最後輸出寬度擷取[28..0]中的[28..21]共8位資料。消耗的資源為771個LC,速度可達30MHz以上。