電源模塊為整個系統(tǒng)提供供電。系統(tǒng)還能響應(yīng)用戶按鍵事件,并進(jìn)行相應(yīng)的處理。串口模塊為系統(tǒng)的擴展預(yù)留。
3.2 音頻頻譜分析儀的系統(tǒng)軟件設(shè)計
系統(tǒng)上電后首先進(jìn)行系統(tǒng)初始化System_Init(),對看門狗、系統(tǒng)時鐘、定時器、I/O端口、ADC等各模塊進(jìn)行初始化。接下來ADC12對連續(xù)的模擬信號進(jìn)行采樣,得到離散化的數(shù)字信號,由處理器讀取該數(shù)字信號并進(jìn)行相應(yīng)的處理。采樣頻率過高,采樣點數(shù)過多,會占用大量寶貴的處理器內(nèi)存,降低數(shù)據(jù)處理速度;采樣頻率過低,又會使采樣數(shù)據(jù)失真而無法恢復(fù)原始連續(xù)信號。因此,必須根據(jù)信號的頻率范圍來設(shè)置采樣頻率,同時要滿足采樣定理的要求。
當(dāng)采樣頻率一定時,增加采樣點數(shù)可以提高頻率分辨率,但數(shù)據(jù)存儲空間和計算量也相應(yīng)增大。一般可根據(jù)實際需要進(jìn)行采樣點數(shù)的選取,通常設(shè)置為2的整數(shù)次冪,以便于進(jìn)行后續(xù)的FFT譜分析,本系統(tǒng)采樣點數(shù)為N=16.ADC12采樣流程圖如圖4所示。
采樣后的FFT數(shù)據(jù)處理是系統(tǒng)的又一個重點和難點,一方面,為了得到正序FFT,需要對原始自然序列進(jìn)行碼位倒序排列;另一方面,為了減少處理器的浮點運算時間,旋轉(zhuǎn)因子kN W 計算采用查表實現(xiàn)。圖5為FFT運算的倒序流程圖。
如果提前將余弦和正弦計算出來作為全局變量,計算kN W 就可以直接調(diào)用進(jìn)行加減計算,減少了大量的浮點運算時間,會以犧牲一點存儲器的代價獲得快速的系統(tǒng)響應(yīng)。表1是編制的N=16時的余弦和正弦表。
圖6表示的是FFT運算的流程圖,整個FFT程序包含在一個迭代的過程中,最后一層計算總是2-FFT蝶形運算,下面是蝶形運算和FFT計算的主程序段: