DS技術(shù)電子通信2_第1頁
DS技術(shù)電子通信2_第2頁
DS技術(shù)電子通信2_第3頁
DS技術(shù)電子通信2_第4頁
DS技術(shù)電子通信2_第5頁
已閱讀5頁,還剩214頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第五章數(shù)字信號處理應(yīng)用程序設(shè)計(jì)一、FFT運(yùn)算的DSP實(shí)現(xiàn)二、數(shù)字濾波器的DSP實(shí)現(xiàn)三、工程問題的DSP實(shí)現(xiàn)1一、FFT運(yùn)算的DSP實(shí)現(xiàn)1、DFT與FFTDFT:離散傅立葉變換FFT:一種高效實(shí)現(xiàn)離散傅立葉變換的算法。

作為一個非常重要的工具經(jīng)常使用,甚至成為DSP運(yùn)算能力的一個考核標(biāo)準(zhǔn)。傅立葉變換2

時域——頻域

離散信號周期譜周期信號離散譜離散周期信號離散周期譜34DFT的定義56DFT和FFT計(jì)算量對比72、N點(diǎn)蝶2FFTx1[n]=x[2n]x2[n]=x[2n+1]將N點(diǎn)的序列分為兩個N/2點(diǎn)的序列89上式的最后一步是因?yàn)?0我們已經(jīng)經(jīng)將一個個N點(diǎn)的的DFT分解成成為兩個個N/2點(diǎn)的DFT。。但是,X(k)有N點(diǎn)點(diǎn),但X1(k)和X2(k)都只只有N/2點(diǎn),,因此,,前面計(jì)計(jì)算的只只是X(k)的的前一半半項(xiàng)的結(jié)結(jié)果。11對于后一一半X(k),,有這是因?yàn)闉?2這樣,只只要計(jì)算算出(0,N/2-1)區(qū)間間的X1(k)和X2(k),也就就可以很很方便地地計(jì)算整整個(0,N-1)區(qū)區(qū)間的全全部X(k),,從而大大大地節(jié)節(jié)省了運(yùn)運(yùn)算量。。13將N點(diǎn)DFT分分為兩個個N/2點(diǎn)DFT14將N/2點(diǎn)DFT分為為兩個N/4點(diǎn)點(diǎn)DFT152點(diǎn)DFT168點(diǎn)蝶2FFT17按頻率抽抽取(DIF))x1[n]=x[n]x2[n]=x[n+N/2]n=0,,1,………,N/2-11819DIT與與DIF對比DIT輸輸入是混混序的,,頻域的的輸出是是順序的的;DIF輸輸入是順順序的,,頻域的的輸出是是混序的的。DIT的的復(fù)數(shù)乘乘法出現(xiàn)現(xiàn)在加減減之前;;DIF的的復(fù)數(shù)乘乘法出現(xiàn)現(xiàn)在加減減之后。。2021定點(diǎn)DSP計(jì)算算1024點(diǎn)FFT的的時間DSP時時間間(ms)TMS320C2510.9TMS320C62010.067DSP560011.6522浮點(diǎn)DSP計(jì)算算1024點(diǎn)FFT的的時間DSP時時間(ms)TMS320C303.87TMS320C401.02ADSP210600.46DSP960010.6ADSP211600.45s23順序、混混序與位位倒序DIT與與DIF總有一一邊是混混序的;;所有DSP都提提供了位位倒序((bitreverse))尋址指指令;溢出問題無論是C語言言,還是DSP匯編語言言的FFT程程序都有現(xiàn)成成的程序可用用。243、FFT運(yùn)算算的DSP實(shí)現(xiàn)現(xiàn)主要內(nèi)容容:1基基二實(shí)數(shù)數(shù)FFT運(yùn)算的的算法2FFT運(yùn)運(yùn)算模擬擬信號的的產(chǎn)生及及輸入3實(shí)實(shí)序列FFT匯匯編源程程序及鏈鏈接命令令文件4觀觀察信號號時域波波形及其其頻譜251.基基二實(shí)實(shí)數(shù)FFT運(yùn)算算的算法法該算法主主要分為為以下四四步:第一步,,輸入數(shù)數(shù)據(jù)的組組合和位位倒序把輸入序序列作位位倒序是是為了在在整個運(yùn)運(yùn)算最后后的輸出出中得到到的序列列是自然然順序。。第二步,,N點(diǎn)復(fù)復(fù)數(shù)FFT在DATA數(shù)據(jù)據(jù)處理緩緩沖器里里進(jìn)行N點(diǎn)復(fù)數(shù)數(shù)FFT運(yùn)算。。26第三步,,分離復(fù)復(fù)數(shù)FFT的輸輸出為奇奇部分和和偶部分分分離FFT輸出出為RP、RM、IP和IM四個序序列,即即偶實(shí)數(shù)數(shù)、奇實(shí)實(shí)數(shù)、偶偶虛數(shù)和和奇虛數(shù)數(shù)四部分分。第四步,,產(chǎn)生2N點(diǎn)的的復(fù)數(shù)FFT輸輸出序列列產(chǎn)生2N=256個點(diǎn)點(diǎn)的復(fù)數(shù)數(shù)輸出,,它與原原始的256個個點(diǎn)的實(shí)實(shí)輸入序序列的DFT一一致。272.FFT運(yùn)算模模擬信號號的產(chǎn)生生及輸入入產(chǎn)生模擬擬輸入信信號可以以有兩種種方法::第一種方方法是用用C語言言程序產(chǎn)產(chǎn)生mdata.inc文件件,然后后,在DSP匯匯編語言言程序中中通過.copy匯編編命令將將生成的的數(shù)據(jù)文文件mdata.inc復(fù)制制到匯編編程序中中。第二種方方法是建建立與輸輸入信號號對應(yīng)的的數(shù)據(jù)流流文件mdata.dat,,具體操操作步驟驟見教材材內(nèi)容。。283.實(shí)實(shí)序列列FFT匯編源源程序及及鏈接命命令文件件【例】256點(diǎn)點(diǎn)實(shí)序列列FFT的DSP實(shí)現(xiàn)現(xiàn)。256點(diǎn)點(diǎn)實(shí)序列列FFT匯編源源程序如如下:**************************************Radix-2,DIT,Real-inputFFTProgram**fft.asm**************************************.mmregs.globalreset,start,sav_sin,sav_idx,sav_grp.defstart,_c_int00.data29DATA.space1024.copy"mdata1.inc";mdata1.inc為為模擬輸輸入信號號數(shù)據(jù),,起始地地址標(biāo)號號INPUTN .set128;復(fù)數(shù)點(diǎn)點(diǎn)數(shù)LOGN .set7;蝶形形級數(shù)sav_grp .usect"tempv",3;定定義組變變量值sav_sin .setsav_grp+1;定定義旋轉(zhuǎn)轉(zhuǎn)因子表表sav_idx .setsav_grp+2OUTPUT.usect"OUTPUT",256;信信號功率率譜BOS.usect"stack",0Fh;定義堆堆棧TOS.usect"stack",1.copy““twiddle1.inc”;正弦表表系數(shù)由由twiddle1.inc;文件給給出,起起始地址址標(biāo)號TWI130.copy““twiddle2.inc“;余余弦表系系數(shù)由twiddle2.inc文文件給;出,起起始地址址標(biāo)號TWI2.text_c_int00bstartnopnopstart:STM#TOS,SPLD#0,DPSSBXFRCT……………31輸入信信號時時域波波形、、頻譜譜圖及及其功功率譜譜4.觀觀察信信號時時域波波形及及其頻頻譜32二、數(shù)數(shù)字濾濾波器器的DSP實(shí)現(xiàn)現(xiàn)1、模模擬濾濾波器器回顧顧數(shù)字信信號處處理主主要是是面向向?qū)崟r時的密密集型型數(shù)據(jù)據(jù)運(yùn)算算。而而濾波波在數(shù)數(shù)字信信號處處理中中占有有極其其重要要的地地位,,是語語音處處理、、圖像像處理理、模模式識識別、、頻譜譜分析析等應(yīng)應(yīng)用的的基本本處理理算法法。33理想低低通濾濾波器器34低通、、高通通、帶帶通與與帶阻阻濾波波器35高通濾濾波器器36帶通濾濾波器器37帶阻濾濾波器器38截止頻頻率與與帶寬寬39通帶、、阻帶帶與過過渡帶帶40滾降降((過渡渡帶))41阻帶衰衰減42帶內(nèi)平平坦度度43巴特沃沃爾斯斯濾波波器((Butterworth)4445契比協(xié)協(xié)夫?yàn)V濾波器器(Chebyshev)契比協(xié)協(xié)夫多多項(xiàng)式式46契比協(xié)協(xié)夫?yàn)V濾波器器(Chebyshev)I型47契比協(xié)協(xié)夫?yàn)V濾波器器(Chebyshev)II型型48橢圓濾濾波器器49在同樣樣的通通帶平平滑度度、過過渡帶帶寬和和阻帶帶衰減減指標(biāo)標(biāo)下,,三種種濾波波器所所需要要的階階數(shù)為為:巴特沃沃爾什什6階契比雪雪夫4階階橢圓3階50二階低通濾濾波器51幅頻特性和和相頻特性性52532、數(shù)字濾波波器數(shù)字濾波又稱稱程序?yàn)V波,,是將輸入信信號通過一定定的運(yùn)算關(guān)系系(程序)變變?yōu)樗璧妮斴敵鲂盘?,即即:?shí)現(xiàn)數(shù)字字濾波就必須須把輸入輸出出信號關(guān)系轉(zhuǎn)轉(zhuǎn)變成可實(shí)現(xiàn)現(xiàn)的數(shù)學(xué)模型型或算法。用DSP芯片片實(shí)現(xiàn)數(shù)字濾濾波具有穩(wěn)定定性好、精確確度高、不受受環(huán)境影響,,以及靈活性性好等突出優(yōu)優(yōu)點(diǎn)。54數(shù)字濾波器的的差分方程分為無限沖激激響應(yīng)系統(tǒng)(IIR)和和有限沖激響響應(yīng)系統(tǒng)(FIR)。IIR系統(tǒng)因因?yàn)榕c過去某某些輸出有關(guān)關(guān),所以網(wǎng)絡(luò)絡(luò)結(jié)構(gòu)有反饋饋支路稱為遞遞歸結(jié)構(gòu),F(xiàn)IR系統(tǒng)只只與激勵有關(guān)關(guān)沒有反饋支支路,稱為非非遞歸結(jié)構(gòu)。。55IIR濾波器器的主要特點(diǎn)點(diǎn)單位沖擊響應(yīng)應(yīng)有無限多項(xiàng)項(xiàng)高效率(因?yàn)闉榻Y(jié)構(gòu)簡單、、系數(shù)小、乘乘法操作較少少)與模擬濾波器器有對應(yīng)關(guān)系系可以解析控制制,強(qiáng)制系統(tǒng)統(tǒng)在指定位置置為零點(diǎn)有極點(diǎn),在設(shè)設(shè)計(jì)時要考慮慮穩(wěn)定性具有反饋,可可能產(chǎn)生噪聲聲、誤差累積積56y[k]=a0x[k]+a1x[k-1]+a2x[k-2]–b1y[k-1]–b2y[k-2]Y(z)=a0X(z)+a1X(z)z-1+a2X(z)z-2–b1Y(z)z-1–b2Y(z)z-2Y(z)=[(a0+a1z-1+a2z-2)/(b1z-1+b2z-2)]X(z)57零極點(diǎn)子系統(tǒng)統(tǒng)交換位置((傳輸函數(shù)數(shù)不變,但差差分方程不同同)58標(biāo)準(zhǔn)型二階節(jié)節(jié)59二階節(jié)的C54實(shí)現(xiàn)STM#d+5,AR3;AR3:d(n),d(n-1),d(n-2)STM#table,AR4;AR4:coeffofIIRfilterB2,B1,A2,A1,A0……….*FeedbackpathMAC*AR4+,*AR3-,A ;input+d(n-2)*B2MAC*AR4+,*AR3-,A ;input+d(n-2)*B2+d(n-1)*B1STHA,*AR3;d(n)=input+d(n-2)*B2+d(n-1)*B1*ForwardpathMPY*AR4+,*AR3-,A ;d(n-2)*A2MAC*AR4+,*AR3,A;d(n-2)*A2+d(n-1)*A1DELAY*AR3-;d(n-2)=d(n-1)MAC*AR4+,*AR3,A;d(n-2)*A2+d(n-1)*A1+d(n)*A0DELAY*AR3-;d(n-1)=d(n)……….60級連61多級二階節(jié)級級連成多級IIR62并聯(lián)63IIR濾波器器的設(shè)計(jì)(1)設(shè)計(jì)一一個符合要求求的模擬濾波波器(2)從S平平面映射到Z平面,得到到相應(yīng)的數(shù)字字濾波器64沖激響應(yīng)不變變法h(nts)=ha[k]65Z平面的單位位圓映射為S平面的±fs/2的區(qū)區(qū)間66雙線性變換67有限沖擊響應(yīng)應(yīng)(FIR))濾波器=a0+a1z-1+…+aNz-(N-1)68FIR濾波器器的結(jié)構(gòu)69頻率率響響應(yīng)應(yīng)70FIR濾濾波波器器的的主主要要特特點(diǎn)點(diǎn)單位位沖沖擊擊響響應(yīng)應(yīng)只只有有有有限限多多項(xiàng)項(xiàng)可以以設(shè)設(shè)計(jì)計(jì)成成線線性性相相位位系系統(tǒng)統(tǒng)只在在零零點(diǎn)點(diǎn)處處有有極極點(diǎn)點(diǎn),,因因此此系系統(tǒng)統(tǒng)總總是是穩(wěn)穩(wěn)定定的的便于于DSP實(shí)實(shí)現(xiàn)現(xiàn)并并可可用用立立即即數(shù)數(shù)乘乘加加指指令令編編程程,,((節(jié)節(jié)約約存存儲儲器器))71系統(tǒng)統(tǒng)非非線線性性相相移移造造成成輸輸出出信信號號失失真真系統(tǒng)統(tǒng)相相位位特特性性決決定定了了信信號號不不同同頻頻率率的的時時延延72輸入波形DFT變換忽略相位信息IDFT變換輸出波形忽略相相位信信息的的后果果73相位特特性74要求線線性相相位的的例子子通信系系統(tǒng)::數(shù)據(jù)據(jù)通信信、調(diào)調(diào)制解解調(diào)器器希爾伯伯特變變換器器:要要求輸輸入輸輸出信信號正正交。。高保真真音響響系統(tǒng)統(tǒng):音音樂的的相位位失真真必須須減到到最小小,盡盡可能能逼真真地重重現(xiàn)原原來的的聲音音。理想微分器器:……75線性相位的的FIR濾濾波器系統(tǒng)的群延延時76線性相位設(shè)設(shè)計(jì)當(dāng)h[p]=h[N-p]即h[p]關(guān)于中點(diǎn)點(diǎn)對稱,且且:則滿足線性性相位要求求,群延時時為:77假設(shè)在時H()=0,有:當(dāng)H()為偶函數(shù)數(shù)有:用付氏級數(shù)數(shù)實(shí)現(xiàn)FIR濾波器器78截取有限項(xiàng)項(xiàng)得近似H(z)::其中:h(p)=79用DSP實(shí)實(shí)現(xiàn)FIR濾波器的的存儲器安安排80FIR濾波器編程程實(shí)現(xiàn)RPTBDfir_filter_loop-1STM#K_FIR_BFFR,BK;FIRcircularbffrsizeLD*INBUF_P+,A;loadtheinputvaluefir_filter:STLA,*FIR_DATA_P+%;replaceoldestsamplewith;;newestsampleRPTZA,(K_FIR_BFFR-1)MAC*FIR_DATA_P+0%,*FIR_COFF_P+0%,A;;filteringSTHA,*OUTBUF_P+;replacetheoldestbffrvaluefir_filter_loop81計(jì)算16階的FIR濾濾波器輸輸出256個點(diǎn)點(diǎn).sect““fir-prog”STM#255,BRC;Repeat256timesRPTBDfir_filter_loopSTM#16,BK;FIRcircularbuffersizeLD*AR7+,A;loadtheinputvalueSTLA,*AR4+%;replaceoldestsamplewith;newestsampleRPTZA,#15MAC*AR4+0%,*AR3+0%,A;filteringSTHA,*AR5+;replacetheoldestbuffervaluefir_filter_loop82C54的FIRS指令令該指令實(shí)實(shí)現(xiàn)一個個對稱的的FIR濾波器器。累加加器A的的高段((bit32-16))和由pmad(程序序存儲器器地址))尋址的的pmem相乘乘,結(jié)果果加到累累加器B中。同同時,存存儲器操操作數(shù)Xmem和Ymem相相加,結(jié)結(jié)果左移移16bits,然后后裝入累累加器A。在下下一個循循環(huán)中,,pmad加1。語法::FIRSXmem,Ymem,,pmad例:FIRS*AR3+,*AR4+,COEFFS83矩形窗窗84Hamming窗85Blackman窗窗86矩形窗窗與blackman窗窗的比比較87窗函數(shù)旁瓣峰值過渡帶寬阻帶W[n]幅度(dB)衰減(dB)矩形窗三角窗海寧窗海明窗布蘭克門窗凱撒窗-21-25-44-53-74-804/N8/N8/N8/N12/N10/N-13-25-31-41-57-57各種窗窗函數(shù)數(shù)基本本參數(shù)數(shù)小結(jié)結(jié)88數(shù)字濾濾波器器設(shè)計(jì)計(jì)軟件件包DFDP4/plus通過雙雙線性性變換換法,,由Butterworth、Chebyshev、elliptic等等原型型濾波波器來來設(shè)計(jì)計(jì)IIR通過窗窗函數(shù)數(shù)設(shè)計(jì)計(jì)法設(shè)設(shè)計(jì)FIR濾波波器使用代代碼生生成器器(CGEN))可生生成TMS320DSP的的匯編編代碼碼可生成成采樣樣信號號(如如矩形形波、、單脈脈沖波波、三三角波波、正正余弦弦、高高斯噪噪聲波波等))891.FIR濾波波器的的基本本結(jié)構(gòu)構(gòu)FIR濾波波器的的系統(tǒng)統(tǒng)函數(shù)數(shù)沒有反反饋回回路,,因此此它是是穩(wěn)定定系統(tǒng)統(tǒng),其其單位位沖激激響應(yīng)應(yīng)h(n)是一個個有限限長序序列。。FIR系統(tǒng)統(tǒng)的差差分方方程實(shí)際上上是一一種乘乘法累累加運(yùn)運(yùn)算。。3、FIR濾波波器的的DSP實(shí)實(shí)現(xiàn)90FIR濾波波器的的結(jié)構(gòu)構(gòu)圖::由圖看看出,,實(shí)際際算法法由一一組基基本運(yùn)運(yùn)算單單元::乘法法器、、加法法器、、延遲遲器組組成。。顯然然,最最主要要的問問題是是延遲遲環(huán)節(jié)節(jié)如何何實(shí)現(xiàn)現(xiàn)。912.FIR濾濾波波器器中中z-1的實(shí)實(shí)現(xiàn)現(xiàn)對于于N級級的的FIR濾濾波波器器,,在在數(shù)數(shù)據(jù)據(jù)存存儲儲器器中中開開辟辟一一個個稱稱為為滑滑窗窗的的N個個單單元元的的線性性數(shù)數(shù)據(jù)據(jù)緩緩沖沖區(qū)區(qū),存存放放最最新新的的N個個輸輸入入數(shù)數(shù)據(jù)據(jù)樣樣本本;;從從最最老老的的樣樣本本開開始始,,每每讀讀一一個個樣樣本本后后,,將將此此樣樣本本向向下下移移位位,,讀讀完完最最后后一一個個樣樣本本后后,,輸輸入入最最新新樣樣本本至至緩緩沖沖區(qū)區(qū)的的頂頂部部。。用線性緩沖區(qū)區(qū)實(shí)現(xiàn)z-1的優(yōu)點(diǎn)是,新新老數(shù)據(jù)在存存儲器中存放放的位置直接接明了。(1)用線性性緩沖區(qū)法實(shí)實(shí)現(xiàn)z-192N=6的線性性緩沖區(qū)存儲儲器圖93C54x片內(nèi)內(nèi)沒有I/O資源,CPU通過外部部譯碼可以尋尋址64K的的I/O空間間。有兩條實(shí)現(xiàn)輸輸入和輸出的的指令:PORTRPA,Smem;;將PA端口口的內(nèi)容送;數(shù)據(jù)存儲器器SmemPORTWSmem,PA;;將地址為Smem的數(shù)數(shù)據(jù);存儲器內(nèi)容容送端口PA數(shù)據(jù)的輸入/輸出94使用存儲器延延時指令DELAY,可可以將數(shù)據(jù)存存儲單元中的的內(nèi)容向較高高地址的下一一單元傳送。。實(shí)現(xiàn)z-1的運(yùn)算指令為為:DELAYSmem;(Smem)→Seme+1,數(shù)據(jù)據(jù)存儲器;單元的內(nèi)容容復(fù)制下一高高地址單元DELAY*AR2;AR2指向源源地址,即將將AR2所指指單;元內(nèi)容復(fù)制制到下一高地地址單元中;延時指令與與其它指令結(jié)結(jié)合LD+DELAY→LTD指令;;單數(shù)據(jù)存存儲器的值裝裝入;T寄存器并并送下一單元元延時MAC+DELAY→MACD指令;;乘加延延遲存儲器的延時時操作95在數(shù)據(jù)存儲器器中開辟一個個稱為滑窗的的N個單元的的循環(huán)緩沖區(qū),循環(huán)緩沖區(qū)地地址首尾相鄰鄰:滑窗中存放放最新的N個個輸入樣本,,每次輸入新新樣本時,以以新樣本改寫寫滑窗中最老老的數(shù)據(jù),而而滑窗中的其其它數(shù)據(jù)不動動;利用片內(nèi)內(nèi)循環(huán)緩沖區(qū)區(qū)長度寄存器對滑窗進(jìn)行間間接尋址。利用循環(huán)緩沖沖區(qū)實(shí)現(xiàn)Z-1的優(yōu)點(diǎn)是不需需要移動數(shù)據(jù)據(jù),不存在一一個機(jī)器周期期中要求能一一次讀和一次次寫的數(shù)據(jù)存存儲器,因而而可以將循環(huán)環(huán)緩沖區(qū)定位位在數(shù)據(jù)存儲儲器的任何位位置(而線性性緩沖區(qū)要求求定位在DARAM)。。(2)用循環(huán)環(huán)緩沖區(qū)法實(shí)實(shí)現(xiàn)z-196N=6的循環(huán)環(huán)緩沖區(qū)存儲儲器圖973.FIR濾波器的DSP實(shí)現(xiàn)方法法FIR濾波器器的輸出表達(dá)達(dá)式寫為y(n)=b0x(n)+b1x(n-1)+……+bn-1x(n-N+1)其結(jié)構(gòu)圖FIR濾波算算法實(shí)際上是是一種乘累加加運(yùn)算。它不不斷地從輸入入端讀入樣本本值x[n],經(jīng)延時(z-1)后做乘法累累加,輸出濾濾波結(jié)果y[n]。98例:編寫N=5的y(n)計(jì)算程序序。y(n)=a0*x(n)+a1*x(n-1)+a2*x(n-2)+a3*x(n-3)+a4*x(n-4),先將系數(shù)a0~a4存放在數(shù)據(jù)存存儲器中,然然后設(shè)置線性性緩沖區(qū),用用以存放輸入入和輸出數(shù)據(jù)據(jù)。(1)用線性性緩沖區(qū)和直直接尋址方法法實(shí)現(xiàn)FIR線性緩沖區(qū)安安排:99.title“FIR1.ASM”;定定義源程序名名.mmregs;;定定義存儲器映映象寄存器.defstart;;定定義語句標(biāo)號號start.bssy,1;;為為結(jié)果y預(yù)留留1個單元的的空間XN.usect“XN””,1;;在在自定義的未未初始化段““XN”XNM1.usect“XN””,1;;中中保留5個單單元的空間XNM2.usect“XN””,1XNM3.usect“XN””,1XNM4.usect“XN””,1A0.usect“A0””,1;;在在自定義的未未初始化段““A0”A1.usect“A0””,1;;中中保留5個單單元的空間A2.usect“A0””,1A3.usect“A0””,1A4.usect“A0””,1PA0.set0;;定定義PA0為為輸出端口PA1.set1;;定定義PA1為為輸入端口100.datatable:.word1*32768/10;;假假定程序空間間有五個參數(shù)數(shù).word-3*32768/10.word5*32768/10.word-3*32768/10.word1*32768/10.textstart:SSBXFRCT;;設(shè)置進(jìn)行行小數(shù)相乘STM#A0,AR1;;將數(shù)據(jù)據(jù)空間用于放放參數(shù)的首地地址送AR1RPT#4;;重重復(fù)下條指令令5次傳送MVPDtable,*AR1+;傳送送程序空間的的系數(shù)到數(shù)據(jù)據(jù)空間LD#XN,DP;;設(shè)置數(shù)據(jù)存存儲器頁指針針的起始位置置PORTRPA1,@XN;;從數(shù)據(jù)據(jù)輸入端口I/O輸入最最新數(shù)據(jù)x(n)FIR1:LD@XNM4,T;;x(n-4)→T101MPY@A4,A;;a4*x(n-4)→ALTD@XNM3;;x(n-3)→T,x(n-3)→x(n-4)MAC@A3,A;;A+a3*x(n-3)→ALTD@XNM2;;x(n-2)→T,x(n-2)→x(n-3)MAC@A2,A;;A+a2*x(n-2)→ALTD@XNM1;;x(n-1)→T,x(n-1)→x(n-2)MAC@A1,A;;A+a1*x(n-1)→ALTD@XN;;x(n)→T,x(n)→x(n-1)MAC@A0,A;;A+a0*x(n)→→ASTHA,@y;;保存y(n)的高字節(jié)節(jié)PORTW@y,PA0;;輸出y(n)BDFIR1;;執(zhí)行完完下條指令后后循環(huán)(帶延延遲轉(zhuǎn)移)PORTRPA1,@XN;;輸入新的的x(n).end102vectors.objfir1.obj-ofir1.out-mfir1.map-estartMEMORY{PAGE0:EPROM:org=01OOOHlen=01000HVECS:org=03F80Hlen=00080HPAGE1:SPRAM:org=00060Hlen=00020HDARAM:org=00080Hlen=01380H}SECTIONS{.vectors:>VECSPAGE0.text:>EPROMPAGE0.data:>EPROMPAGE0.bss:>SPRAMPAGE1.XN:>DARAMalign(8){}PAGE1.A0:>DARAMalign(8){}PAGE1}103(2)用線性性緩沖區(qū)和間間接尋址方法法實(shí)現(xiàn)FIR例:編寫y(n)=a0*x(n)+a1*x(n-1)+a2*x(n-2)+a3*x(n-3)+a4*x(n-4),的計(jì)算程序,,其中N=5。將系數(shù)a0~a4存放在數(shù)據(jù)存存儲器中,并并設(shè)置線性緩緩沖區(qū)存放輸輸入數(shù)據(jù)。利利用AR1和和AR2分別別作為間接尋尋址線性緩沖沖區(qū)和系數(shù)區(qū)區(qū)的輔助寄存存器。104.title“FIR2.ASM”;;定義源程序序名.mmregs;;定義存儲器器映象寄存器器.defstart;;定義語句標(biāo)標(biāo)號start.bssy,1;;為結(jié)果y預(yù)預(yù)留1個單元元的空間x.usect““x”,5;在自自定義的未初初始化段“x”中保留5個單元的空空間a.usect““a”,5;在自自定義的未初初始化段“a”中保留5個單元的空空間PA0.set0;;定定義PA0為為輸出端口PA1.set1;;定定義PA1為為輸入端口.datatable:.word2*32768/10;假假定程序空間間有五個參數(shù)數(shù).word-3*32768/10.word4*32768/10.word-3*32768/10.word2*32768/10105.textstart:SSBXFRCT;;小數(shù)相乘STM#a,AR2;;將數(shù)數(shù)據(jù)空間用于于放系數(shù)的首首地址送AR2RPT#4;;重重復(fù)下條指令令5次傳送MVPDtable,*AR2+;;傳送程程序空間的系系數(shù)到數(shù)據(jù)空空間STM#x4,AR1;;AR1指向向x(n-4)STM#a4,AR2;;AR2指向向a4STM#4,AR0;;指針針復(fù)位值4→→AR0LD#x,DP;;設(shè)置數(shù)據(jù)據(jù)存儲器頁指指針的起始位位置PORTRPA1,@x;;從端端口PA1輸輸入最新值x(n)106FIR2:LD*AR1-,T;;x(n-4)→→TMPY*AR2-,A;;a4*x(n-4)→ALTD*AR1-;;x(n-3)→T,x(n-3)→x(n-4)MAC*AR2-,A;;A+a3*x(n-3)→ALTD*AR1-;;x(n-2)→T,x(n-2)→x(n-3)MAC*AR2-,A;;A+a2*x(n-2)→ALTD*AR1-;;x(n-1)→→T,x(n-1)→→x(n-2)MAC*AR2-,A;;A+a1*x(n-1)→ALTD*AR1;;x(n)→T,x(n)→x(n-1)MAC*AR2+0,A;;A+a0*x(n)→→A,AR2復(fù)原,指指向a4STHA,@y;;保保存運(yùn)算結(jié)果果的高位字到到y(tǒng)(n)PORTW@y(n),PA0;;將結(jié)果y(n)輸出到到端口PA0BDFIR2;;執(zhí)行完下下條指令后,,從FIR2開始循環(huán)PORTRPA1,*AR1+0;;輸入入新值x(n),AR1復(fù)原指向向x4.end107(3)用線性性緩沖區(qū)和帶帶移位雙操作作數(shù)尋址方法法實(shí)現(xiàn)FIR例:編寫y(n)=a0*x(n)+a1*x(n-1)+a2*x(n-2)+a3*x(n-3)+a4*x(n-4),的計(jì)算程序,,其中N=5。系數(shù)a0~a4存放在程序存存儲器中,輸輸入數(shù)據(jù)存放放在數(shù)據(jù)存儲儲器的線性緩緩沖區(qū)中。乘乘法累加利用用MACD指指令,該指令令完成數(shù)據(jù)存存儲器單元與與程序存儲器器單元相乘,,并累加、移移位的功能。。108.title“FIR3.ASM”;;定定義源程序名名.mmregs;;定義存儲儲器映象寄存存器.defstart;;定義義語句標(biāo)號start.bssy,1;;為為結(jié)果y預(yù)留留1個單元的的空間x.usect“x”,6;;在自定義義的未初始化化;段“x”中中保留6個單單元PA0.set0;;定義PA0為輸出出端口PA1.set1;;定義PA1為輸入入端口.data;;假定程序序空間有五個個參數(shù)COEF:.word1*32768/10;;a4.word-4*32768/10;;a3.word3*32768/10;;a2.word-4*32768/10;;a1.word1*32768/10;;a0109.textstart:SSBXFRCT;;設(shè)設(shè)置小小數(shù)乘乘法STM#x+5,AR1;;AR1指向向x(n-4)STM#4,AR0;;設(shè)設(shè)置AR1復(fù)位位值LD#x+1,DP;;設(shè)置置數(shù)據(jù)據(jù)存儲儲器頁頁指針針的起起始位位置PORTRPA1,@x+1;;輸入入最新新值x(n)FIR3::RPTZA,#4;;累累加器器A清清0,設(shè)設(shè)置重重復(fù)下下條指指令5次MACD*AR1-,COEF,A;;x(n-4)→T,A=x(n-4)*a4+A;(PAR)+1→→PAR,x(n-4)→→x(n-3)STHA,*AR1;;暫存存結(jié)果果到y(tǒng)(n)PORTW*AR1+,PA0;;輸輸出y(n)到到PA0,,AR1指指向x(n)BDFIR3;;執(zhí)行行下條條指令令后循循環(huán)PORTRPA1,*AR1+0;;輸輸入新新數(shù)據(jù)據(jù)到x(n),AR1指向向x(n-4)110【例】】用循環(huán)環(huán)緩沖沖區(qū)和和雙操操作數(shù)數(shù)尋址址方法法編寫寫實(shí)現(xiàn)現(xiàn)FIR濾濾波的的程序序。1)FIR濾波波器設(shè)設(shè)計(jì)設(shè)計(jì)一一個FIR低通通濾波波器,,通帶帶邊界界頻率率為1500Hz,,通帶帶波紋紋小于于1dB;;阻帶帶邊界界頻率率為2000Hz,,阻帶帶衰減減大于于40dB;采采樣頻頻率為為8000Hz。試試用MATLAB窗窗函數(shù)數(shù)進(jìn)行行FIR濾濾波器器的設(shè)設(shè)計(jì)b=fir1(17,1500/8000*2)-設(shè)計(jì)計(jì)濾波波器參參數(shù)h=round(b*2^15)-浮點(diǎn)點(diǎn)數(shù)轉(zhuǎn)轉(zhuǎn)換為為定點(diǎn)點(diǎn)數(shù)Q15格式式(4)用循循環(huán)緩緩沖區(qū)區(qū)和雙雙操作作數(shù)尋尋址方方法實(shí)實(shí)現(xiàn)FIR1112)產(chǎn)產(chǎn)生濾濾波器器輸入入信號號的文文件按照通通常的的程序序調(diào)試試方法法,先先用Simulator逐步步調(diào)試試各子子程序序模塊塊,再再用硬硬件仿仿真器器在實(shí)實(shí)際系系統(tǒng)中中與硬硬件儀儀器聯(lián)聯(lián)調(diào)。。使用用CCS的的Simulator進(jìn)進(jìn)行濾濾波器器特性性測試試時,,需要要輸入入時間間信號號x(n)。本例設(shè)計(jì)一一個采樣頻頻率Fs為為8000Hz,輸輸入信號頻頻率為1000Hz和2500Hz的的合成信號號,通過設(shè)設(shè)計(jì)的低通通濾波器將將2500Hz信號號濾掉,余余下1000Hz信信號。1123)編寫寫FIR數(shù)字濾濾波器的的匯編源源程序FIR數(shù)數(shù)字濾波波器匯編編程序fir.asm如下::******一一個FIR濾波波器源程程序fir.asm******.mmregs.globalstart.defstart,_c_int00INDEX.set1KS.set256;輸入入樣本數(shù)數(shù)據(jù)個數(shù)數(shù)N.set17;FIR濾濾波器階階數(shù)COEF_FIR.sect"COEF_FIR";FIR濾波波器系數(shù)數(shù)113.word0,158,264,-290,-1406,-951,3187,9287,12272.word9287,3187,-951,-1406,-290,264,158,0.dataINPUT.copy“firin.inc”;輸入數(shù)數(shù)據(jù)在數(shù)數(shù)據(jù)區(qū)0x2400OUTPUT.space1024;輸出數(shù)數(shù)據(jù)在數(shù)數(shù)據(jù)區(qū)0x2500COEFTAB.usect“FIR_COEF”,N;;自定義段,,為未初始化化變量DATABUF.usect“FIR_BFR”,N;;保留存儲空空間BOS.usect“STACK”,0FhTOS.usect“STACK”,1114.text;;文本段段.asgAR0,INDEX_P;;將一個個字符串賦給給一個符號.asgAR4,DATA_P;;輸入數(shù)數(shù)據(jù)x(n)循環(huán)緩沖區(qū)區(qū)指針.asgAR5,COEF_P;;FIR系數(shù)表指針針.asgAR6,INBUF_P;;模擬輸輸入數(shù)據(jù)指針針.asgAR7,OUTBUF_P;;FIR濾波器輸出出數(shù)據(jù)指針_c_int00bstartnopnopstart:SSBXFRCT;;設(shè)置置小數(shù)乘法STM#COEFTAB,COEF_P;將將FIR系數(shù)數(shù)從程序存儲儲區(qū)RPT#N-1;;移移到數(shù)據(jù)存儲儲區(qū)MVPD#COEF_FIR,*COEF_P+STM#INDEX,INDEX_P115STM#DATABUF,DATA_P;;數(shù)據(jù)循循環(huán)緩沖區(qū)清清零RPTZA,#N-1STLA,*DATA_P+STM#(DATABUF+N-1),DATA_P;數(shù)據(jù)循循環(huán)緩沖區(qū)指指針;指向x[n-(N-1)]STM#COEFTAB,COEF_PFIR_TASK:STM#INPUT,INBUF_PSTM#OUTPUT,OUTBUF_PSTM#KS-1,BRC;;塊重復(fù)復(fù)計(jì)數(shù)器116RPTBDLOOP-1STM #N,BK;;FIR循環(huán)緩緩沖區(qū)大小LD*INBUF_P+,A;;裝裝載輸入數(shù)據(jù)據(jù)FIR_FILTER:;FIR濾波波運(yùn)算STLA,*DATA_P+%;;用用最新的樣本本值;替代最舊的的樣本值RPTZA,N-1MAC*DATA_P+0%,*COEF_P+0%,A;計(jì)計(jì)算STHA,*OUTBUF_P+…LOOP:EENDBEEND.end1174)編寫FIR濾波器鏈鏈接命令文件件對應(yīng)以上匯編編程序的鏈接接命令文件fir.cmd如下:fir.obj-mfir.map-o fir.outMEMORY{PAGE0:ROM1(RIX) :ORIGIN=0080H,LENGTH=100HPAGE1:INTRAM1(RW):ORIGIN=2400H,LENGTH=0200HINTRAM2(RW):ORIGIN=2600H,LENGTH=0100HINTRAM3(RW):ORIGIN=2700H,LENGTH=0100HB2B(RW) :ORIGIN=0070H,LENGTH=10H}118SECTIONS{.text:{}>ROM1 PAGE0.data:{}>INTRAM1PAGE1FIR_COEF:{}>INTRAM2PAGE1FIR_BFR:{}>INTRAM3PAGE1.stack:{}>B2BPAGE1}1195)CCS集集成開發(fā)環(huán)境境下上機(jī)操作作過程(1)在CCS上建立fir工程并并運(yùn)行fir.out程程序。(2)觀察輸輸入信號的波波形及頻譜。。(3)觀察輸輸出信號的波波形及頻譜。。120Graph屬屬性設(shè)置窗窗口121輸入信號的時時域波形輸入信號的頻頻譜圖122濾波器輸出出信號時域域波形濾波器輸出出信號頻譜譜圖1234.系數(shù)對對稱FIR濾波器設(shè)設(shè)計(jì)系數(shù)對稱的的FIR濾濾波器具有有線性相位位特性,這這種濾波器器是用得最最多的FIR濾波器器,特別是是對相位失失真要求很很高的場合合。如果FIR濾波器的的h(n)是實(shí)數(shù),,且滿足偶偶對稱h(n)=h(N-1-n)或或奇對稱h(n)=-h(N-1-n)的條件件,則濾波波器具有線線性相位特特性。一個對稱FIR濾波波器滿足h(n)=h(N-1-n)。124例如,N=8的FIR濾波器器,其輸出出方程為::Y(n)=h0x(n)+h1x(n-1)+h2x(n-2)+h3x(n-3)+h3x(n-4)+h2x(n-5)+h1x(n-6)+h0x(n-7)總共有8次次乘法和7次加法。。如果利用用對稱性,,可將其改改寫成:Y(n)=h0[x(n)+x(n-7)]+h1[x(n-1)+x(n-6)]+h2[x(n-2)+x(n-5)]+h3[x(n-3)+x(n-4)]變成4次乘乘法和7次次加法,乘乘法運(yùn)算的的次數(shù)少了了一半。這這是對稱FIR的一一個優(yōu)點(diǎn)。。125對稱FIR濾波器的的實(shí)現(xiàn)可按按如下步驟驟進(jìn)行:(1)將數(shù)數(shù)據(jù)存儲器器分為新舊舊兩個循環(huán)環(huán)緩沖區(qū),,每個循環(huán)緩緩沖區(qū)的長長度為N/2,New循環(huán)環(huán)緩沖區(qū)中中存放N/2=4個個新數(shù)據(jù);;Old循循環(huán)緩沖區(qū)區(qū)中存放N/2=4個老數(shù)據(jù)據(jù)。126(2)設(shè)置置循環(huán)緩沖沖區(qū)指針,,以AR2指向New循環(huán)緩緩沖區(qū)中最最新數(shù)據(jù);;以AR3指向Old循環(huán)緩緩沖區(qū)中最最老數(shù)據(jù)。。(3)在程程序存儲器器中設(shè)置系系數(shù)表。(4)(AR2)+(AR3)→AH(累加器器A的高位位),AR2-1→→AR2,,AR3-1→AR3。(5)將累累加器B清清0,重復(fù)復(fù)執(zhí)行4次次(i=0,1,2,3)下下面的運(yùn)算算:(AH)*系數(shù)hi+(B)→→B,系數(shù)數(shù)指針(PAR)加加1,(AR2)+(AR3)→AH,AR2和AR3減1。。127(6)保存存和輸出結(jié)結(jié)果(結(jié)果果在BH中中)。(7)修正正數(shù)據(jù)指針針,讓AR2和AR3分別指指向New循環(huán)緩沖沖區(qū)最新的的數(shù)據(jù)和Old循環(huán)環(huán)緩沖區(qū)中中最老的數(shù)數(shù)據(jù)。(8)用New循環(huán)環(huán)緩沖區(qū)中中最老的數(shù)數(shù)據(jù)替代Old循環(huán)環(huán)緩沖區(qū)中中最老的數(shù)數(shù)據(jù)。Old循環(huán)緩緩沖區(qū)指針針減1。(9)輸輸入入一一個個新新數(shù)數(shù)據(jù)據(jù)替替代代New循循環(huán)環(huán)緩緩沖沖區(qū)區(qū)中中最最老老的的數(shù)數(shù)據(jù)據(jù)。。重復(fù)復(fù)執(zhí)執(zhí)行行(4)~~(9)步步。。128C54x的的有有限限沖沖激激響響應(yīng)應(yīng)濾濾波波器器指指令令FIRS為為::FIRSXmem,Ymem,Pmad該指指令令執(zhí)執(zhí)行行Pmad→→PAR(程程序序存存儲儲器器地地址址寄寄存存器器)當(dāng)(RC)!=0(B)+(A(32~~16))××(由由PAR尋尋址址Pmem)→→B((Xmem)+(Ymem))<<16→→A(PAR)+1→→PAR(RC)-1→→RCFIRS指指令令在在同同一一個個機(jī)機(jī)器器周周期期內(nèi)內(nèi),,通通過過C和和D總總線線讀讀2次次數(shù)數(shù)據(jù)據(jù)存存儲儲器器,,同同時時通通過過P總總線線讀讀一一個個系系數(shù)數(shù)。。129例設(shè)計(jì)計(jì)對對稱稱FIR濾濾波波器器(N=8)。。.title“FIR5.ASM”;給給匯編程序取取名.mmregs;;定定義存儲器映映象寄存器.defstart;;定定義標(biāo)號start的起起始位置.bssy,1;;為為未初始化變變量y保留空空間x_new.usect“DATA1””,4;;自定義4個個單元的未初初始化段DTAT1x_old.usect“DATA2””,4;;自定義4個個單元的未初初始化段DATA2Size.set4;;定義符號size=4PA0.set0;;設(shè)置數(shù)據(jù)輸輸出端口I/O,PA0=0PA1.set1;;設(shè)置數(shù)據(jù)輸輸入端口I/O,PA1=1.dataCOEF.word1*32768/10,2*32768/10;;系數(shù)對對稱,只需.word3*32768/10,4*32768/10;;給出N/2=4個系系數(shù)130.textstart:LD#y,DP;;設(shè)設(shè)置數(shù)據(jù)存儲儲器頁指針的的起始位置SSBXFRCT;;小小數(shù)乘法STM#x_new,AR2;;AR2指向向新緩沖區(qū)第第1個單元STM#x_old+(size-1),AR3;;AR3指指向老緩沖區(qū)區(qū)最后1個單單元STM#size,BK;;設(shè)置循環(huán)緩緩沖區(qū)長度BK=sizeSTM#-1,AR0;;循環(huán)控制增增量AR0=-1PORTRPA1,#x_new;;從I/O輸入端端口PA1;輸入數(shù)據(jù)到到x(n)131FIR5:ADD*AR2+0%,*AR3+0%,A;;AH=x(n)+x(n-7);(第一次)RPTZB,#(size-1);;RC=#size-1+1,B=0FIRS*AR2+0%,*AR3+0%,COEF;;B+=AH*h0,;AH=x(n-1)+x(n-6)…STHB,@y;;保存結(jié)結(jié)果到y(tǒng)PORTW@y,PA0;;輸輸出結(jié)果到PA0MAR*+AR2(2)%;;修正正AR2,指指向新緩;沖區(qū)最老老的數(shù)據(jù)MAR*AR3+%;;修正AR3,指向老老緩;沖區(qū)最老的的數(shù)據(jù)MVDD*AR2,*AR3+0%;新新緩沖沖區(qū)向老緩沖沖區(qū)傳送一個個數(shù);用新新緩沖區(qū)最老老的數(shù)據(jù)覆蓋蓋舊緩沖區(qū);最老的數(shù)數(shù)據(jù)BDFIR5;;執(zhí)行完下條條指令后轉(zhuǎn)移移FIR5并并循環(huán)PORTRPA1,*AR2;;輸入新數(shù)數(shù)據(jù)至新緩沖沖區(qū).end1325、IIR濾波器器的DSP實(shí)現(xiàn)1.IIR濾濾波器的基本本概念N階無限沖激激響應(yīng)(IIR)濾波器器的脈沖傳遞遞函數(shù)表達(dá)式式為:其差分方程表表達(dá)式可寫為為:133Y(n)由兩兩部分構(gòu)成::第一部分是是一個對對x(n)的的M節(jié)延時鏈鏈結(jié)構(gòu),每節(jié)節(jié)延時抽頭后后加權(quán)相加,,是一個橫向向結(jié)構(gòu)網(wǎng)絡(luò);;第二部分也也是一個個N節(jié)延時鏈鏈的橫向結(jié)構(gòu)構(gòu)網(wǎng)絡(luò),不過過它是對y(n)的延時時,因此是個個反饋網(wǎng)絡(luò)。。IIR濾波器器的脈沖傳遞遞在Z平面上上有極點(diǎn)存在在,其單位沖沖激響應(yīng)是無無限長序列。。134IIR濾波器器與FIR濾濾波器的一個個重要區(qū)別是是,IIR可可以用較少階階數(shù)獲得很高高的選擇特性性,所用存儲儲單元少,運(yùn)運(yùn)算次數(shù)少,,具有經(jīng)濟(jì)、、高效的特點(diǎn)點(diǎn)。但是,在在有限精度的的運(yùn)算中,可可能出現(xiàn)不穩(wěn)穩(wěn)定現(xiàn)象。而而且,選擇性性越好,相位位的非線性越越嚴(yán)重,而FIR濾波器器可以得到嚴(yán)嚴(yán)格的線性相相位。因此,在相位位要求不很敏敏感的場合,,如語言通信信等,選用IIR濾波器器較為合適;;而對于圖像像信號處理、、數(shù)據(jù)傳輸?shù)鹊纫圆ㄐ螖y帶帶信息的系統(tǒng)統(tǒng),對線性相相位要求較高高,在條件許許可的情況下下,采用系數(shù)數(shù)對稱FIR濾波器較好好。135直接形式的二二階IIR數(shù)數(shù)字濾波器對于直接形式式的二階IIR數(shù)字濾波波器,其結(jié)構(gòu)構(gòu)如圖所示::2.二階IIR濾波器的的實(shí)現(xiàn)方法136存放輸入、輸輸出變量和濾濾波器系系數(shù)的緩沖沖區(qū)編程時,將變變量和系數(shù)都都存放在DARAM中,,并采用循環(huán)環(huán)緩沖區(qū)方式式尋址,共需需開辟4個循循環(huán)緩沖區(qū),,用來存放變變量和系數(shù)。。這4個循環(huán)環(huán)緩沖區(qū)的結(jié)結(jié)構(gòu)如圖所示示:137【例】設(shè)計(jì)一個三階階的切比雪夫夫Ⅰ型帶通數(shù)數(shù)字濾波器,,其采樣頻率率Fs=16kHz,其其通頻帶3.2kHz<f<4.8kHz,內(nèi)內(nèi)損耗耗不大大于1dB;f<2.4kHz和和f>5.6kHz為阻阻帶,,其衰衰減大大于20dB。。(1))IIR濾濾波器器的設(shè)設(shè)計(jì)利用MATLAB信信號處處理工工具箱箱設(shè)計(jì)計(jì)IIR濾濾波器器,程程序?yàn)闉椋簑p=[3.2,4.8];ws=[2.4,5.6];rp=1;rs=20[n,wn]=cheb1ord(wp/8,ws/8,rp,rs)[b,a]=cheby1(n,rp,wn)138設(shè)計(jì)結(jié)結(jié)果為為:N=3wn=0.40000.6000b0=0.0114747a0=1.000000b1=0a1=0b2=-0.034424a2=2.13779b3=0a3=0b4=0.034424a4=1.76935b5=0a5=0b6=-0.0114747a6=0.539758139(2))產(chǎn)生生濾波波器輸輸入信信號的的文件件使用CCS的Simulator進(jìn)行濾濾波器器特性性的測測試時時,需需要輸輸入時時間信信號x(n)。。#include<stdio.h>#include<math.h>voidmain(){inti;doublef[256];FILE*fp;if((fp=fopen("iirin.inc","wt"))==NULL){printf("can'topenfile!\n");return;}140fprintf(fp,"INPUT:.sect%cINPUT%c\n",'"','"');for(i=0;i<=255;i++){f[i]=sin(2*3.14159*i*4000/16000)+sin(2*3.14159*i*6500/16000);fprintf(fp,".word%1d\n",(long)(f[i]*32768/2));}fclose(fp);}141該程序?qū)a(chǎn)產(chǎn)生名為iirin.inc的輸入信信號程序,,內(nèi)容如下下:INPUT:.sect"INPUT".word0.word25486.word-15136.word-314.word-11585.word19580.word6270.word-30006.word16383……然后,在DSP匯編編語言程序序中通過.copy匯編命令令將生成的的數(shù)據(jù)文件件iirin.inc復(fù)制到到匯編程序序中,作為為IIR濾濾波器的輸輸入數(shù)據(jù)。。142(3)直接接型IIR數(shù)字濾波波器匯編源源程序的編編寫直接型IIR數(shù)字濾濾波器匯編編程序diir.asm如下下:********直直接型IIR數(shù)字濾濾波器通用用程序**********.title"diir.asm".mmregs.globalstart.defstart,_c_int00N.set16;;N=16.copy "iirin.inc";輸入信信號x(n)數(shù)據(jù)table;IIR濾濾波器系數(shù)數(shù).word63,0,-188,,0,188,0,,-63;;b系系數(shù).word0,,11675,0,,9663,0,2948;;a系數(shù).data143BN.usect"BN",N+1AN.usect"AN",N+1INBUF.usect"INBUF",256;輸入緩緩沖區(qū)在在數(shù)據(jù)區(qū)區(qū)0x2400OUTPUT.usect"OUTPUT",256;輸出緩緩沖區(qū)在在數(shù)據(jù)區(qū)區(qū)0x2600.text.asg AR0,INDEX_P.asg AR2,XN_P.asg AR3,ACOFF_P.asg AR4,YN_P.asg AR5,BCOFF_P_c_int00bstartnopnopstart:SSBXFRCT144SSBXOVMSSBXSXMSTM#BN+N,AR1RPT#NMVPD #table,*AR1-;;;將將bi由由程序區(qū)區(qū)存放到到數(shù)據(jù)區(qū)區(qū)STM#AN+N-1,AR1RPT#N-1MVPD #table+N+1,*AR1-;;將ai由程序區(qū)區(qū)存放到到數(shù)據(jù)區(qū)區(qū)STM#OUTPUT,AR1RPTZ A,#255STLA,*AR1+;;輸出出數(shù)據(jù)緩緩沖區(qū)清清零STM#INBUF,AR1RPT#255MVPD #INPUT,*AR1+;;將將輸入數(shù)數(shù)據(jù)由程程序區(qū)145STM#OUTPUT,YN_PSTM#INBUF,XN_PSTM#N-1,INDEX_PSTM#255,BRCRPTBLOOP-1IIR:SUBA,ASTM#BN,BCOFF_PSTM#AN,ACOFF_PRPT#N-1;;計(jì)算算前向通通道MAC*XN_P+,*BCOFF_P+,AMAC*XN_P,*BCOFF_P,A146MAR*XN_P-0;;將AR2指針針指向x(n-N)RPT#N-1;;計(jì)算算反饋通通道MAC*YN_P+,*ACOFF_P+,ASTHA,*YN_P-0;;保保存y(n)LOOP:EENDBEEND.end147(4)IIR濾濾波器鏈鏈接命令令文件的的編寫對應(yīng)以上上匯編程程序的鏈鏈接命令令文件diir.cmd如下下:diir.obj-odiir.out-mdiir.mapMEMORY{PAGE0:ROM:ORIGIN=0080H,LENGTH=1000HPAGE1:SPRAM:ORIGIN=0060H,LENGTH=0020HDARAM:ORIGIN=0080H,LENGTH=1380HRAM1:ORIGIN=2400H,LENGTH=0200HRAM2:ORIGIN=2600H,LENGTH=0200H}148SECTIONS{.text:>ROMPAGE0.data:>DARAMPAGE1BN:>DARAMPAGE1AN:>DARAMPAGE1INBUF:>RAM1PAGE1OUTPUT:>RAM2PAGE1}1493.高階階IIR濾波器器的實(shí)現(xiàn)現(xiàn)一個高階階IIR濾波器器可以分分解成若若干個二二階基本本節(jié)相級級聯(lián)。由由于調(diào)整整每個二二階基本本節(jié)的系系數(shù),只只涉及到到這個二二階節(jié)的的一對極極點(diǎn)和零零點(diǎn),不不影響其其他零、、極點(diǎn),,因此便便于調(diào)整整系統(tǒng)的的性能。。此外,由由于字長長有限,,每個二二階基本本節(jié)運(yùn)算算后都會會帶來一一定的誤誤差,合合理安排排各二階階基本節(jié)節(jié)的前后后次序,,將使系系統(tǒng)的精精度得到到優(yōu)化。。150對高階IIR濾波器器的幾點(diǎn)特殊殊處理當(dāng)出現(xiàn)一一個或一一個以上上系數(shù)≥≥1。此此時,既既可以用用最大的的系數(shù)來來定標(biāo),,即用最最大的系系數(shù)去除除所有的的系數(shù),,也可以以將此≥≥1的系系數(shù)分解解成兩個個<1的的系數(shù)進(jìn)進(jìn)行運(yùn)算算和相加加,例如如B0=1.2,則::X(n)*B0=x(n)*(B0/2)+x(n)*(B0/2)=0.6*x(n)+0.6*x(n)這樣,將將使所有有的系數(shù)數(shù)保持精精度,而而僅僅多多開銷一一個機(jī)器器周期。。(1)系系數(shù)≥11時的定定標(biāo)方法法151(2)對對輸入數(shù)數(shù)據(jù)定標(biāo)標(biāo)一般地,,從外設(shè)設(shè)口輸入入一個數(shù)數(shù)據(jù)加載載到累加加器A,,可用以以下指令令:PORTR0001h,@XinLD@Xin,16,A如果運(yùn)算算過程中中可能出出現(xiàn)≥11的輸出出值,可可在輸入入數(shù)據(jù)時時將其縮縮小若干干倍,如如:PORTR0001h,@XinLD@Xin,16-3,A將輸入數(shù)數(shù)據(jù)除以以8,將將使輸出出值小于于1。上上面用多多種不同同的方法法進(jìn)行了了濾波器器的設(shè)計(jì)計(jì),在實(shí)實(shí)現(xiàn)濾波波器功能能的前提提下,程程序的繁繁簡和對對存儲器器的使用用情況是是不同的的,應(yīng)用用中應(yīng)根根據(jù)具體體情況進(jìn)進(jìn)行選擇擇。152三、工程程問題的的DSP實(shí)現(xiàn)例:DTMF的的編解碼碼用DSP實(shí)現(xiàn)雙雙音多頻頻(DTMF))的撥號號產(chǎn)生和和解碼。。DTMF(Dual-ToneMultipleFrequency)153實(shí)現(xiàn)步驟對象分析算法設(shè)計(jì)DSP選擇系統(tǒng)設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)系統(tǒng)調(diào)試154對象分析對所要開發(fā)的的系統(tǒng)的功能能、性能要有有深入的了解解和分析,尤尤其對技術(shù)指指標(biāo),要作透透徹的理解和和把握。155DTMF用一一對頻率(行行頻/列頻))來表示一個個符號(電話話鍵盤上的0—9,A——D,*,#,共16個個符號)一次按鍵的時時間是100ms,其中中,頻率對存存在的時間是是45ms,,不允許超過過55ms,,其余的時間間是靜音。156157CCITT關(guān)關(guān)于DTMF的指標(biāo)Lowband:697、770、852、941(Hz)RBW<3.5%Highband:1209、1336、1477、1633(Hz)RBW<3.5%TWIST:: STD>4dBREV>8dBDYNRANGE::>25dBGUARDTIME::MINTONETIME45msSNR:NOISE-24dBV158算法設(shè)計(jì)算法設(shè)計(jì)是非非常關(guān)鍵的步步驟,因?yàn)樗闼惴Q定運(yùn)算算量和存儲器器的大小,從從而決定DSP的選擇,,進(jìn)而決定系系統(tǒng)的設(shè)計(jì),,包括硬件和和軟件的設(shè)計(jì)計(jì)。159DTMF撥號號的產(chǎn)生基于DSP的的DTMF的的音頻信號發(fā)發(fā)生器,使用用兩個二階的的數(shù)字正弦波波振蕩器,一一個產(chǎn)生行頻頻,一個產(chǎn)生生列頻。160161DTMF發(fā)生生器的系數(shù)和和初始條件162DTMF發(fā)生生器的信號流流程163音頻檢測Goertzel算法是是DTMF解解碼器的基礎(chǔ)礎(chǔ),實(shí)際上是是一個兩極點(diǎn)點(diǎn)的IIR濾濾波器。DFT或FFT需要在處處理之前準(zhǔn)備備好一個數(shù)據(jù)據(jù)塊,而Goertzel算法是一一個遞歸的結(jié)結(jié)構(gòu),就每個個輸入的樣本本進(jìn)行計(jì)算。。164Goertzel算法的的特點(diǎn)Goertzel算法的的IIR濾波波器結(jié)構(gòu)涉及及兩個復(fù)共軛軛極點(diǎn),但對對于實(shí)際的DTMF音頻頻檢測,只要要有幅度信息息就夠了(實(shí)實(shí)際上使用幅幅度平方),,從而簡化為為只需要一個個實(shí)系數(shù)參與與計(jì)算。Goertzel算法要要比FFT快快得多,因?yàn)闉橹恍枰峁┕?個行/列列頻和它們的的二次諧波的的信息(二次次諧波的信息息用于將DTMF與話音音或音樂區(qū)別別開來)。165Goertzel算法166行頻頻/列列頻頻及及相相應(yīng)應(yīng)的的系系數(shù)數(shù)167有效效性性檢檢查查信號號強(qiáng)強(qiáng)度度DTMF行行頻頻、、列列頻頻信信號號之之和和的的強(qiáng)強(qiáng)度度是是否否達(dá)達(dá)到到一一定定的的門門限限值值168扭曲曲度度標(biāo)準(zhǔn)準(zhǔn)扭扭曲曲::行頻頻峰峰值值>列列頻頻峰峰值值4dB反向扭扭曲::列頻峰峰值>行行頻頻峰值值8dB169二次諧諧波強(qiáng)強(qiáng)度以便將將DTMF信號號與其其他語語音信信號、、音樂樂信號號等區(qū)區(qū)別開開來。170數(shù)字信信息的的穩(wěn)定定性如果一一個數(shù)數(shù)字成成功地地檢測測到兩兩次,,認(rèn)為為該數(shù)數(shù)字是是穩(wěn)定定的171數(shù)字信信息的的有效效性檢測到到的數(shù)數(shù)字前前面必必須是是靜音音符時時,該該數(shù)字字才是是有效效的,,以便便將各各次擊擊鍵區(qū)區(qū)別開開來172173編碼器器對速速度和和存儲儲器的的要求求174175DSP芯片片選擇擇算法對對DSP芯芯片計(jì)計(jì)算速速度的的要求求系統(tǒng)的管管理(如如任務(wù)管管理、進(jìn)進(jìn)程管理理、存儲儲器管理理、I/O管理理等)對對DSP的要求求片內(nèi)存儲儲器和片片外存儲儲器的要要求(包包括容量量的要求求和速度度的要求求)176對外設(shè)((如串口口、并口口、定時時器、總總線寬度度、等待待狀態(tài)等等)的要要求DSP封封裝對印印制板的的設(shè)計(jì)影影響甚大大開發(fā)環(huán)境境技術(shù)支持持性能價格格比177DSP芯芯片的速速度178DSP的的片內(nèi)存存儲器179DSP的外設(shè)180BGA((BALLGRIDARRAY)181PLCC(PLASTICJ-LEADEDCHIPCARRIER)182PQFP(PLASTICQUADFLATPACK))183PDLP(PLASTICDUAL-IN-LINEPACKAGE))184LCCC(LEADLESSCERAMICCHIPCARRIER)185系統(tǒng)設(shè)計(jì)計(jì)硬件系統(tǒng)統(tǒng)設(shè)計(jì)軟件系統(tǒng)統(tǒng)設(shè)計(jì)工作軟件件測試軟件件功能框圖圖(指標(biāo)標(biāo)分配))電原理圖圖印制板((數(shù)字與與模擬電電路,接接地,電電源,多多層板))1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論