在MSP430F1611上 實現(xiàn)周期圖譜分析及校正
設浮點乘法運算的表達式為:float x,y,z;z=xy。假設經(jīng)過統(tǒng)計(這里“統(tǒng)計”的意思是所有計算中數(shù)據(jù)范圍都在定標范圍內)后x的定標值為Qx,y的定標值為Qy,乘積z的定標值為Qz,則z=xy;zq×2-Qz=xq×yq×2-(Qx+Qy);zq=(xqyq)2Qz-(Qx+Qy)。所以,定點表示的乘法為:
1.3 FFT計算過程中的數(shù)據(jù)定標
為了在以MSP43F1611為處理器的儀表系統(tǒng)上進行基于FFT的功率譜估計,必須先由MSP430F1611的ADC進行采樣,而ADC采樣得到的數(shù)據(jù)需要經(jīng)過定標后才能進行定點計算。定標過程為:ADC的采樣電壓范圍為0~2.5 V,因此,采樣過程實際上就是將信號電壓除以2.5進行歸一化,使得采樣得到的數(shù)據(jù)范圍為O~1 V,此時數(shù)據(jù)就可用Q15表示,即將ADC的12位采樣結果寄存器中的數(shù)據(jù)右移4位保存起來,維持12位精度,轉換為Q15定點數(shù)表示。由于FFT運算過程中,蝶形輸出相對蝶形輸入數(shù)據(jù)被放大了3倍,因此蝶形輸出數(shù)據(jù)范圍為一3~+3 V。此時數(shù)據(jù)如果仍然使用Q15表示,就會發(fā)生溢出,故改用Q13表示數(shù)據(jù),即將12位ADC數(shù)據(jù)右移1位。實際上經(jīng)過處理后,ADC數(shù)據(jù)精度沒有變化,但使用Q13表示數(shù)據(jù)比用Q12表示數(shù)據(jù),其蝶形輸出的數(shù)據(jù)精度高。這是由于定點計算時需要對蝶形輸出右移以防止溢出,而使用Q13表示數(shù)據(jù)比使用Q12表示數(shù)據(jù)少右移了1位,因此多了1位有效數(shù)據(jù)。FFT運算過程中使用Q13表示數(shù)據(jù),就使得加法乘法運算都可以直接使用定點指令實現(xiàn),減少了很多判斷處理,提高了運算速度。使用Q13表示數(shù)據(jù),即最高位(左邊的第1位)是符號位,剩下的15位表示數(shù)據(jù)的大小。表示數(shù)據(jù)大小的15位中,高2位(左邊的第2位和第3位)用來表示數(shù)據(jù)中的整數(shù)部分,在計算中作為保護位;最低的13位(右邊的13位)表示數(shù)據(jù)中的小數(shù)部分,如果經(jīng)過某次蝶形單元運算后,最大值正好被放大3倍,此時數(shù)據(jù)就由13位擴大到15位,保證數(shù)據(jù)不會增大到16位,沖走符號位,發(fā)生溢出。運算完成后將FFT計算過程中的這一級所有結果都右移2位,就能夠使得這一級計算結果的最大值仍然可用13位表示,同時也可將這一級所有蝶形運算輸出的數(shù)據(jù)同時縮小,保證下級計算。表示數(shù)值大小的15位數(shù)據(jù)的數(shù)據(jù)格式如圖2所示。
1.4 旋轉因子數(shù)據(jù)定標
FFT運算過程使用定點計算,且使用有符號乘法,必須始終保留1位作為符號位;而旋轉因子范圍為-1~1,因此可定標為Q14,轉換為16位定點數(shù)。其轉換過程為:根據(jù)參與FFT運算的數(shù)據(jù)點數(shù)計算出旋轉因子的正余弦表,然后將正余弦表乘以16384,即左移14位,最后四舍五人取整。如果使用Q15表示數(shù)據(jù),即需要左移15位,那么正余弦表中最大值1,經(jīng)過上述處理后成為-1,發(fā)生溢出。
2 防止溢出,保證精度
FFT中的蝶形運算如圖3所示。設蝶形輸入為:X1(k),實部為X1(k)r,虛部為X1(k)i;X2(k),實部為X2(k)r,虛部為X2(k)i。設蝶形輸出為:X(k),實部為X(k),,虛部為X(k)i;X(k+N/2),實部為X(k+N/2)r,虛部為X(k+N/2)i。則有:
熱式質量流量計相關文章:熱式質量流量計原理 流量計相關文章:流量計原理
評論