四川九洲空管科技有限責任公司 陳 妹 鄭 超 楊志強
根據分組檢測算法原理,提出了一種在工程實踐中解決數字接收機信號檢測的方案,并用Matlab仿真分析了分組檢測算法,進一步給出了仿真結果。最后給出了分組檢測算法的FPGA的硬件實現方案,用verilog硬件描述語言實現了分組檢測算法。
分組檢測算法作為接收機信號處理的第一步,用于得到最初的數據分組。本文采用的固定滑動窗測量方法,這是一種簡單有效的處理方式。當沒有信號來到時,得到的信號主要為接收機的本身噪聲wn,信號數據rn可表示為rn=wn;當信號Sn來到時,信號數據rn可表示為信號和噪聲的疊加,即rn=Sn+wn。因此,可根據接收信號能量值的變化來實現分組檢測。但是,由于檢測環境的復雜性,可能會串入一些突發性的、高能量噪聲,對信號判決產生干擾,可通過一定長度(L)的窗口進行累加計算,可表示為:

上述公式(1)中,mn表示長度為L的平滑窗的能量累積,隨著信號的不斷輸入,mn的更新根據接收信號能量移動求和過程的變化而變化,該求和過程被稱為滑動窗口算法,此算法的基本原理就是在某一個時刻n,在該算法的求和過程中,首先加入了一個新的信號數值,同時也會去掉一個舊的信號數值,式(2)為這種移動遞歸求和過程的計算:

當有用數據分組信號到達時,此滑動窗口檢測到的能量會有明顯的跳變,可設定能量判決閥值進行信號檢測,閥值可隨窗口內檢測到的能量大小來設定。同時,為避免高能量的隨機噪聲影響,在能量檢測算法上增加窗口長度L,即判決變量必須在預設門限值之上保持相應的周期,這樣才能認為有信號數據到來時,接收機開始接收有效數據,從而有效地避免了較大能量隨機噪聲的干擾,影響接收機性能。
設計中各參數設置見表1。
信號能量檢測仿真如圖1所示。
圖1為分組檢測算法的仿真結果,橫坐標表示采樣點數,縱坐標表示窗口能量。由圖1可以看出,當仿真系統中只添加高斯白噪聲的時,窗口中計算得到的能量值很小,在0.1范圍以內;當仿真系統增加113MHz的有用信號時,檢測窗口得到的能量值迅速增大,并在一定值范圍內抖動。此時,系統設定仿真門限值為0.75時,也就是當窗口計算得到的能量值大于0.75,并且能量值能連續保持64個采樣周期大于0.75,則可以認定檢測到了有用信號,并把信號輸出給數字接收機。

表1 檢測算法參數設置

圖1 分組檢測仿真結果圖

圖2 分組檢測法FPGA實現框圖
圖2為分組檢測算法的FPGA實現框圖,上圖中的乘法器用于計算接收信號的能量,滑動窗口求和模塊計算在窗口L下的數據累加和,圖中檢測信號能量閾值模塊用于判斷累加求和后的結果超出門限值與否,累加求和后的結果連續有64個采樣點超出閾值時,認為有用信號到來,并將乘法器之前的接收信號送到接收機處理;當檢測結果不能滿足連續超過64個采樣點時,將作為無效數據丟棄。

圖3 乘法器的輸入輸出引腳

圖4 滑動窗口累加求和模塊結構圖
Xilinx公司ISE軟件具有豐富的、功能強大的IP核庫,有效利用現有成熟資源可提高設計效率和算法可靠性,并大大縮短設計周期,本文采用ISE軟件的乘法器IP核實現滑動窗內的能量計算,其接口定義見圖3。乘法器IP核的輸入輸出引腳定義如下:clk表示乘法器的時鐘輸入引腳;DataIn表示乘法器的二個要做乘法運算的輸入引腳;Energy表示乘法器的乘法運算結果引腳。
分組檢測算法需要實現每個固定窗口內的能量,其設計累加過程中采用移動遞歸求和方法。
圖4顯示給出了滑動窗口累加求和運算的實現框圖,加求和模塊收到乘法器輸出的計算結果后,首先要把收到的的乘法運算結果數據做一個64級的延遲,在FPGA中通過延時器實現,延時后的數據為Datadelay,未經過延遲處理的數據為Data,verilog程序中,通過如下程序計算即可得到窗口能量。

檢測算法的窗口能量計算出來后,最后一步處理就是對其結果進行判決,首先設一個門限值,門限值的選取根據仿真算法的設置而定,當檢測窗口結果大于門設置的門限值,并且能夠連續64個計算周期都大于門限值,則判定為收到了有效數據。
在算法判決過程中,由于信號長度為64位,因此需要判斷64個采樣周期的窗口能量,當全部判斷后,所有64個判決結果都需輸出,需要把檢測算法模塊的輸入信號做一個64級的延遲。本文在計算時,通過直接調用ISE軟件中的移位寄存器IP核來實現,定義見圖5。

圖5 移位寄存器的輸入輸出引腳

圖6 FPGA仿真結果圖
圖5給出了移位寄存器IP核的輸入輸出引腳定義,其中clk是同步時鐘輸入引腳;DataIn是輸入數據引腳;DataIn_Delay是移位后的輸出數據引腳。
圖6顯示給出了檢測算法的仿真結果圖,仿真采用modelsim軟件,可以真實的仿真verilog程序的時序關系,圖中DataIn是檢測算法輸入信號,信號由MATLAB軟件產生,產生的數據導入到verilog工程文件內,DataOut是檢測算法輸出信號,當沒有檢測到有用信號時,輸出為0,當檢測到有用信號時,輸出輸進來的有用信號。Frame是檢測算法輸出信號的判決位,圖中可以看出,當Frame標志位為0時,DataOut沒有輸出,當Frame標志位為1時,輸出有數據,并且數據開始輸出到接收機。
結語:根據分組檢測算法原理及特點,在工程實際應用中,可作為一種解決接收機信號檢測的處理方式,通用Matlab軟件仿真分組檢測算法,并用FPGA仿真驗證,給出了硬件時序仿真結果,具有工程應用意義。