閆法鋼(第七一五研究所,杭州,310023)
功率譜是描述隨機信號的一個主要特征量,在隨機信號的分析和處理中有著重要的理論意義和實際應(yīng)用[1]。為了得到盡可能接近于真實的功率譜,需要采集足夠多的信號樣本。但在實際工作中,處理器的數(shù)據(jù)空間有時制約了采集量,如何有效地利用有限的數(shù)據(jù)空間實現(xiàn)大容量數(shù)據(jù)的采集和處理成為一個有待解決的問題。
TMS320VC5416是TI公司推出的一款16位定點DSP,TI公司為用戶免費提供了優(yōu)化的信號處理函數(shù)庫 DSPLIB,其中包含 FFT、FIR等常用函數(shù)接口,非常適合對數(shù)字信號進(jìn)行實時處理。但其可訪問的數(shù)據(jù)空間僅為64 k,在某些應(yīng)用場合,需要連續(xù)采集大于 64 k的數(shù)據(jù)進(jìn)行信號處理時,TMS320VC5416的數(shù)據(jù)空間不能滿足使用要求。本文通過在 TMS320VC5416的數(shù)據(jù)空間內(nèi)構(gòu)建一塊乒乓結(jié)構(gòu)的數(shù)據(jù)空間,循環(huán)使用,實現(xiàn)了大容量數(shù)據(jù)的連續(xù)采集與功率譜估計。TMS320VC5416的數(shù)據(jù)空間如圖1所示。其中,低32 k空間固定映射在片內(nèi) RAM,高 32 k空間可以配置為映射在片內(nèi)RAM或片外RAM[2]。
圖1 TMS320VC5416數(shù)據(jù)空間示意圖
對于片內(nèi)存儲器的操作有如下優(yōu)勢:(1)高效率,不用插入等待周期;(2)高性能,數(shù)據(jù)流可以更快到達(dá)中心算術(shù)邏輯單元;(3)比外部存儲器更低的硬件開銷;(4)比外部存儲器更低的功耗。
乒乓緩存算法用于實現(xiàn)兩個buffer的數(shù)據(jù)交替存取。典型的乒乓操作方法如圖2所示。輸入數(shù)據(jù)流通過“輸入數(shù)據(jù)流選擇單元”將數(shù)據(jù)流等量分配到兩個數(shù)據(jù)緩沖區(qū)。在第一個緩沖周期,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”;在第二個緩沖周期,通過“輸入數(shù)據(jù)選擇單元”的切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊2”,同時將“數(shù)據(jù)緩沖模塊 1”緩沖的第一個周期數(shù)據(jù)通過“輸出數(shù)據(jù)選擇單元”的選擇,送到“數(shù)據(jù)流運算處理模塊”進(jìn)行運算處理;在第三個緩沖周期通過“輸入數(shù)據(jù)選擇單元”的再次切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”,同時將“數(shù)據(jù)緩沖模塊2”緩存的第2個周期的數(shù)據(jù)通過“輸出數(shù)據(jù)選擇單元”切換,送到“數(shù)據(jù)流運算處理模塊”進(jìn)行運算處理,如此循環(huán)。
圖2 乒乓緩存操作示意圖
Bartlett法是功率譜估計常用的方法之一,它是用改進(jìn)的平均周期圖法來求取隨機信號的功率譜密度估計。其思想是將長度為N的采樣隨機信號平均分成L段,每段長度為M,先用周期圖法計算每一段的功率譜,然后再將總的功率譜密度加以平均(周期圖法,即是把隨機序列x(n)的N個觀測數(shù)據(jù)視為一個能量有限的序列,直接計算x(n)的離散傅里葉變換(DFT),得X(f),然后再取其幅值的平方,并除以N,作為序列x(n)真實功率譜的估計)。
本文基于 TMS320VC5416平臺[4],對 A/D采集的信號采用Bartlett法進(jìn)行功率譜估計,設(shè)定A/D采樣頻率為35.714 kHz,采樣量128 k,要求譜分辨率不低于40 Hz。為了滿足最低分辨率的要求,本文采用1024點FFT,分辨率約為35 Hz。按照前面Bartlett法所述,將128 k數(shù)據(jù)等長度分成128段,每段長度1 k。分別對每段數(shù)據(jù)利用TI DSPLIB提供的cbrev、rfft庫函數(shù)實現(xiàn)1024點FFT[4],先用周期圖法計算每段的功率譜,然后再將總的功率譜密度加以平均,得到最終的功率譜估計。TMS320VC5416的數(shù)據(jù)空間大小為64 k。其中,存儲器映射寄存器占用了128 byte,系統(tǒng)堆棧需要約1 k byte,剩余的數(shù)據(jù)空間不足以存放128 k的數(shù)據(jù)量。因此,無法一次性采集所有數(shù)據(jù)后再進(jìn)行處理,只能采用采集與處理并行的方式進(jìn)行。在數(shù)據(jù)空間構(gòu)建一個乒乓數(shù)據(jù)結(jié)構(gòu),通過內(nèi)存循環(huán)利用實現(xiàn)了A/D數(shù)據(jù)的連續(xù)采集、實時處理。使用內(nèi)存分配如表1所示。
表1 內(nèi)存分配圖
在數(shù)據(jù)空間分配三段大小為1 k的空間。其中,數(shù)組Ping[1024]和Pang[1024]用于存放A/D采集的數(shù)據(jù),數(shù)據(jù)類型為short型;數(shù)組powerSpecturm用于存放功率譜數(shù)據(jù),數(shù)據(jù)類型為long型, 由于實數(shù)序列的傅里葉變換關(guān)于奈奎斯特點偶對稱,因此一半的頻譜已經(jīng)可以反映完整的頻譜信息。
本文A/D采集使用中斷的方式進(jìn)行,每開始計算一批新的數(shù)據(jù)的功率譜,需要先將數(shù)組powerSpecturm清零,然后打開A/D中斷,開始接收A/D轉(zhuǎn)換數(shù)據(jù)。將第一段1024個數(shù)據(jù)順序存入數(shù)組Ping[1024],存滿后,即對該段數(shù)據(jù)進(jìn)行處理,包括:FFT運算、利用周期圖法計算該段數(shù)據(jù)的功率譜、并將結(jié)果對應(yīng)累加于數(shù)組 powerSpecturm。在對該段數(shù)據(jù)進(jìn)行處理的同時,A/D采集依然在進(jìn)行,將后續(xù)采集的數(shù)據(jù)順序存入數(shù)組 Pang[1024]。在數(shù)組 Pang[1024]存滿之前,須保證對數(shù)組Ping[1024]的處理已經(jīng)完成。當(dāng)數(shù)組Pang[1024]存滿后,再對該段數(shù)據(jù)進(jìn)行處理,將后續(xù)采集的數(shù)據(jù)存放于數(shù)組Ping[1024]。依此循環(huán),待128批數(shù)據(jù)全部采集處理完后,關(guān)閉A/D中斷,將powerSpecturm除以 128(總段數(shù))取平均值,得到最終的功率譜估計。軟件流程圖如圖3所示。
圖3 軟件流程圖
采用上述方法,需要滿足一個條件,即在下一段數(shù)據(jù)采滿之前,對上一段數(shù)據(jù)的處理必須已經(jīng)完成,否則,有用數(shù)據(jù)將會被覆蓋,導(dǎo)致結(jié)果錯誤。利用TI DSPLIB提供的cbrev、rfft等庫函數(shù)對數(shù)據(jù)進(jìn)行處理[5],可以極大地縮短數(shù)據(jù)的處理時間,rfft庫函數(shù)對1024點數(shù)據(jù)做FFT的時間僅為25716個機器周期,DSP系統(tǒng)時鐘為160 M,經(jīng)運行測試,每段數(shù)據(jù)的處理時間不超過1μs,而采集1 k數(shù)據(jù)需要31.3 μs,因此,滿足要求。為了驗證該方法的正確性,利用信號源產(chǎn)生9.6 kHz的正弦信號進(jìn)行了驗證,在CCS開發(fā)環(huán)境下, A/D采集數(shù)據(jù)如圖4所示,功率譜如圖5所示。從圖5可以看出,峰值出現(xiàn)在第275根譜線處,該譜線對應(yīng)于9.6 kHz的正弦信號,說明該方法有效。
圖4 輸入波形
圖5 功率譜圖
本文基于 TMS320VC5416處理器,通過使用乒乓技術(shù),利用3 k的數(shù)據(jù)空間實現(xiàn)了128 k數(shù)據(jù)的連續(xù)采集與功率譜估計。采用這種方法,可以充分發(fā)揮系統(tǒng)的性能,在較低的數(shù)據(jù)配置下,實現(xiàn)大容量數(shù)據(jù)的處理,對于類似需要大量片內(nèi)數(shù)據(jù)處理的應(yīng)用場合具有重要意義。采用此方法進(jìn)行的功率譜估計,能夠充分利用片內(nèi)的數(shù)據(jù)空間,滿足使用要求。以該方法實現(xiàn)的功率譜估計已經(jīng)應(yīng)用,經(jīng)過試驗,驗證了該方法的實用性,可以推廣應(yīng)用于類似的需要大量數(shù)據(jù)采集的應(yīng)用場合。
[1]胡廣書. 數(shù)字信號處理[M]. 北京: 清華大學(xué)出版社.1997.
[2]Texas Instruments. TMS320VC5416 Fixed-Point Digital Signal Processor Date Manual[M]. 2003.
[3]周如輝. 實時視頻處理系統(tǒng)中乒乓緩存控制器的設(shè)計[J].電子元器件應(yīng)用,2006,33(4):66-68.
[4]合忠達(dá)電子公司. SEED-DEC5416用戶指南[M]. 2004.
[5]林靜然. 基于 TIDSP的通用算法實現(xiàn)[M]. 北京:電子工業(yè)出版社, 2008.