新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 在MSP430F1611上實(shí)現(xiàn)周期圖譜分析及校正

在MSP430F1611上實(shí)現(xiàn)周期圖譜分析及校正

作者: 時(shí)間:2012-05-09 來源:網(wǎng)絡(luò) 收藏
引 言
基于FFT的頻譜分析方法可以從含有噪聲的信號(hào)中提取有用的信息,在儀器儀表的數(shù)據(jù)處理中具有重要的應(yīng)用價(jià)值。為了保證頻譜分析的精度,往往進(jìn)行多點(diǎn)的FFT運(yùn)算,例如,1024點(diǎn)、2048點(diǎn)等,這樣運(yùn)算量大、所占內(nèi)存也大,只有采用DSP(數(shù)字信號(hào)處理器)才能實(shí)現(xiàn)實(shí)時(shí)的處理。目前,在工業(yè)現(xiàn)場普遍使用的兩線制、低功耗自動(dòng)化儀表,由于儀表本身消耗電流必須控制在4 mA之內(nèi),所以無法采用DSP等運(yùn)算能力強(qiáng)的芯片,只能采用低功耗單片機(jī);而低功耗單片機(jī)的運(yùn)算速度和內(nèi)存容量都很有限,所以,至今未見用其進(jìn)行多點(diǎn)數(shù)FFT運(yùn)算的報(bào)道。為了能夠用低功耗單片機(jī)實(shí)時(shí)做FFT運(yùn)算,以提高自動(dòng)化儀表信息處理的能力,我們用匯編語言編制FFT程序,在程序中用定點(diǎn)數(shù)運(yùn)算(以下簡稱定點(diǎn)FFT),采取措施防止數(shù)據(jù)溢出,保證計(jì)算精度,合理分配內(nèi)存。測試結(jié)果表明,我們編制的程序在MSP430F、1611單片機(jī)上,完成一次2048點(diǎn)的基于FFT的頻譜分析和校正只需要500 ms,精度也達(dá)到要求,可以用于以低功耗單片機(jī)為核心的儀表中,實(shí)時(shí)完成信號(hào)處理任務(wù)。

1 定點(diǎn)運(yùn)算
1.1 數(shù)據(jù)表示
在MSP430中使用C語言實(shí)現(xiàn)FFT運(yùn)算,其乘法和加法運(yùn)算都是默認(rèn)使用浮點(diǎn)實(shí)現(xiàn)的。于MSP430屬于定點(diǎn)單片機(jī),因此浮點(diǎn)運(yùn)算必須由大量的定點(diǎn)指令模擬,這將耗費(fèi)大量的時(shí)間。因此我們針對(duì)MSP430的特點(diǎn),使用匯編語言編制FFT程序,在程序中用定點(diǎn)數(shù)運(yùn)算,并將數(shù)據(jù)統(tǒng)一使用16位定點(diǎn)數(shù)表示。16位定點(diǎn)數(shù)中最高位(左邊的第1位)作為符號(hào)位,剩下的15位用于存放數(shù)值。數(shù)據(jù)格式如圖1所示.

1.2 數(shù)據(jù)定標(biāo)
定點(diǎn)單片機(jī)參與數(shù)值運(yùn)算的數(shù)都是16位的整型數(shù),但是運(yùn)算過程中的數(shù)不一定都是整數(shù)。那么,過程中如何處理小數(shù)呢?這其中的關(guān)鍵就是由程序員來確定一個(gè)數(shù)的小數(shù)點(diǎn)處于16位中的哪一位。這就是數(shù)的定標(biāo)。
通過設(shè)定小數(shù)點(diǎn)在16位數(shù)中的不同位置,就可以表示不同大小和不同精度的小數(shù)了。數(shù)的定標(biāo)有Q表示法和S表示法兩種。表1列出了一個(gè)16位數(shù)的16種Q表示、S表示及它們所能表示的十進(jìn)制數(shù)值范圍。
從表1中可以看出,同樣一個(gè)16位數(shù),若小數(shù)點(diǎn)設(shè)定的位置不同,它所表示的數(shù)也就不同。例如,十六進(jìn)制數(shù)2000H=8192,用Q0表示;十六進(jìn)制數(shù)2000H=O.25,用Q15表示;但對(duì)于定點(diǎn)運(yùn)算來說,處理方法是完全相同的。下面簡要介紹如何使用定點(diǎn)數(shù)乘法運(yùn)算模擬浮點(diǎn)數(shù)乘法。


上一頁 1 2 3 4 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