馬路,石立國,王竹剛
(中國科學(xué)院國家空間科學(xué)中心 北京 100190)
高斯白噪聲信號源是一種必不可少的通信信道模擬器。產(chǎn)生高斯白噪聲的途徑主要有物理和數(shù)字兩種方式。物理噪聲源雖然精度較高,但是不好控制。數(shù)字方式簡單快捷,便于控制參數(shù)。數(shù)字高斯白噪聲的產(chǎn)生方式很多,一般都是先產(chǎn)生均勻分布隨機數(shù),再通過一定的轉(zhuǎn)換獲得高斯隨機數(shù)。
文獻(xiàn)[1]利用Wallace算法生成均勻分布隨機數(shù),通過查找表獲得高斯白噪聲。文獻(xiàn)[2]利用Tausworthe算法產(chǎn)生均勻分布隨機數(shù),通過box-muller方法獲得高斯白噪聲。文獻(xiàn)[5]利用CASR和LFSR組合的方法獲得均勻分布隨機數(shù),通過函數(shù)映射法獲得高斯白噪聲。文獻(xiàn)[6]利用m序列產(chǎn)生均勻分布隨機數(shù),通過函數(shù)映射法獲得高斯白噪聲。
為了獲得長周期的均勻分布隨機數(shù),本文采用了文獻(xiàn)[2-3]提出的產(chǎn)生均勻分布隨機數(shù)的方法。由于產(chǎn)生的是32位的均勻分布隨機數(shù),如果采用文獻(xiàn)[1]的查找表法,則將耗費很多硬件資源,而文獻(xiàn)[3]的box-muller方法含有不便于FPGA實現(xiàn)的超越函數(shù),為此采用文獻(xiàn)[5-6]提出的函數(shù)映射法來獲得基帶高斯白噪聲。
調(diào)用ISE14.1中的FIRIP核,配置IP核為多系數(shù)(multiplecoefficent)模式,通過載入不同的濾波器系數(shù)獲得所需中心頻率和帶寬的中頻噪聲。
配置OSERDES2在DDR模式下,把KC705開發(fā)板產(chǎn)生的中頻噪聲通過LVDS接口輸出給AD9739-R2-EBZ開發(fā)板。
均勻分布隨機數(shù)的好壞直接影響所得到的高斯分布隨機數(shù)的性能。均勻分布隨機數(shù)產(chǎn)生器對高斯分布隨機數(shù)的影響主要有[2]:
1)周期。均勻分布隨機數(shù)的周期決定了高斯分布隨機數(shù)的周期。
2)位寬。均勻分布隨機數(shù)的位寬決定了可以產(chǎn)生的高斯隨機數(shù)的范圍和高斯隨機數(shù)的分辨率。
3)速度。產(chǎn)生均勻分布隨機數(shù)的速度不能低于高斯隨機數(shù)產(chǎn)生算法的硬件工作速度。
針對以上的問題。文中采用了一種改進(jìn)的Combined Tausworthe方法[2-3],這種基于矩陣思想設(shè)計的轉(zhuǎn)換邏輯的硬件結(jié)構(gòu),提高了均勻分布隨機數(shù)的產(chǎn)生速度。
為了產(chǎn)生周期足夠長的均勻分布隨機數(shù),文章采用了Combined Tausworthe[3]算法。
Combined Tausworthe隨機數(shù)生成器是由若干個Tausworthe隨機數(shù)生成器組合而成,每個Tausworthe隨機數(shù)生成器產(chǎn)生隨機數(shù)的公式如下
其中,s和L是正整數(shù),s是跳變步長,L是隨機數(shù)的輸出位寬。xj,ns+i-1是一個隨機數(shù),滿足線性遞歸模二和公式
其對應(yīng)的特征多項式為
當(dāng) P(z)為本原多項式時,輸出序列有最大周期:2k-1。P(z)通常取三項
且滿足:
0<2q<k,0<s≤k-q<k≤L,gcd(s,2k-1)=1
由J個Tausworthe隨機數(shù)生成器構(gòu)成的Combined Tausworthe隨機數(shù)生成器產(chǎn)生的(0,1)區(qū)間內(nèi)均勻分布的隨機數(shù)為
其中,xj,ns1+i-1是第j個Tausworthe隨機數(shù)生成器的輸出。
文獻(xiàn)[4]提供了Tausworthe隨機數(shù)生成器一種快速算法思想:令r=k-q。假設(shè)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。 此即為線性遞歸模二和算法。經(jīng)過一系列的移位和邏輯操作,舊的隨機數(shù)更新產(chǎn)生新的隨機數(shù)[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
采用文獻(xiàn)[4]提供的算法可以很容易地在FPGA上實現(xiàn)。然而,這種操作耗費的資源比較多,而且有冗余的步驟,為此文章引用了文獻(xiàn)[2]的改進(jìn)型的Combined Tausworthe算法。這種改進(jìn)型算法耗費的資源少,且非常適合在FPGA上實現(xiàn)。
在改進(jìn)型算法中,每個Tausworthe隨機數(shù)生成器由一個L位的寄存器和轉(zhuǎn)換邏輯A'構(gòu)成,寄存器中的每一位數(shù)據(jù)滿足式(2)的約束關(guān)系。轉(zhuǎn)換邏輯根據(jù)這一關(guān)系結(jié)合式(1)求出下一時刻的隨機數(shù)[2-3]。
式(2)的遞推關(guān)系用矩陣表示為
其中,Xj,n是當(dāng)前時刻的 L 位寄存器狀態(tài),Xj,n+1是下一時刻的狀態(tài)。A為轉(zhuǎn)換矩陣
其中,C1×L是特征多項式 P(z)的系數(shù)向量,I(L-1)(L-1)是一個單位矩陣,0(L-1)×1是一個零向量。
一次更新s位信息的轉(zhuǎn)換關(guān)系如下
最后,由J個這種結(jié)構(gòu)的Tausworthe隨機數(shù)生成器經(jīng)過異或操作得到Combined Tausworthe隨機數(shù)生成器。器硬件結(jié)構(gòu)如圖1。
J個Tausworthe隨機數(shù)發(fā)生器的構(gòu)成的Combined Tausworthe周期為[3]:
根據(jù)文獻(xiàn)[1]的周期搜索結(jié)果,表1列出了滿足“ME(Maximally Equidistributed)條件”的 3 種參數(shù)組合(kj,qj,sj)。
圖1 Combined Tausworthe隨機數(shù)生成器結(jié)構(gòu)Fig.1 Structure of combined Tausworhthe random number generator
隨機過程理論:給定任何隨機變量X的累積分布函數(shù)F(X),則 Y=F(X)是在(0,1)區(qū)間內(nèi)均勻分布的隨機變量,且與X的分布特征無關(guān)。
可以把Y看成是均勻分布,X看成是高斯分布,所以可以通過概率的方法可以獲得均勻分布與高斯分布之間的映射關(guān)系。
設(shè) X 服從[1,232-1]區(qū)間內(nèi)的均勻分布;Y 服從(0,1)的標(biāo)準(zhǔn)正態(tài)分布??紤]到FPGA硬件實現(xiàn),Y僅在[-4,4]之間取值。Y的概率密度為[5-6]:
則X→Y的映射算法如下:
1)計算每個高斯隨機數(shù)的概率。 對 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對應(yīng)的均勻分布隨機數(shù)的個數(shù)。高斯分布隨機數(shù)總個數(shù)。等于均勻分布隨機數(shù)的總個數(shù)L=232,則N(zi)=f(zi)×L即是每個高斯隨機數(shù)對應(yīng)的均勻隨機數(shù)的個數(shù)。
3)計算橫坐標(biāo)。 每個高斯分布隨機數(shù) zi(i=1,…,401)對應(yīng)的橫坐標(biāo)為:前一個zi-1對應(yīng)的橫坐標(biāo)位置Xi-1加上zi取值個數(shù)N(zi-1)-1。從第一個算起,則z1對應(yīng)橫坐標(biāo)上的X1點,z2對應(yīng)橫坐標(biāo)上的X1+N(X1)-1點,以此類推,zi對應(yīng)橫坐標(biāo)上的 Xi-1+N(Xi-1)-1點,一共 401個對應(yīng)點。
4)繪制映射曲線。 以 zi[-4,4]為縱坐標(biāo),以 Xi-1+N(Xi-1)-1為橫坐標(biāo)繪制均勻分布到高斯分布的映射曲線,如圖2。
圖2 均勻分布到高斯分布映射曲線Fig.2 Mapping curve of uniform distribution to Gaussian distribution
如果把3.1中的映射關(guān)系全部存入FPGA的ROM中,需要的空間大小為232-1=429 496 729 5,這是不可實現(xiàn)的。由于映射曲線在很大區(qū)間上表現(xiàn)為線性關(guān)系,所以可以用斜率不同的折線段分段逼近關(guān)系曲線。在一定精度的要求下,這種方法簡單易行,占用的硬件資源少,而且運算速度很快,適合在FPGA中實現(xiàn)。圖3是20段折線段逼近法得到的擬合關(guān)系曲線。
圖3 20段折線逼近映射曲線Fig.3 Mapping curve with 20 section broken line
濾波器的設(shè)計可以采用XILINX自帶的FIR IP核。要實現(xiàn)中心頻率和帶寬可調(diào),需要把該IP核配置成多系數(shù)(multiple-coefficent)模式。這樣可以使用MATLAB的fdatool工具生成一系列對應(yīng)的濾波器系數(shù),各組系數(shù)所采用的濾波器階數(shù)必須相同。把這一系列系數(shù)存在一個.coe文件中,通過IP核編輯界面將該文件導(dǎo)入IP核,同時設(shè)置“coefficient set”為對應(yīng)的濾波器組數(shù)。
本文使用了16組濾波器,每組濾波器都是200階,對應(yīng)一個中心頻率和一個帶寬。通過filter_sel端口來控制選通對應(yīng)的濾波器。對應(yīng)的濾波器框圖如圖4所示。相應(yīng)的系數(shù)組織形式如圖5所示。
圖4 重載系數(shù)FIR濾波器Fig.4 Overload coefficient filter
圖5 FIR系數(shù)組織形式Fig.5 Coefficients organization form
開發(fā)環(huán)境采用ISE14.1,開發(fā)板選用Kintex-7 FPGA KC705 Evaluation Kit,器件選用 XC7K325T-2FFG900,編程語言為VHDL。其硬件實現(xiàn)如圖6。
高斯白噪聲發(fā)生器包括兩個部分:均勻分布隨機數(shù)發(fā)生器模塊和均勻分布到高斯分布的映射模塊。
模塊中信號說明:point代表折線段的起點的橫坐標(biāo),point_value代表折線段起點的縱坐標(biāo),slope代表折線段的斜率。
算法流程:時鐘的上升沿,均勻分布隨機數(shù)發(fā)生器產(chǎn)生一個隨機數(shù)X,該隨機數(shù)隨即被送入一個比較器。在比較器中,隨機數(shù)X和20段折線的起點值point比較。當(dāng)確定該隨機數(shù)的取值范圍后,折線逼近法得到相應(yīng)的高斯隨機數(shù):
gauss=(X-point)×slope+poin_value_delay
其中point_value_delay是point_value的延時,因為前面的乘法運算有延時。
圖6 基帶高斯白噪聲FPGA結(jié)構(gòu)Fig.6 FPGA structure of baseband Gaussian noise
本設(shè)計中采用的DA為ADI公司的AD9739芯片,F(xiàn)PGA和DA之間的接口采用的是LVDS電平接口。AD9739包括兩個14位復(fù)用低壓差分信號(LVDS)輸入端口,該器件接受1/4DAC刷新速率的時鐘,在時鐘上升沿和下降沿均觸發(fā)轉(zhuǎn)換。輸入數(shù)據(jù)速率為1/2時鐘速率。本設(shè)計中時鐘信號DCI_P/DCI_N為2.4G,AD9739的工作時鐘由安捷倫的信號發(fā)生器提供。其中DCO_P/DCO_N輸出作為FPGA的系統(tǒng)時鐘,其頻率為600 MHz。為保證FPGA生成的數(shù)據(jù)傳到AD9739接口端與DCI_P/DCI_N時鐘相位對齊,時鐘產(chǎn)生方式必須同數(shù)據(jù)產(chǎn)生方式相同,均由OSERDES產(chǎn)生。FPGA與AD9739的接口設(shè)計如圖7所示[7-10。
圖7 接口結(jié)構(gòu)設(shè)計Fig.7 Interface structure
AD9739-R2-EZB開發(fā)板的2.4G系統(tǒng)時鐘由Aglient信號發(fā)生器提供,DA出來的中頻噪聲頻譜由Aglient的頻譜儀來分析。
圖8是系統(tǒng)產(chǎn)生的70 M中心頻率,20 M帶寬的中頻噪聲的頻譜。由圖可知,產(chǎn)生的中頻噪聲帶內(nèi)平坦度小于1 dBm,帶外衰減大于60 dBm,效果非常好。
圖8 噪聲源頻譜圖Fig.8 Spectrogram of Gaussian noise
文章采用Combined Tausworthe方法產(chǎn)生長周期的均勻分布隨機數(shù),通過曲線擬合的方法實現(xiàn)均勻分布到高斯分布的映射。利用可重載系數(shù)的FTR濾波器實現(xiàn)了參數(shù)可調(diào)的中頻噪聲源。通過安捷倫頻譜儀測試,該可調(diào)中頻噪聲源性能滿足要求。
[1]黃本雄,侯潔,胡海.高斯白噪聲發(fā)生器在FPGA中的實現(xiàn)[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的高斯隨機數(shù)生成器的設(shè)計與實現(xiàn)[J].計算機學(xué)報,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均勻分布隨機數(shù)生成器的分析與設(shè)計[J].計算機工程與科學(xué),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的高斯白噪聲發(fā)生器的設(shè)計與實現(xiàn)[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產(chǎn)生高斯白噪聲序列的一種快速方法[J].電子元器件應(yīng)用,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標(biāo)準(zhǔn)的射頻調(diào)制器設(shè)計與FPGA實現(xiàn)[D].山東:山東大學(xué)電路與系統(tǒng)系,2010.
[8]王猛,呂衛(wèi)祥.基于高速D/A AD9739的寬帶信號產(chǎn)生[J].雷達(dá)與對抗,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的研究和設(shè)計[J].工業(yè)儀表與自動化裝置,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.