《DSP課程設計--有限沖擊響應FIR濾波器的設計》由會員分享,可在線閱讀,更多相關《DSP課程設計--有限沖擊響應FIR濾波器的設計(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、有限沖擊響應FIR濾波器的設計
一、設計目的
1使學生加深對DSP芯片TMS320C55x的結(jié)構、工作原理的理解;
2了解FIR 的原理和特性;
3熟悉設計FIR 數(shù)字濾波器的原理和方法;
4 學習FIR 濾波器的DSP 實現(xiàn)原理;
5 學習使用ccs 的波形觀察窗口觀察輸入、輸出信號波形和頻譜變化情況。
二、設計原理
濾波器就是在時間域或頻域內(nèi),對已知激勵產(chǎn)生規(guī)定響應的網(wǎng)絡,使其能夠從信號中提取有用的信號,抑制并衰減不需要的信號,濾波器的設計實質(zhì)上就是對提出的要求給出相應的性能指標,再通過計算,使物理可實現(xiàn)的實際濾波器響應特性逼近給出的頻率響應特性。
FIR數(shù)字濾波器是一
2、種非遞歸系統(tǒng),其傳遞函數(shù)為:
=
由此可得到系統(tǒng)的差分方程為:
則,F(xiàn)IR濾波器的結(jié)構如下圖:
bN-1
bN-2
b1
b0
x(n-N+1)
x(n-1)a
Z-1
Z-1
Z-1
X(n)
y(n)
其沖激響應是有限長序列,它 濾波器系數(shù)向量,N 為FIR濾波器的階數(shù)。
在數(shù)字信號處理應用中往往需要設計線性相位的濾波器,F(xiàn)IR濾波器在保證幅度特性滿足技術要求的同時,很容易做到嚴格的線性相位特性為了使濾波器滿足線性相位條件,要求其單位脈沖響應為實序列,且滿足偶對稱或奇對稱條件,即或.這樣,當N為偶數(shù)時,偶對稱線性相位FIR濾波器的差分方程表達為
由上可
3、見,F(xiàn)IR濾波器不斷地對輸入樣本延時后,再做乘法累加運算,將濾波器結(jié)果輸出。因此,F(xiàn)IR實際上是一種乘法累加運算。而對于線性相位FIR濾波器系數(shù)的對稱特性,可以采用結(jié)構精簡的FIR結(jié)構將乘法器數(shù)目減少一半。
應用MATLAB設計FIR濾波器的主要任務就是根據(jù)給定的性能指標設計一個,使其逼近這一指標,進而計算并確定濾波器的系數(shù),再將所設計濾波器的幅頻響應、相頻響應曲線作為輸出,與設計要求進行比較,對設計的濾波器進行優(yōu)化,設計完成之后將得到的FIR濾波器的單位沖激響應序列的各個參數(shù)值。
三、總體方案設計
1 啟動CCS ,在CCS 中建立一個匯編源文件、建立一個C 源文件和一個命令文件,并將
4、這三個文件添加到工程,再編譯并裝載程序
2 設置波形時域觀察窗口,得到其濾波前后波形變化圖;
3 設置頻域觀察窗口,得到其濾波前后頻譜變化圖。
四、源程序
1、新建工程文件
打開Setup CCS選擇c55芯片,打開CCS軟件,選擇project/new,命名為myproject。
2、添加文件到工程
(1)建立文件 選擇file/new,匯編源程序,如下:
.global _fir,_init,_B,_outdata
_fir
bset frct
amov #_B,xdp
mov #_B,cdp
mov t0,ac0
sub #1,
5、ac0
mov ac0,mmap(csr)
add ac0,ar0
mov #0,ac0
rpt csr
macmz *ar0-,*cdp+,ac0
mov hi(ac0),t0
ret
_init
mov mmap(t0),ac0
sub #1,ac0
mov ac0,ar7
rptz ac0,ar7
mov ac0,*ar0+
ret
_outdata
mov t1,ac0
sub #2,ac0
mov ac0,mmap(csr)
add ac0,ar
6、0
rpt csr
delay *ar0-
mar *ar0+
mov t0,*ar0
ret
c文件
#include "s.h"
#include "math.h"
#define signal_1_f 200
#define signal_2_f 620
#define signal_sample_f 2000
#define pi 3.1415926
#define coff_L 23
#define bufer_L 256
int data_in[bufer_L];
int out[bufer_L] ;
int firo
7、ut;
int x[coff_L+1];
int k=0;
int bufer=bufer_L;
extern int fir(int *,int);
extern int init(int *,int);
extern int outdata(int *,int,int);
void inputwave();
void main()
{
inputwave();
init(x,BL);
while(1)
{
x[0]=data_in[k];
firout=fir(x,BL);
outdata(out,firout,bufer);
k++;
if(k>=bu
8、fer_L)
{
k=0;
}
}
}
void inputwave()
{
float wt1;
float wt2;
int i;
for(i=0;i<=bufer_L;i++)
{
wt1=2*pi*i*signal_1_f;
wt1=wt1/signal_sample_f;
wt2=2*pi*i*signal_2_f;
wt2=wt2/signal_sample_f;
data_in[i]=(cos(wt1)+cos(wt2))/2*32768;
}
}
S.h文件
int BL=23;
intB[23]={-417,342,1961,169
9、2,-762,-1003,1676,1115,-3200,-1159,10335,17562,10335,-1159,-3200,1115,1676,-1003,-762,1692,1961,342,-417};
(2)保存文件
(3)添加文件 右鍵點擊建立的工程,選擇Add file to project,在選中建立的文件。
3、匯編源程序的鏈接命令文件:
-stack 0x500
-sysstack 0x500
-heap 0x1000
-c
-u _Reset
-l rts55.lib
MEMORY
{
PAGE 0:
RAM(RWIX): orig
10、in=0x000100, length=0x01ff00
ROM(RIX): origin=0x020100, length=0x01ff00
VECS(RIX): origin=0xffff00, length=0x000200
PAGE 2:
IOPORT(RWI):origin=0x000000, length=0x020000
}
SECTIONS
{
.text >ROM PAGE 0
.data >ROM PAGE 0
.bss >RAM PAGE 0
.const >RAM PAGE 0
11、 .sysmem >RAM PAGE 0
.stack >RAM PAGE 0
.sysstack >RAM PAGE 0
.switch >RAM PAGE 0
.cinit >RAM PAGE 0
.pinit >RAM PAGE 0
.vectors >VECS PAGE 0
.ioport >IOPORT PAGE 2
}
4、加載可執(zhí)行文件
選擇工程,點擊file/load program,選擇.out文件
5、運行 執(zhí)行.out文件
6、設置波形時域/頻域觀察窗口,得到其濾波前后波形變化圖;
五、實驗結(jié)果及
12、分析
Acquisition buffer size:256
Display data size:250
DSP data type:16-bits signed integer
時域輸入輸出波形:
由時域圖可得:濾波前的時域圖是帶很多毛刺不規(guī)則的正弦波,而濾波后的波形是平滑的等幅正弦波且波形振幅相對濾波前的最大振幅有所減小。
頻域輸入輸出波形:
由頻域圖可得:濾波前的頻域圖會出現(xiàn)兩個帶尖峰的圖像,而濾波后的波形只會出現(xiàn)一個帶尖峰圖像,而且是出現(xiàn)在低頻部分,說明信號經(jīng)過濾波器后,將信號中的高頻成分濾除掉了。
六、設計總結(jié)
通過這次基于DSP的數(shù)字濾波器設計,我初步學會了應用CCS進行DSP設計的實踐操作。熟悉了DSP集成開發(fā)環(huán)境(CCS),掌握了FIR數(shù)字濾波器原理和方法。通過對系統(tǒng)的調(diào)試,對線性相位FIR數(shù)字濾波器特性及不同階數(shù)對濾波器特性的影響進行了研究。通過觀察時域和頻域圖,對FIR數(shù)字濾波器特性進行了驗證,在應用DSP對數(shù)字濾波器實現(xiàn)的過程中,體會到了DSP在數(shù)字濾波實現(xiàn)中的優(yōu)缺點。用DSP 實現(xiàn)FIR數(shù)字濾波,具有穩(wěn)定性好、準確度高、靈活性好、不受環(huán)境影響等優(yōu)點。在這次的課程設計中學會了如何和老師、同學一起交流、探討問題,在學習的過程中同時培養(yǎng)了和同學之間的合作能力,增進了彼此之間的友誼,感謝在這次設計中給予我?guī)椭睦蠋熯€有各位同學。