楊璐宇
(昆明船舶設備研究實驗中心,云南昆明,650051)
在現有越來越成熟的水聲處理技術中,各類信號處理方法得到了廣泛的應用,其中實用頻率較高的方法有:頻譜分析、自適應濾波、數字波束形成等。在某型產品中,聲偵聽功能需要對遠距離、弱信號或信噪比低的信號、低頻信號進行接收檢測,而通常運用較多的如信號處理FFT計算、小波算法對于遠距離、 低信噪比信號的檢測能力有限。本文采用基于錯位疊加算法,對采集到的低信噪比信號、背景噪聲大的低頻信號針對其主要信號部分進行疊加處理,并對處理后的信號進行信號檢測計算,通過MATLAB理論驗證以及TS201芯片上的實際應用,為低信噪比信號及微弱信號檢測提供新的思路及方法,并搭建平臺,為該算法在實際運用中提供理論與實際的支撐。
國內主要使用FFT變換、小波變換等作為信號處理的主要方法。FFT變換作為比較常用且用途非常廣泛的時頻分析方法,將信號從時域映射到頻域,通過提取信號的頻譜特性對信號進行分析,將信號在時域內很難凸顯的問題變得一目了然。FFT作為對信號的全局變換方法,對信號在整個時間域內進行積分,如果一段接收到的信號內突現小信號或產生短時的變換,就不能很好地反映出來其頻譜特,對于不平穩的信號且其頻譜特性不是很明顯,傅里葉變換則顯得不適用。
而小波算法需要提取出適當的小波系數,才能有效的起到降噪作用,這在實際工程運用中,特別時針對聲偵聽這樣接收信號不固定的情況,很難做到及時有效地取得小波基,完成降噪功能。
針對現有聲偵聽功能需要對低信噪比、非平穩、遠距離信號進行檢測,這里選用一種錯位信號疊加算法,將接收到的信號進行錯位疊加,可以使所接收到的信號得以增強與放大,有助于對其進行信號檢測。
錯位疊加算法是基于隨機減量技術提出的算法[1],正是利用了隨機減量技術線性疊加的原理,是一種在復雜疊加信號中提取出目標周期性信號的簡易方法[2]。
在信號中選取疊加起始點,確定疊加截取長度后選取相鄰脈沖進行線性疊加,以完成對所需信號的提取,最后對信號進行相關性分析以確定截取信號的準確性。在作者程星所寫的關于錯位信號疊加算法的研究中,其主要研究了兩種疊加算法,一種是按照信號自身周期進行疊加的相鄰脈沖疊加法,即每隔一個周期疊加一次,正弦部分在疊加過程中會因重疊而不斷增強;第二種是相同時間間隔疊加法,即按照相同時間間隔進行疊加,每隔1s疊加一次,這樣疊加,會使有效脈沖部分不斷增強,提高目標信號能量,從而提取有效信號,完成信號檢測。
對其試驗進行仿真發現,按照信號周期進行疊加的方法,信號可以在保持波形不變的情況下能量增強,而按照時間疊加的方法,信號傳播的過程中時間會產生漂移,導致疊加步長非整數,從而產生誤差,使信號檢測結果產生偏差。所以在此選擇相鄰脈沖疊加法。算法僅用到了加法運算,因此計算效率高,提取的信號模型準確[4]。公式:

式中: S1[n]為原始信號;M為疊加次數;T為疊加步長。

圖1 按信號周期疊加的計算模型
1.2節中所描述的相鄰周期沖疊加算法,有個重要因素是疊加次數,次數的選取取決于疊加后信號與目標信號間進行的相關性分析的結果。這里取正弦信號和白噪聲信號,白噪聲的功率譜密度是均勻分布整個頻域,這一特性可以很好地作為海洋背景噪聲與目標信號組成測試信號。
這里的產生的目標信號為:頻率37500Hz,采樣率300000的連續信號,取其中251個數進行仿真計算,計算如圖2所示。圖2(a)為目標信號,圖2(b)為含背景噪聲的信號,圖2(c)為采取了相鄰周期疊加算法不同次數處理后的信號。其中不同疊加次數的信號與目標信號相關性情況如圖3所示,部分疊加算法源程序如下:

圖2 MATALB信號疊加處理結果

圖3 處理信號與目標信號相關系數

設離散信號p(n)和q(n)的長度均為N,定義ρ為p(n)和(n)的互相關性系數,其中(n)和(n)不能同時為0。如公式(2)所示。

由許瓦茲不等式,有ρ≤1。當p(n)=q(n)時,ρ=l,這時ρ將取最大值;當p(n)和q(n)完全無關時,p=0;當p(n)≥q(n)具有某種程度的相似時,|ρ|的取值在0和1之間。
在MATLAB中使用corrcoef(s,y)函數計算相關系數,計算出的不同疊加次數的相關系數如表1所示,處理信號與目標信號之間的互相關系數如圖3所示。

