王鵬宇,翟麗麗,石巨峰
(解放軍91550部隊,大連116023)
高斯白噪聲是普遍存在的一種噪聲源,對電子對抗、遙測系統、通信系統的性能檢測起著關鍵作用。將系統各模塊通過高斯白噪聲信道測試,不僅可以檢驗其抗噪性能,還可以通過理論仿真對比實測結果驗證系統設計的正確性。因此,設計一個能夠在特定條件下模擬高斯白噪聲的發生器對一個系統從理論層走向實際應用層有著重要意義[1-4]。
通過硬件模擬高斯白噪聲可以采用物理噪聲發生器,雖然其精度較高,但其實現電路復雜,成本較高且噪聲功率不易控制。本文提出的基于現場可編程門陣列(FPGA)的高斯白噪聲發生器采用線性同余法產生隨機控制Box-Muller變換器的地址,使用上位機控制末端放大器參數改變噪聲功率,充分考慮硬件資源的優化,具有結構簡單、模擬速度快、噪聲周期長、相關性好的特點。設計方案先通過Matlab仿真,再用VerilogHDL硬件描述語言在FPGA上移植,能夠較好地滿足實際測試的需求。
本文提出的噪聲發生器總體設計方案如圖1所示。其主要包括計算機控制模塊,線性同余隨機地址發生器模塊,Box-Muller變換器模塊,噪聲功率控制模塊,加法器模塊,數字/模擬(D/A)變換器輸出模塊和串行接口模塊。
通過一種改進的線性同余發生器產生2組隨機數,每次時鐘上升沿到來時使用隨機數作為Box-Muller變換器內2個數據存儲單元的地址進而輸出相應數據。主控計算機根據用戶選擇的相應信噪比通過串行接口配置功率控制模塊的系數a產生相應功率的噪聲,將其與被測試系統信號進行疊加,經加法器通過D/A轉換器輸出模擬信號。

圖1 高斯白噪聲發生器總體設計方案
產生均勻隨機數的方法有多種,比如說線性同余法、移位寄存器法、進位加等方法。本文采用改進的線性同余法生成隨機數,具有速度快、節約資源和生成序列隨機性好的特點[5]。
通過數字模擬產生的隨機數與真正的隨機數不同,它是經過一定的遞推具有固定周期的偽隨機序列。但只要根據實際需求,產生的序列周期足夠長,滿足均勻性和獨立性,就能夠在特定條件下具有與真正隨機數相似的性質。
線性同余法的遞推公式為:

式中:m為 模數,m>0;a為乘數,1<a<m;c為增量,0≤c<m;X0為開始值,一般0≤X0<m。
一般序列周期小于m。例如要產生周期為32 768的隨機地址,那么設置m為215=32 768顯然不合適,為了能夠遍歷1~32 768之間所有數,充分體現其隨機性,可以設置m為220=1 048 576,然后將輸出的數據除以25=32后取整處理。這里的a取2即可,通過仿真得到的效果符合條件。c取0可以提高生成速度,節約硬件資源。
為了進一步增加周期性,每次算法產生的數據到達周期m后改變初始值X0,這樣就會產生另外一組周期為m但數據不完全相同的序列。理想情況下可以做到周期為m×m。其算法流程如圖2所示。

圖2 線性同余算法流程
Box-Muller變換法是將在(0,1)之間均勻分布的隨機數經過一定變化,生成符合高斯分布的隨機數。設x1,x2符合(0,1)之間的均勻分布,那么對x1,x2做一定變化:

n即為最終生成的高斯分布隨機數,該方法叫做Box-Muller變換法。
為了減少FPGA硬件的計算量,由Matlab仿真產生x1,x2,然后建立f(x1)和g(x2)的數據表,對其量化處理后存入FPGA的內部只讀存儲器(ROM)中。這里由于g(x2)是周期函數,只需存儲1/4周期即可以節約FPGA的存儲單元。
將線性同余法產生的隨機數作為f(x1)和g(x2)的地址讀取數據。高斯隨機序列的歸一化相關性仿真如圖3所示,可見其隨機序列具有良好的獨立性。

圖3 高斯隨機序列自相關性仿真
其功率譜仿真如圖4所示,該序列的功率譜是一條均勻的白譜。

圖4 高斯隨機序列功率譜仿真
在信號功率固定情況下,為了產生不同信噪比,可以通過改變噪聲功率來實現。設信號平均功率為Ps,噪聲平均功率為Pn,噪聲輸出乘系數為a,由于隨機信號的平均功率等于其交流功率和直流功率之和,而高斯白噪聲直流分量為0,則Pn的值等于其方差的大小。當設乘系數a=1時,噪聲方差為D,則:。

通過用戶選擇的SNR計算出相應的a值,在主控計算機內建立switch-case表,經串行接口將對應一定信噪比的a值輸入到FPGA內部完成相應計算。
圖5是使用NI公司的虛擬頻譜分析儀對純噪聲頻譜進行的測試,可見在所關心的頻率范圍內功率譜分布均勻近似為一條線,噪聲體現出理想白噪聲的特性,能夠較好地模擬高斯白噪聲信道特性。

圖5 噪聲功率譜測試
將產生的噪聲導入Matlab做直方圖統計,如圖6所示。橫軸表示區間,縱軸表示落入該區間的概率,總體上呈正態分布,可見其概率密度函數是高斯分布的,驗證了噪聲產生算法的正確性。
為了進一步驗證本系統產生的高斯白噪聲與理想噪聲的相似程度,將被測系統產生的信號調整為常見的二進制相移鍵控(BPSK)信號,通過噪聲疊加后進行相關解調,解調后的數據通過串口上傳主控計算機,計算機內存儲了發送數據,通過對比收發數據進行誤碼率統計[6]。

圖6 噪聲直方圖統計
誤碼率實測的統計曲線和理論曲線如圖7所示,可見由FPGA生成的噪聲對系統產生的影響和理想噪聲產生的影響基本吻合,說明本系統設計的合理性。
本文提出的基于FPGA的高斯白噪聲發生器,通過算法優化節約了硬件存儲資源,生成速度快。通過理論仿真驗證了其特性符合高斯白噪聲性質。應用到工程實踐中能夠滿足實際需求,且取得了良好效果。

圖7 BPSK誤碼率曲線
[1]張萍,戴光明.高斯隨機噪聲實時生成方法實現研究[J].電子技術應用,2004,29(4):10-12.
[2]尹中秋,石春和,陳明生,等.FPGA的可調參數白噪聲與高斯白噪聲生成器[J].火力與指揮控制,2008,33(8):109-111.
[3]樊昌信,曹麗娜.通信原理[M].北京:國防工業出版社,2007.
[4]黃本雄,侯潔,胡海.高斯白噪聲發生器在FPGA中的實現[J].微計算機信息,2007,23(7):165-167.
[5]劉正高.標準均勻隨機數的產生方法分析[J].航天標準化,1996,13(5):11-13.
[6]季雄,段吉海,胡媛媛.基于VerilogHDL的UART設計[J].微計算機信息,2006,6(2):230-232.