馬路,石立國,王竹剛
(中國科學院國家空間科學中心 北京 100190)
高斯白噪聲信號源是一種必不可少的通信信道模擬器。產生高斯白噪聲的途徑主要有物理和數字兩種方式。物理噪聲源雖然精度較高,但是不好控制。數字方式簡單快捷,便于控制參數。數字高斯白噪聲的產生方式很多,一般都是先產生均勻分布隨機數,再通過一定的轉換獲得高斯隨機數。
文獻[1]利用Wallace算法生成均勻分布隨機數,通過查找表獲得高斯白噪聲。文獻[2]利用Tausworthe算法產生均勻分布隨機數,通過box-muller方法獲得高斯白噪聲。文獻[5]利用CASR和LFSR組合的方法獲得均勻分布隨機數,通過函數映射法獲得高斯白噪聲。文獻[6]利用m序列產生均勻分布隨機數,通過函數映射法獲得高斯白噪聲。
為了獲得長周期的均勻分布隨機數,本文采用了文獻[2-3]提出的產生均勻分布隨機數的方法。由于產生的是32位的均勻分布隨機數,如果采用文獻[1]的查找表法,則將耗費很多硬件資源,而文獻[3]的box-muller方法含有不便于FPGA實現的超越函數,為此采用文獻[5-6]提出的函數映射法來獲得基帶高斯白噪聲。
調用ISE14.1中的FIRIP核,配置IP核為多系數(multiplecoefficent)模式,通過載入不同的濾波器系數獲得所需中心頻率和帶寬的中頻噪聲。
配置OSERDES2在DDR模式下,把KC705開發板產生的中頻噪聲通過LVDS接口輸出給AD9739-R2-EBZ開發板。
均勻分布隨機數的好壞直接影響所得到的高斯分布隨機數的性能。均勻分布隨機數產生器對高斯分布隨機數的影響主要有[2]:
1)周期。均勻分布隨機數的周期決定了高斯分布隨機數的周期。
2)位寬。均勻分布隨機數的位寬決定了可以產生的高斯隨機數的范圍和高斯隨機數的分辨率。
3)速度。產生均勻分布隨機數的速度不能低于高斯隨機數產生算法的硬件工作速度。
針對以上的問題。文中采用了一種改進的Combined Tausworthe方法[2-3],這種基于矩陣思想設計的轉換邏輯的硬件結構,提高了均勻分布隨機數的產生速度。
為了產生周期足夠長的均勻分布隨機數,文章采用了Combined Tausworthe[3]算法。
Combined Tausworthe隨機數生成器是由若干個Tausworthe隨機數生成器組合而成,每個Tausworthe隨機數生成器產生隨機數的公式如下

其中,s和L是正整數,s是跳變步長,L是隨機數的輸出位寬。xj,ns+i-1是一個隨機數,滿足線性遞歸模二和公式

其對應的特征多項式為

當 P(z)為本原多項式時,輸出序列有最大周期:2k-1。P(z)通常取三項

且滿足:
0<2q<k,0<s≤k-q<k≤L,gcd(s,2k-1)=1
由J個Tausworthe隨機數生成器構成的Combined Tausworthe隨機數生成器產生的(0,1)區間內均勻分布的隨機數為

其中,xj,ns1+i-1是第j個Tausworthe隨機數生成器的輸出。
文獻[4]提供了Tausworthe隨機數生成器一種快速算法思想:令r=k-q。假設A,B,C的長度都是 L,且 A的初始值為s~n-1=(x(n-1)s,…,x(n-1)s+L-1),C 是一個掩碼(1,1,…,1k,0,0,…,0L-k),它是由 k 個 1 和 L-k 個 0 組成。 開始,令 n=1,A:s~0=(x0,…,xL-1),第二步之后,B=(xk,…,xr+L-1,xL-q,…,xL-1)。 第五步之后,A=(xs,…,xr-1,01,…,0s+L-k),即含有 s+L-k 個 0,而 B=(01,…,0k-s,xk,…,xs+L-1)。 第六步之后,A=s~1。 此即為線性遞歸模二和算法。經過一系列的移位和邏輯操作,舊的隨機數更新產生新的隨機數[3]。
1.B←q-bit left-shift of A;
2.B←A⊕B
3.B←(k-s)-bit right-shift of B;
4.A←A&C;
5.A←s-bit left-shift of A;
6.A←A⊕B
采用文獻[4]提供的算法可以很容易地在FPGA上實現。然而,這種操作耗費的資源比較多,而且有冗余的步驟,為此文章引用了文獻[2]的改進型的Combined Tausworthe算法。這種改進型算法耗費的資源少,且非常適合在FPGA上實現。
在改進型算法中,每個Tausworthe隨機數生成器由一個L位的寄存器和轉換邏輯A'構成,寄存器中的每一位數據滿足式(2)的約束關系。轉換邏輯根據這一關系結合式(1)求出下一時刻的隨機數[2-3]。
式(2)的遞推關系用矩陣表示為