表1 相關系數(n為次數)
從以上數據可以確定,在疊加次數為5次后,經疊加處理過的信號與目標信號的相關系數已趨于穩定值。證明試驗信號最低疊加5次后互相關系數趨于穩定,可以提出明顯的正弦信號。
根據聲偵聽功能所設計的需求,實驗選用AD公司的TigerShark系列的TS201 DSP芯片作為信號處理平臺。實航數據進行實驗,信號采用的是頻率為3kHz,采樣率為200kHz的正弦信號,環境噪聲為實航實際情況的背景噪聲。
將上一節中采用的按信號周期疊加的信號錯位疊加方法,采用C語言編寫程序應用到實際DSP芯片編程中,每次取256個數進行信號處理,疊加步長根據信號頻率與采樣率進行計算,每隔8個數向左移動至數組首部,移動后的數組再與原信號數組疊加,首部移出的數組循環至數組尾部填補空缺,以FIFO方式加入數組,這樣往復循環操作5次后,對疊加形成的新信號數組進行基2的128點FFT計算,對信號作頻譜分析,求出信號的特征值。
2.2.1 創建工程文件
采用Visual DSP++ 5.1作為開發環境進行工程開發。Visual DSP++ 5.1作為開發環境和調試環境簡稱IDDE。在IDDE中所有應用程序的開發一般都要經過以下幾步[4]:
(1)創建一個新的的工程文件;步驟為打開Visual DSP++ for SHARC →單擊Project→選擇new[4];
(2)設置工程選項;在Processor選項中選擇處理器類型為TIGER SHARC TS201[4];
(3)啟動Visual DSP++ 5.1后,為具有充分的可讀性,建立一個基于C源代碼的project,該工程包括signal.c源文件,fft32.asm文件,signal.ldf鏈接文件,fftDef.h頭文件,x.h頭文件,和cache_macros.h,其中,關于fft計算的兩個文件為fft32.asm和fftDef.h,x.c文件中主要為疊加算法實現的主要流程,x.h為相關變量定義[4];
(4)設置工程編譯鏈接選項[4];
(5)編譯鏈接Debug版的工程生成可執行文件[4];
(6)建立Debug Session和加載可執行文件[4];
(7)運行和調試程序[4];
(8)編譯鏈接加載(Release)版本的工程[4]。
2.2.2 創建ldf鏈接文件
ldf鏈接文件為描述程序和數據存儲位置的鏈接描述文件,在Visual DSP++提供的缺省的ldf文件中,根據數據類型和長度分配存儲空間,對于整個工程文件很重要,關系著數據的存儲空間分配。對于ADSP TS201s來說,其片內存儲器容量為24Mbit,由6個存儲塊,每個存儲塊配置為128k*32bit[5]。此處使用平臺自備的缺省ldf文件ADSPTS201_C.ldf,在其基礎上針對自身需要對片內存儲區域在MEMORY區域進行定義。根據接收數據的需求,為了能夠存儲足夠長的脈沖數據,這里將數據塊的起始位置與結束位置進行定義,即將外部存儲塊DATA8A與DATA8B兩個部分合并為一個,擴大其循環存的范圍,以滿足接收檢測需要的足夠多信號數據流的需求。
2.2.3 信號疊加檢測計算處理
信號疊加檢測計算處理具體流程如圖4所示。

圖4 DSP程序疊加信號處理流程圖
TS201芯片的內部存儲區域有限,且FFT計算需要在內部存儲區域內進行,所以,分配外部存儲區域持續循環存儲輸入信號,同時將部分數據存入內部存儲區進行疊加計算。
在外部存儲區M8data區域定義數組Indata[IN_DATA_NUM],IN_DATA_NUM定義長度為100000,將FFT計算所需的旋轉因子twiddles[MAX_FFT_SIZE]加載至內部存儲區data2a,將數組FFTBuffer[251]定義在默認內部存儲區主程序執行區域,當外部存儲滿251個數據后,就將數據導入至FFTBuffer進行計算。
疊加流程根據Matlab仿真的所用算法進行編寫,在主程序中使用匯編語言調用寄存器,調用FFT算法的匯編程序,以減少計算所耗時間。其計算部分源程序如下:

在對實航數據進行處理時,經過DSP程序疊加算法計算后,從圖5、6中可以看出,帶有噪聲的信號,在經過五次周期信號疊加處理后,信號部分非常明顯,從圖7、8可以看出,經過增強處理后,信號除了能量增強了,其余信息沒有改變,證明此方法在實際運用可行,且方便易用。

圖5 輸入的原始信號

圖6 疊加處理后的信號

圖7 原輸入信號頻譜圖

圖8 疊加處理后的輸出信號頻譜圖
從實驗數據證明,拖過錯位疊加算法可使被關注信號的能量得到保持,噪聲部分減弱,算法仿真中,在噪聲背景里的信號在經過多次疊加后,與關注的正弦信號之間的相關性得到很大提高,隨著疊加次數增加,相關系數得到增大,并在疊加5次后趨于平穩,最終信號提取效果顯著。后應用至基于ADSP TS201芯片上的實驗,證明了該方法可行,且方法簡便易行,運行效率高。