DSP C54X窄帶中頻抽樣的實(shí)現(xiàn)
由于需要進(jìn)行實(shí)時(shí)的數(shù)字信號(hào)處理,從濾波器實(shí)現(xiàn)到確定準(zhǔn)確的抽樣頻率十分重要。具體實(shí)現(xiàn)的方法可以是:選擇可編程AD轉(zhuǎn)換器,可編程時(shí)鐘發(fā)生器輸入時(shí)鐘到AD、DSP采用定時(shí)中斷抽樣等。由于本硬件設(shè)計(jì)AD是輸入固定時(shí)鐘,芯片不可編程,因此采用DSP中斷抽樣和處理的方法。根據(jù)60kHz的抽樣頻率,計(jì)算抽樣周期是16667ns,DSP工作的時(shí)鐘頻率是20MHz,如果以單周期指令計(jì)算,在AD抽樣的周期內(nèi),DSP可執(zhí)行16667/50=333條指令。那么DSP的工作過程應(yīng)該按圖5時(shí)序進(jìn)行。
3.2 帶通濾波器的實(shí)現(xiàn)本文引用地址:http://m.butianyuan.cn/article/150356.htm
使用DSP實(shí)現(xiàn)帶通濾波器的設(shè)計(jì)方法很多,可以先用MATLAB、SystemView等軟件進(jìn)行模擬仿真,然后獲取濾波器的系數(shù),設(shè)計(jì)FIR濾波器或IIR濾波器,如果僅僅處理語音信號(hào)可以采用IIR濾波器;如果需要處理數(shù)據(jù)信號(hào)一般可以用FIR濾波器。
其次使用DSP_C54X定點(diǎn)數(shù)字信號(hào)處理器,由于在濾波器實(shí)現(xiàn)與數(shù)據(jù)處理中采用小數(shù)方式,因此要求輸入的數(shù)據(jù)也是小數(shù),而從AD轉(zhuǎn)換采集數(shù)據(jù)信號(hào)是十六進(jìn)制的,因此首先要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,然后處理,處理完的數(shù)據(jù)還需要轉(zhuǎn)換成16進(jìn)制,通過DA輸出。編制的DSP抽樣與處理的程序如下所示,實(shí)際使用中還需要矢量文件和連接文件。
.title “x.asm”
.mmregs
.def start
.def DStINT ;定時(shí)器中斷入口地址
x_new .usect “DATA1”,57 ;初始化數(shù)據(jù)區(qū)
x_old .usect “DATA2”,57 ;循環(huán)緩沖區(qū)長度
.bssy,1
size .set 57 ;重復(fù)運(yùn)算次數(shù)
data_l .set 256 ;計(jì)算數(shù)據(jù)長度是256
PA0 .set 0
PA1 .set 1
.data
COEF .word -18,99,50,-76,-64,6,38,62,28,-36,-78,-61,46,92,58
.word 14,-123,-134,45,83,122,114,-184,-199,13,4,236,260
.word -244,-213,-85,-173,408,425,-267,-117,-300,-475,642,561
.word -187,174,-716,-943,941,590,149,883,-1605,-1808,1406
.word 287,1534,3658,-5867,-7587, 8579
.text
start: STM #0820H,PMST ;
STM #0000H,SWWSR ;
STM #0010H,TCR ;關(guān)閉定時(shí)器,TDDR=0000
STM #014CH,PRD ;定時(shí)器設(shè)置60K采樣周期
STM #0008H,IFR ;清除TINT中斷標(biāo)志
STM #0008H,IMR ;容許中斷
STM #y,AR1
SSBX FRCT ;小數(shù)運(yùn)算
STM #x_new,AR2 ;AR2指向新緩沖區(qū)第1單元
STM #x_old+(size-1),AR3 ;AR3指向老緩沖區(qū)最后單元
STM #-1,AR0 ;
STM #size,BK ;循環(huán)緩沖區(qū)長度
STM #0C20H,TCR ;啟動(dòng)TSS=0,TRB=1自動(dòng)加載PRD
RSBX INTM ;開放CPU中斷
wait B wait ;等待中斷
DStINT portr PA1,*AR2 ;讀取AD抽樣數(shù)據(jù)
LD *AR2,8,A
SUB #8000H,A ;轉(zhuǎn)換16進(jìn)制數(shù)為小數(shù)表示
STL A,*AR2 ;實(shí)現(xiàn)FIR濾波
ADD *AR2+0%,*AR3+0%,A ;AR2地址中內(nèi)容16位加AR3同樣操作-->(AH)中
RPTZ B,#(size-1)
FIRS *AR2+0%,*AR3+0%,COEF ;A*系數(shù)-->B,同時(shí)進(jìn)行下一個(gè)ADD功能,直到全部完成
STH B,*AR1
LD *AR1,16,A
RSBX TC
CMPS A,*AR1 ;實(shí)現(xiàn)包絡(luò)檢波
BC buchl,NTC ;TC=0,采集數(shù)據(jù)>0,不處理
STH A,*AR1 ;TC=1,保存DSP的8000H~FFFFH
LD #0FFFFH,A
SUB *AR1,A ;實(shí)現(xiàn)FFFFH-采樣值
STL A,-8,*AR1 ;右移8位恢復(fù)半波
B CHLEND
buchl: SFTA A,-16
STL A,-8,*AR1
CHLEND: portw *AR1,PA0 ;輸出DA
MAR *+AR2(2)% ;AR2=circ(AR2+2),修改AR2
MAR *+AR3(1)% ;訪問后,AR3=circ(AR3+1)修改AR3
MVDD *AR2,*AR3+0%
RETE
.end
其中,濾波器的輸入信號(hào)已經(jīng)將采集的16進(jìn)制數(shù)轉(zhuǎn)換成Q15格式,其輸出是定點(diǎn)DSP的Q15格式,對(duì)于包絡(luò)檢波可以認(rèn)為:0~1用0000H~7FFFH表示低中頻載波的正半周,而低中頻的負(fù)半周是“FFFFH-抽樣值”,即是“(0-(0~-1)=0~1”,此運(yùn)算將低中頻載波的負(fù)半周轉(zhuǎn)換為正半周,實(shí)現(xiàn)了檢波功能,DA輸出加一個(gè)低通濾波器可以得到基帶語音信號(hào)。
4 性能分析
通過以上分析和程序設(shè)計(jì),使用DSPC5402構(gòu)成的數(shù)字信號(hào)處理系統(tǒng),對(duì)465kHz的窄帶中頻調(diào)幅信號(hào)進(jìn)行欠抽樣與數(shù)據(jù)處理,通過存儲(chǔ)示波器測量的波形如圖6所示。由于采用帶通抽樣,降低了抽樣頻率,使DSP有足夠的時(shí)間處理,如濾波、信號(hào)變換等。通過輸出的波形可以看到:信號(hào)的量化噪聲在一定程度上影響輸出信號(hào)的純度。因此還需要加好的低通濾波器。實(shí)際中還對(duì)普通的調(diào)幅收音機(jī)中頻輸出進(jìn)行實(shí)際抽樣處理,可以獲得比較清晰的語音信號(hào)。
5 結(jié)束語
本文通過對(duì)帶通抽樣定理的討論,結(jié)合DSPC54芯片設(shè)計(jì)的數(shù)字信號(hào)處理系統(tǒng),對(duì)窄帶中頻信號(hào)進(jìn)行實(shí)際的抽樣與處理,獲得較好的效果。
評(píng)論