其中,Xj,n是當前時刻的 L 位寄存器狀態,Xj,n+1是下一時刻的狀態。A為轉換矩陣

其中,C1×L是特征多項式 P(z)的系數向量,I(L-1)(L-1)是一個單位矩陣,0(L-1)×1是一個零向量。
一次更新s位信息的轉換關系如下

最后,由J個這種結構的Tausworthe隨機數生成器經過異或操作得到Combined Tausworthe隨機數生成器。器硬件結構如圖1。
J個Tausworthe隨機數發生器的構成的Combined Tausworthe周期為[3]:

根據文獻[1]的周期搜索結果,表1列出了滿足“ME(Maximally Equidistributed)條件”的 3 種參數組合(kj,qj,sj)。

圖1 Combined Tausworthe隨機數生成器結構Fig.1 Structure of combined Tausworhthe random number generator
隨機過程理論:給定任何隨機變量X的累積分布函數F(X),則 Y=F(X)是在(0,1)區間內均勻分布的隨機變量,且與X的分布特征無關。
可以把Y看成是均勻分布,X看成是高斯分布,所以可以通過概率的方法可以獲得均勻分布與高斯分布之間的映射關系。
設 X 服從[1,232-1]區間內的均勻分布;Y 服從(0,1)的標準正態分布。考慮到FPGA硬件實現,Y僅在[-4,4]之間取值。Y的概率密度為[5-6]:

則X→Y的映射算法如下:
1)計算每個高斯隨機數的概率。 對 f(y)在[-4,4]之間0.02 等間隔采樣 401 個點,表示為 zi(i=1,…,401),其中 zi=f(yi),sum(z)=z1+z2+…+z401。 重新計算 401 個點的概率為:f(zi)=zi/sum(z)。
2)計算每個zi對應的均勻分布隨機數的個數。高斯分布隨機數總個數。等于均勻分布隨機數的總個數L=232,則N(zi)=f(zi)×L即是每個高斯隨機數對應的均勻隨機數的個數。
3)計算橫坐標。 每個高斯分布隨機數 zi(i=1,…,401)對應的橫坐標為:前一個zi-1對應的橫坐標位置Xi-1加上zi取值個數N(zi-1)-1。從第一個算起,則z1對應橫坐標上的X1點,z2對應橫坐標上的X1+N(X1)-1點,以此類推,zi對應橫坐標上的 Xi-1+N(Xi-1)-1點,一共 401個對應點。
4)繪制映射曲線。 以 zi[-4,4]為縱坐標,以 Xi-1+N(Xi-1)-1為橫坐標繪制均勻分布到高斯分布的映射曲線,如圖2。

圖2 均勻分布到高斯分布映射曲線Fig.2 Mapping curve of uniform distribution to Gaussian distribution
如果把3.1中的映射關系全部存入FPGA的ROM中,需要的空間大小為232-1=429 496 729 5,這是不可實現的。由于映射曲線在很大區間上表現為線性關系,所以可以用斜率不同的折線段分段逼近關系曲線。在一定精度的要求下,這種方法簡單易行,占用的硬件資源少,而且運算速度很快,適合在FPGA中實現。圖3是20段折線段逼近法得到的擬合關系曲線。

圖3 20段折線逼近映射曲線Fig.3 Mapping curve with 20 section broken line
濾波器的設計可以采用XILINX自帶的FIR IP核。要實現中心頻率和帶寬可調,需要把該IP核配置成多系數(multiple-coefficent)模式。這樣可以使用MATLAB的fdatool工具生成一系列對應的濾波器系數,各組系數所采用的濾波器階數必須相同。把這一系列系數存在一個.coe文件中,通過IP核編輯界面將該文件導入IP核,同時設置“coefficient set”為對應的濾波器組數。
本文使用了16組濾波器,每組濾波器都是200階,對應一個中心頻率和一個帶寬。通過filter_sel端口來控制選通對應的濾波器。對應的濾波器框圖如圖4所示。相應的系數組織形式如圖5所示。

圖4 重載系數FIR濾波器Fig.4 Overload coefficient filter

圖5 FIR系數組織形式Fig.5 Coefficients organization form
開發環境采用ISE14.1,開發板選用Kintex-7 FPGA KC705 Evaluation Kit,器件選用 XC7K325T-2FFG900,編程語言為VHDL。其硬件實現如圖6。
高斯白噪聲發生器包括兩個部分:均勻分布隨機數發生器模塊和均勻分布到高斯分布的映射模塊。
模塊中信號說明:point代表折線段的起點的橫坐標,point_value代表折線段起點的縱坐標,slope代表折線段的斜率。
算法流程:時鐘的上升沿,均勻分布隨機數發生器產生一個隨機數X,該隨機數隨即被送入一個比較器。在比較器中,隨機數X和20段折線的起點值point比較。當確定該隨機數的取值范圍后,折線逼近法得到相應的高斯隨機數:
gauss=(X-point)×slope+poin_value_delay
其中point_value_delay是point_value的延時,因為前面的乘法運算有延時。

