王鵬宇,翟麗麗,石巨峰
(解放軍91550部隊(duì),大連116023)
高斯白噪聲是普遍存在的一種噪聲源,對(duì)電子對(duì)抗、遙測(cè)系統(tǒng)、通信系統(tǒng)的性能檢測(cè)起著關(guān)鍵作用。將系統(tǒng)各模塊通過高斯白噪聲信道測(cè)試,不僅可以檢驗(yàn)其抗噪性能,還可以通過理論仿真對(duì)比實(shí)測(cè)結(jié)果驗(yàn)證系統(tǒng)設(shè)計(jì)的正確性。因此,設(shè)計(jì)一個(gè)能夠在特定條件下模擬高斯白噪聲的發(fā)生器對(duì)一個(gè)系統(tǒng)從理論層走向?qū)嶋H應(yīng)用層有著重要意義[1-4]。
通過硬件模擬高斯白噪聲可以采用物理噪聲發(fā)生器,雖然其精度較高,但其實(shí)現(xiàn)電路復(fù)雜,成本較高且噪聲功率不易控制。本文提出的基于現(xiàn)場(chǎng)可編程門陣列(FPGA)的高斯白噪聲發(fā)生器采用線性同余法產(chǎn)生隨機(jī)控制Box-Muller變換器的地址,使用上位機(jī)控制末端放大器參數(shù)改變?cè)肼暪β剩浞挚紤]硬件資源的優(yōu)化,具有結(jié)構(gòu)簡(jiǎn)單、模擬速度快、噪聲周期長(zhǎng)、相關(guān)性好的特點(diǎn)。設(shè)計(jì)方案先通過Matlab仿真,再用VerilogHDL硬件描述語言在FPGA上移植,能夠較好地滿足實(shí)際測(cè)試的需求。
本文提出的噪聲發(fā)生器總體設(shè)計(jì)方案如圖1所示。其主要包括計(jì)算機(jī)控制模塊,線性同余隨機(jī)地址發(fā)生器模塊,Box-Muller變換器模塊,噪聲功率控制模塊,加法器模塊,數(shù)字/模擬(D/A)變換器輸出模塊和串行接口模塊。
通過一種改進(jìn)的線性同余發(fā)生器產(chǎn)生2組隨機(jī)數(shù),每次時(shí)鐘上升沿到來時(shí)使用隨機(jī)數(shù)作為Box-Muller變換器內(nèi)2個(gè)數(shù)據(jù)存儲(chǔ)單元的地址進(jìn)而輸出相應(yīng)數(shù)據(jù)。主控計(jì)算機(jī)根據(jù)用戶選擇的相應(yīng)信噪比通過串行接口配置功率控制模塊的系數(shù)a產(chǎn)生相應(yīng)功率的噪聲,將其與被測(cè)試系統(tǒng)信號(hào)進(jìn)行疊加,經(jīng)加法器通過D/A轉(zhuǎn)換器輸出模擬信號(hào)。
圖1 高斯白噪聲發(fā)生器總體設(shè)計(jì)方案
產(chǎn)生均勻隨機(jī)數(shù)的方法有多種,比如說線性同余法、移位寄存器法、進(jìn)位加等方法。本文采用改進(jìn)的線性同余法生成隨機(jī)數(shù),具有速度快、節(jié)約資源和生成序列隨機(jī)性好的特點(diǎn)[5]。
通過數(shù)字模擬產(chǎn)生的隨機(jī)數(shù)與真正的隨機(jī)數(shù)不同,它是經(jīng)過一定的遞推具有固定周期的偽隨機(jī)序列。但只要根據(jù)實(shí)際需求,產(chǎn)生的序列周期足夠長(zhǎng),滿足均勻性和獨(dú)立性,就能夠在特定條件下具有與真正隨機(jī)數(shù)相似的性質(zhì)。
線性同余法的遞推公式為:
式中:m為 模數(shù),m>0;a為乘數(shù),1<a<m;c為增量,0≤c<m;X0為開始值,一般0≤X0<m。
一般序列周期小于m。例如要產(chǎn)生周期為32 768的隨機(jī)地址,那么設(shè)置m為215=32 768顯然不合適,為了能夠遍歷1~32 768之間所有數(shù),充分體現(xiàn)其隨機(jī)性,可以設(shè)置m為220=1 048 576,然后將輸出的數(shù)據(jù)除以25=32后取整處理。這里的a取2即可,通過仿真得到的效果符合條件。c取0可以提高生成速度,節(jié)約硬件資源。
為了進(jìn)一步增加周期性,每次算法產(chǎn)生的數(shù)據(jù)到達(dá)周期m后改變初始值X0,這樣就會(huì)產(chǎn)生另外一組周期為m但數(shù)據(jù)不完全相同的序列。理想情況下可以做到周期為m×m。其算法流程如圖2所示。
圖2 線性同余算法流程
Box-Muller變換法是將在(0,1)之間均勻分布的隨機(jī)數(shù)經(jīng)過一定變化,生成符合高斯分布的隨機(jī)數(shù)。設(shè)x1,x2符合(0,1)之間的均勻分布,那么對(duì)x1,x2做一定變化:
n即為最終生成的高斯分布隨機(jī)數(shù),該方法叫做Box-Muller變換法。
為了減少FPGA硬件的計(jì)算量,由Matlab仿真產(chǎn)生x1,x2,然后建立f(x1)和g(x2)的數(shù)據(jù)表,對(duì)其量化處理后存入FPGA的內(nèi)部只讀存儲(chǔ)器(ROM)中。這里由于g(x2)是周期函數(shù),只需存儲(chǔ)1/4周期即可以節(jié)約FPGA的存儲(chǔ)單元。
將線性同余法產(chǎn)生的隨機(jī)數(shù)作為f(x1)和g(x2)的地址讀取數(shù)據(jù)。高斯隨機(jī)序列的歸一化相關(guān)性仿真如圖3所示,可見其隨機(jī)序列具有良好的獨(dú)立性。
圖3 高斯隨機(jī)序列自相關(guān)性仿真
其功率譜仿真如圖4所示,該序列的功率譜是一條均勻的白譜。
圖4 高斯隨機(jī)序列功率譜仿真
在信號(hào)功率固定情況下,為了產(chǎn)生不同信噪比,可以通過改變?cè)肼暪β蕘韺?shí)現(xiàn)。設(shè)信號(hào)平均功率為Ps,噪聲平均功率為Pn,噪聲輸出乘系數(shù)為a,由于隨機(jī)信號(hào)的平均功率等于其交流功率和直流功率之和,而高斯白噪聲直流分量為0,則Pn的值等于其方差的大小。當(dāng)設(shè)乘系數(shù)a=1時(shí),噪聲方差為D,則:。
通過用戶選擇的SNR計(jì)算出相應(yīng)的a值,在主控計(jì)算機(jī)內(nèi)建立switch-case表,經(jīng)串行接口將對(duì)應(yīng)一定信噪比的a值輸入到FPGA內(nèi)部完成相應(yīng)計(jì)算。
圖5是使用NI公司的虛擬頻譜分析儀對(duì)純?cè)肼曨l譜進(jìn)行的測(cè)試,可見在所關(guān)心的頻率范圍內(nèi)功率譜分布均勻近似為一條線,噪聲體現(xiàn)出理想白噪聲的特性,能夠較好地模擬高斯白噪聲信道特性。
圖5 噪聲功率譜測(cè)試
將產(chǎn)生的噪聲導(dǎo)入Matlab做直方圖統(tǒng)計(jì),如圖6所示。橫軸表示區(qū)間,縱軸表示落入該區(qū)間的概率,總體上呈正態(tài)分布,可見其概率密度函數(shù)是高斯分布的,驗(yàn)證了噪聲產(chǎn)生算法的正確性。
為了進(jìn)一步驗(yàn)證本系統(tǒng)產(chǎn)生的高斯白噪聲與理想噪聲的相似程度,將被測(cè)系統(tǒng)產(chǎn)生的信號(hào)調(diào)整為常見的二進(jìn)制相移鍵控(BPSK)信號(hào),通過噪聲疊加后進(jìn)行相關(guān)解調(diào),解調(diào)后的數(shù)據(jù)通過串口上傳主控計(jì)算機(jī),計(jì)算機(jī)內(nèi)存儲(chǔ)了發(fā)送數(shù)據(jù),通過對(duì)比收發(fā)數(shù)據(jù)進(jìn)行誤碼率統(tǒng)計(jì)[6]。
圖6 噪聲直方圖統(tǒng)計(jì)
誤碼率實(shí)測(cè)的統(tǒng)計(jì)曲線和理論曲線如圖7所示,可見由FPGA生成的噪聲對(duì)系統(tǒng)產(chǎn)生的影響和理想噪聲產(chǎn)生的影響基本吻合,說明本系統(tǒng)設(shè)計(jì)的合理性。
本文提出的基于FPGA的高斯白噪聲發(fā)生器,通過算法優(yōu)化節(jié)約了硬件存儲(chǔ)資源,生成速度快。通過理論仿真驗(yàn)證了其特性符合高斯白噪聲性質(zhì)。應(yīng)用到工程實(shí)踐中能夠滿足實(shí)際需求,且取得了良好效果。
圖7 BPSK誤碼率曲線
[1]張萍,戴光明.高斯隨機(jī)噪聲實(shí)時(shí)生成方法實(shí)現(xiàn)研究[J].電子技術(shù)應(yīng)用,2004,29(4):10-12.
[2]尹中秋,石春和,陳明生,等.FPGA的可調(diào)參數(shù)白噪聲與高斯白噪聲生成器[J].火力與指揮控制,2008,33(8):109-111.
[3]樊昌信,曹麗娜.通信原理[M].北京:國(guó)防工業(yè)出版社,2007.
[4]黃本雄,侯潔,胡海.高斯白噪聲發(fā)生器在FPGA中的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23(7):165-167.
[5]劉正高.標(biāo)準(zhǔn)均勻隨機(jī)數(shù)的產(chǎn)生方法分析[J].航天標(biāo)準(zhǔn)化,1996,13(5):11-13.
[6]季雄,段吉海,胡媛媛.基于VerilogHDL的UART設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,6(2):230-232.