朱鵬 夏際金
摘 要:高斯噪聲的產(chǎn)生作為一個系統(tǒng)的小模塊,需要有速度快、占用資源小、精度高等特殊要求,本文采用FPGA生成高斯噪聲,首先使用m序列發(fā)生器產(chǎn)生均勻的隨機分布的噪聲,然后利用均勻分布和高斯分布之間的映射函數(shù)關系,采用線性插值擬合出一次曲線,進而產(chǎn)生高斯噪聲。實驗證明該方法完全滿足工程需要。
關鍵詞:FPGA;均勻分布;高斯噪聲;插值
DOI:10.16640/j.cnki.37-1222/t.2017.23.085
0 引言
在雷達領域,需產(chǎn)生一個模擬目標來進行系統(tǒng)仿真驗證,為了盡可能模擬真實目標,需要在模擬目標中添加高斯噪聲。傳統(tǒng)的高斯噪聲在DSP軟件系統(tǒng)中生成,生成的高斯噪聲周期有限,影響系統(tǒng)后處理??紤]到硬件資源少、精度高、速度快等特點,本文采用FPGA生成高斯噪聲,可移植性強。
1 算法介紹
高斯噪聲與均勻噪聲有一定的映射關系,通過映射關系采用分段線性擬合方式,可以求解出高斯噪聲。由高斯噪聲和均勻噪聲對應曲線可知,對應曲線在[0,0.5]和[0.5,1]是對稱關系,且隨著高斯噪聲絕對值增大,對應的斜率也逐漸增大。如果按照映射關系對應的函數(shù)進行計算,含有超越函數(shù)、運算量大且不易工程實踐。如果對均勻噪聲采用線性擬合,那么高斯噪聲絕對值越高,誤差越大[1]。所以需要對均勻噪聲采用分段線性擬合,在高斯噪聲絕對值高的地方,減少擬合區(qū)間,提高擬合精度。
2 實現(xiàn)方法
工程實踐方案是使用m序列發(fā)生器產(chǎn)生均勻的隨機分布,這里為了減少m序列之間的相關性,采用多個m序列發(fā)生器并行工作,經(jīng)非相干化處理生成32位的均勻分布噪聲,經(jīng)過比較器,落在相應的插值區(qū)間,最后擬合出高斯分布的噪聲[2]。
2.1 均勻分布的噪聲產(chǎn)生
M序列是由帶線性反饋的移位寄存器產(chǎn)生的周期最長的序列。M序列的每一個狀態(tài)可以看成對應一個隨機噪聲。當m序列使用n級寄存器時,對應的周期最大為2n-1。M序列前后輸出具有較強的相關性,為了減少均勻噪聲序列的相關性,可以采取L個m序列產(chǎn)生器并行工作,不同時刻采用不同的m序列產(chǎn)生器產(chǎn)生均勻噪聲[3]。一般取L≥6, n≥20。本文使用的L=6,n=32;理論上產(chǎn)生此序列的長度為232-1。
2.2 高斯噪聲的產(chǎn)生
高斯噪聲與均勻噪聲的映射關系可以用函數(shù)來表示:
其中x表示均勻分布的隨機變量,y表示高斯隨機變量。采用斜率不同的折線來逼近關系曲線。在[0.5,1]段通過Matlab產(chǎn)生15段的折線,其中對Y軸的高斯分布值進行[0,5]區(qū)間等間隔均勻分割,得到的起點折線坐標(x1,y1)…(x15,y15)和對應的斜率(k1,…k15)。
32階M序列發(fā)生器產(chǎn)生的偽隨機數(shù)作為高斯噪聲轉換的X軸值。該值經(jīng)過量化之后會落在[0,1]區(qū)間內(nèi)。考慮到均勻噪聲和高斯噪聲關于(0.5,0)對稱。在[0,0.5]區(qū)間內(nèi)的值進行取反操作,就可得到[0.5,1]對應的區(qū)間值,最后在[0.5,1]擬合出該值。
3 實驗結果
本文在Altera公司的EP4SGX360芯片上實現(xiàn)該設計,高斯取值范圍[-5,5],均值0,方差1 的高斯噪聲。使用Modelsim仿真產(chǎn)生10000個點的噪聲值,并將10000點結果導入matlab里繪制直方圖如圖1所示,可見生成的噪聲序列密度符合高斯分布,達到設計要求。
4 結束語
基于分段插值的方法產(chǎn)生高斯噪聲精度高,而且占用的FPGA資源比常規(guī)方法少,是FPGA產(chǎn)生高斯噪聲的一種非常有效的方法,并且易于工程實現(xiàn)。
參考文獻:
[1]肖沛,林季資.一種偽隨機數(shù)組合發(fā)生器的研究.數(shù)理醫(yī)藥學雜志,2009(02):315-320.
[2]束禮寶,宋克柱,王硯方.偽隨機數(shù)發(fā)生器的FPGA實現(xiàn)與研究[J].電路與系統(tǒng)學報,2003,8(03):121-124.
[3]曾祥能,張永順.基于改進M序列的數(shù)字噪聲源設計及其FPGA實現(xiàn)[J].電視技術,2008,1(48):3.endprint