圖6 基帶高斯白噪聲FPGA結構Fig.6 FPGA structure of baseband Gaussian noise
本設計中采用的DA為ADI公司的AD9739芯片,FPGA和DA之間的接口采用的是LVDS電平接口。AD9739包括兩個14位復用低壓差分信號(LVDS)輸入端口,該器件接受1/4DAC刷新速率的時鐘,在時鐘上升沿和下降沿均觸發轉換。輸入數據速率為1/2時鐘速率。本設計中時鐘信號DCI_P/DCI_N為2.4G,AD9739的工作時鐘由安捷倫的信號發生器提供。其中DCO_P/DCO_N輸出作為FPGA的系統時鐘,其頻率為600 MHz。為保證FPGA生成的數據傳到AD9739接口端與DCI_P/DCI_N時鐘相位對齊,時鐘產生方式必須同數據產生方式相同,均由OSERDES產生。FPGA與AD9739的接口設計如圖7所示[7-10。

圖7 接口結構設計Fig.7 Interface structure
AD9739-R2-EZB開發板的2.4G系統時鐘由Aglient信號發生器提供,DA出來的中頻噪聲頻譜由Aglient的頻譜儀來分析。
圖8是系統產生的70 M中心頻率,20 M帶寬的中頻噪聲的頻譜。由圖可知,產生的中頻噪聲帶內平坦度小于1 dBm,帶外衰減大于60 dBm,效果非常好。

圖8 噪聲源頻譜圖Fig.8 Spectrogram of Gaussian noise
文章采用Combined Tausworthe方法產生長周期的均勻分布隨機數,通過曲線擬合的方法實現均勻分布到高斯分布的映射。利用可重載系數的FTR濾波器實現了參數可調的中頻噪聲源。通過安捷倫頻譜儀測試,該可調中頻噪聲源性能滿足要求。
[1]黃本雄,侯潔,胡海.高斯白噪聲發生器在FPGA中的實現[J].微計算機信息,2007,10(11):55-58.HUANG Ben-xiong,HOU Jie,HU Hai.The realization of gaussiannoisegeneratorin FPGA[J].Microcomputer Information,2007,10(11):55-58.
[2]谷曉枕,張民選.一種基于FPGA的高斯隨機數生成器的設計與實現[J].計算機學報,2011,34(1):165-173.GU Xiao-chen,ZHANGMin-xuan.Design and implementation of a FPGA based gaussian random number generator[J].Chinese Journal of Computers,2011,34(1):165-173.
[3]谷曉枕,張民選.多輸出外部反饋型LFSR均勻分布隨機數生成器的分析與設計[J].計算機工程與科學,2009,31(A1):80-83.GU Xiao-zhen,ZHANG Min-xuan.Multi-output fibonacci type LFSR based uniform random number generator:Design and Analysis.Computer Engineering and Science,2009,31(A1):80-83.
[4]Pierre L E.Maximally equidistributed combined tausworthe[J].Mathematics of Computation,1996,65(213):203-213.
[5]艾余雄,寇艷紅.一種基于FPGA的高斯白噪聲發生器的設計與實現[J].遙測遙控,2009,30(6):36-40.AI Yu-xiong,KOU Yan-hong.Design and implementation of gaussian noise generator by FPGA[J].Journal of Telemetry,Tracking and Command,2009,30(6):36-40.
[6]管宇,徐雷,徐建中.用FPGA產生高斯白噪聲序列的一種快速方法[J].電子元器件應用,2008,23(7-2):165-167.GUAN Yu,XU Lei,XU Jian-zhong.A method to generate gaussian sequences by FPGA[J].Electronic Component&Device Application,2008,23(7-2):165-167.
[7]韓慶喜.基于DVB-S標準的射頻調制器設計與FPGA實現[D].山東:山東大學電路與系統系,2010.
[8]王猛,呂衛祥.基于高速D/A AD9739的寬帶信號產生[J].雷達與對抗,2011,31(4):55-58.WANG Meng,LV Wei-xiang.The high-speed D/A AD9739-based wideband signal generation[J].Radar&ECM, 2011,31(4):55-58.
[9]Marc Defossez.Parallel LVDSHigh-Speed DAC Interface[R].America:XILINX,2012.
[10]程光偉,劉大偉.基于FPGA的異步FIFO的研究和設計[J].工業儀表與自動化裝置,2013(2):67-69,75.CHENG Guang-wei,LIU Da-wei.Research and design of asynchronous FIFO based on FPGA[J].Industrial Instrumentation&Automation,2013(2):67-69,75.