摘 要: 介紹了快速傅里葉變換(FFT)算法的原理,,利用DSP實(shí)現(xiàn)了FFT算法,利用TMS320F2812 DSP內(nèi)部的ADC模塊與事件管理器的定時(shí)器實(shí)現(xiàn)信號(hào)的實(shí)時(shí)采集,。分析了DSP中數(shù)據(jù)采集ADC的功能,。基于CCS調(diào)試軟件顯示了輸入輸出信號(hào)波形,。在CCS環(huán)境下,,采用C語(yǔ)言編程,實(shí)現(xiàn)了FFT算法和離散余弦變換,。
關(guān)鍵詞: DSP,;快速傅里葉變換;A/D轉(zhuǎn)換,;離散余弦變換
傅里葉變換是一種將信號(hào)從時(shí)域變換到頻域的變換方式,,而快速傅里葉變換FFT(Fast Fourier Transform)是數(shù)字信號(hào)處理技術(shù)的基石。FFT和離散余弦變換DCT(Discrete Cosine Transform)都是數(shù)字信號(hào)處理技術(shù)中的基本算法,,也是數(shù)字信號(hào)處理的基本工具,。DSP芯片的出現(xiàn)使FFT和DCT的實(shí)現(xiàn)更為方便。本文利用TMS320F2812 DSP內(nèi)部的ADC模塊與事件管理器(EVA)構(gòu)建了數(shù)據(jù)采集與數(shù)據(jù)變換并行處理的信號(hào)處理系統(tǒng),,充分利用TMS320F2812強(qiáng)大的數(shù)據(jù)處理能力,,實(shí)現(xiàn)了FFT運(yùn)算,提高了運(yùn)算速度[1-2],。
1 FFT算法的實(shí)現(xiàn)
TI公司的TMS320F2812 DSP是目前控制領(lǐng)域性能較高的處理器,,它將各種高級(jí)數(shù)字控制功能集成于一塊芯片上,整合了Flash存儲(chǔ)器,、快速的A/D轉(zhuǎn)換器等外設(shè),,強(qiáng)大的數(shù)據(jù)處理和控制能力大幅度提高了應(yīng)用效率。
1.1 數(shù)據(jù)采集ADC功能
DSP系統(tǒng)的模擬輸入電壓范圍為0~3 V,。通過(guò)使用事件管理器的定時(shí)器1下溢中斷啟動(dòng)ADC,。系統(tǒng)設(shè)計(jì)時(shí)晶振為30 MHz,經(jīng)過(guò)鎖相環(huán)倍頻后CPU時(shí)鐘頻率SYSCLKOUT是150 MHz,,事件管理器采用高速外設(shè)時(shí)鐘HSPCLK,,經(jīng)過(guò)程序設(shè)計(jì)6分頻得到高速外設(shè)時(shí)鐘HSPCLK為25 MHz。
SysCtrlRegs.HISPCP.all=0x3,;//HSPCLK= SYSCLKOUT/6
將事件管理器中通用定時(shí)器1的周期寄存器值設(shè)置為0x07FF,,每經(jīng)過(guò)2 048(0x07FF+1)個(gè)通用定時(shí)器的時(shí)鐘周期啟動(dòng)一次ADC。事件管理器中的通用定時(shí)器1由于沒(méi)有對(duì)高速外設(shè)時(shí)鐘分頻,,因此通用定時(shí)器1的時(shí)鐘頻率為25 MHz,。
EvaRegs.T1PR=0x07FF;//設(shè)置通用定時(shí)器1周期寄存器
EvaRegs.GPTCONA.bit.T1TOADC=1,;
//通用定時(shí)器1啟動(dòng)ADC
EvaRegs.T1CON.all=0x1042,;
//通用定時(shí)器1連續(xù)增計(jì)數(shù)模式,,不分頻,,采用HSPCLK
為了實(shí)現(xiàn)數(shù)據(jù)采集,,設(shè)置ADC工作在級(jí)聯(lián)排序器模式,最大轉(zhuǎn)換通道數(shù)為1,,并且采集數(shù)據(jù)來(lái)自通道ADCINA4,,使能事件管理器EVA的觸發(fā)信號(hào)啟動(dòng)ADC排序器SEQ1,允許ADC產(chǎn)生中斷,。相關(guān)程序設(shè)計(jì)如下,。
AdcRegs.ADCTRL1.bit.SEQ_CASC=1;//級(jí)聯(lián)排序器模式
AdcRegs.ADCMAXCONV.all=0x0000,;
//設(shè)置1個(gè)轉(zhuǎn)換通道AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x4,;
//設(shè)置轉(zhuǎn)換通道ADCINA4
AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;
//使能EVA的觸發(fā)信號(hào)啟動(dòng)排序器SEQ1
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1,;
//使能SEQ1產(chǎn)生的中斷請(qǐng)求
當(dāng)事件管理器的通用定時(shí)器1產(chǎn)生下溢中斷時(shí),,啟動(dòng)ADC。在ADC轉(zhuǎn)換完成中斷服務(wù)程序中讀取12 bit A/D轉(zhuǎn)換結(jié)果,。程序設(shè)計(jì)如下:
interrupt void adc_isr(void)
{
px[ConversionCount]=AdcRegs.ADCRESULT0>>4,;
if(ConversionCount==128)
{ConversionCount=0;}
else ConversionCount++,;
AdcRegs.ADCTRL2.bit.RST_SEQ1=1,;
//復(fù)位排序器SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;
//清除排序器SEQ1中斷標(biāo)志位
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1,;
//寫1清零中斷應(yīng)答寄存器PIEACK相應(yīng)位,,
//以便能夠響應(yīng)該組隨后的中斷
return;
}
1.2 FFT算法原理與程序流程圖
FFT是DFT的快速運(yùn)算,。由于有些信號(hào)在時(shí)域很難看出特性,,使用FFT將其變換到頻域,就會(huì)很容易看出其特性,。DFT算法的基本公式為:
2 DCT的實(shí)現(xiàn)
2.1 DCT基本原理
DCT是一種與傅里葉變換緊密相關(guān)的數(shù)學(xué)運(yùn)算,。在傅里葉級(jí)數(shù)展開(kāi)式中,如果被展開(kāi)的函數(shù)是實(shí)偶函數(shù),,則其傅里葉級(jí)數(shù)中只包含余弦項(xiàng),,再將其離散化可導(dǎo)出余弦變換,因此稱之為離散余弦變換,。DCT被認(rèn)為是性能接近K-L變換的準(zhǔn)最佳變換,,是對(duì)語(yǔ)音和圖像信號(hào)進(jìn)行變換的最佳方法。DCT變換的快速算法有以下兩種方式:
?。?)由于FFT算法的普遍采用,,直接利用FFT實(shí)現(xiàn)DCT變換的快速算法相對(duì)容易,。但是這種方法也有不足之處,即計(jì)算過(guò)程會(huì)涉及復(fù)數(shù)的運(yùn)算,。由于DCT變換前后的數(shù)據(jù)都是實(shí)數(shù),,計(jì)算過(guò)程中引入了復(fù)數(shù),而一對(duì)復(fù)數(shù)的加法相當(dāng)于兩對(duì)實(shí)數(shù)的加法,,一對(duì)復(fù)數(shù)的乘法相當(dāng)于4對(duì)實(shí)數(shù)的乘法和兩對(duì)實(shí)數(shù)的加法,,顯然是增加了運(yùn)算量,也給硬件存儲(chǔ)提出了更高的要求,。
?。?)直接在實(shí)數(shù)域進(jìn)行DCT快速變換。顯然,,這種方法的計(jì)算量和硬件要求都要優(yōu)于前者,。鑒于此,本文采用第二種方法實(shí)現(xiàn)DCT變換的快速算法,。
給定序列x(n),,n=0,1,,…,,N-1,其離散余弦變換定義為:
圖5為正變換結(jié)果,,其中上方為輸入信號(hào),,下方為輸出信號(hào)。圖6為逆變換輸出結(jié)果,,此輸出波形與圖5的輸入波形一致,,由此可以驗(yàn)證程序的正確性。
本文說(shuō)明了數(shù)據(jù)采集ADC的功能和FFT算法的原理以及程序設(shè)計(jì)流程圖,,在CCS調(diào)試平臺(tái)下,,采用C語(yǔ)言編程實(shí)現(xiàn)了FFT算法,并且實(shí)時(shí)性好,。闡述了離散余弦變換DCT基本原理,,基于TMS320F2812 DSP實(shí)現(xiàn)了離散余弦變換。程序運(yùn)行結(jié)果表明,,DSP能夠快速高效地完成一系列數(shù)字信號(hào)處理算法[4],。
參考文獻(xiàn)
[1] 賈瑋,楊錄,,張艷花.基于TMS320VC5416的FFT算法的實(shí)現(xiàn)[J].山西電子技術(shù),,2009(2):11-13.
[2] 萬(wàn)浩平,馬進(jìn),王鋒.基于TMS320F2812的高精度數(shù)據(jù)采集及FFT實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),,2009,,22(4),54-55.
[3] 胡廣書.數(shù)字信號(hào)處理[M].北京:清華大學(xué)出版社,,2003.
[4] 伍小芹,,吳秋麗.FIR數(shù)字濾波器在DSP上的實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2007(1):85-87.