蔡俊暉,潘明海
(南京航空航天大學(xué) 電子信息工程學(xué)院 雷達(dá)成像與微波光子技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,南京 211106)
使用數(shù)字射頻存儲(chǔ)器(Digital Radio Frequency Memory,DRFM)對(duì)雷達(dá)系統(tǒng)進(jìn)行半實(shí)物仿真時(shí),除了需要模擬雷達(dá)探測(cè)真實(shí)目標(biāo)的回波信號(hào)外,各種服從復(fù)雜函數(shù)分布的噪聲信號(hào)、干擾信號(hào),以及雜波信號(hào)也是雷達(dá)回波信號(hào)中重要的一部分[1-2]。
信號(hào)在傳輸過程中易受雷達(dá)系統(tǒng)內(nèi)外部噪聲和環(huán)境雜波的干擾,從而影響雷達(dá)系統(tǒng)性能,而雷達(dá)噪聲信號(hào)干擾和雜波模擬的實(shí)質(zhì)就是要求產(chǎn)生具有一定概率分布和功率分布的相關(guān)序列[2]。
噪聲信號(hào)同樣在噪聲雷達(dá)的波形設(shè)計(jì)中應(yīng)用廣泛[3-5],使用噪聲信號(hào)波形作為雷達(dá)探測(cè)信號(hào)具有很強(qiáng)的抗干擾性和低截獲性。因此考慮到噪聲信號(hào)在雷達(dá)系統(tǒng)應(yīng)用中的實(shí)際需求,快速產(chǎn)生高精度、服從多種函數(shù)分布噪聲信號(hào)具有重要意義。由于現(xiàn)場(chǎng)可編程技術(shù)的發(fā)展,基于硬件的噪聲信號(hào)生成方法因其相比軟件生成方法具有巨大優(yōu)勢(shì)而受到廣泛關(guān)注。本文提出了一種基于現(xiàn)場(chǎng)可編程邏輯器件(Field Programmable Gate Array,FPGA)的實(shí)時(shí)高精度噪聲信號(hào)產(chǎn)生方法,與其他文獻(xiàn)相比,在占用較少硬件資源的情況下能夠快速產(chǎn)生多種不同分布的高精度隨機(jī)噪聲序列,不僅可以用來模擬信號(hào)傳輸過程中的噪聲和雜波信號(hào),同時(shí)由于其實(shí)質(zhì)是按照一定算法產(chǎn)生的偽隨機(jī)序列,也為噪聲雷達(dá)信號(hào)波形的設(shè)計(jì)提供了選擇。
復(fù)雜分布噪聲存在于雷達(dá)系統(tǒng)各個(gè)環(huán)節(jié)。雷達(dá)接收的真實(shí)回波信號(hào)x(t)可由公式(1)給出:
式中:S(t)為散射回波;N(t)為噪聲;C(t)為雜波。高斯噪聲是雷達(dá)系統(tǒng)中最普遍的噪聲,接收機(jī)內(nèi)外部噪聲以及地雜波起伏特性一般都符合高斯分布。雜波的統(tǒng)計(jì)特性多種多樣,一般有瑞利分布、對(duì)數(shù)正態(tài)分布、K分布等[6]。本文實(shí)際產(chǎn)生了五種典型分布的隨機(jī)序列,分別是均勻分布隨機(jī)序列、指數(shù)分布隨機(jī)序列、高斯分布隨機(jī)序列、瑞利分布隨機(jī)序列以及萊斯分布隨機(jī)序列。
在FPGA上產(chǎn)生的隨機(jī)序列可以分為真隨機(jī)序列和偽隨機(jī)序列。真隨機(jī)序列可以滿足任何隨機(jī)性的統(tǒng)計(jì)檢驗(yàn),但是在FPGA上產(chǎn)生真正的隨機(jī)序列是十分耗費(fèi)時(shí)間和資源的。偽隨機(jī)序列看起來是隨機(jī)的,但其實(shí)這種序列是由某種特定的算法生成,仍然具有一定的重復(fù)周期,但當(dāng)重復(fù)周期非常大時(shí),雷達(dá)脈沖周期與其相比可以認(rèn)為這種偽隨機(jī)序列是隨機(jī)、不具備周期性的。
線性反饋移位寄存器(Linear Feedback Shift Register,LFSR)是FPGA中產(chǎn)生均勻分布偽隨機(jī)序列常用的一種工具。典型的4位LFSR硬件結(jié)構(gòu)如圖1所示,通過邏輯門電路設(shè)定圖中的反饋支路,該4位寄存器可以遍歷除四位全為0以外的其他4位二進(jìn)制序列,并且每個(gè)序列在一個(gè)周期內(nèi)只出現(xiàn)一次。因此可以增加LFSR的位數(shù),產(chǎn)生周期更長(zhǎng)的偽隨機(jī)序列,N位LFSR的最長(zhǎng)序列周期是2N-1。利用上述結(jié)構(gòu),設(shè)計(jì)兩個(gè)32位的LFSR。FPGA時(shí)鐘工作頻率f為312.5 MHz,因此兩個(gè)32位LFSR的周期為232×232×1/f≈683 217天,遠(yuǎn)大于雷達(dá)的脈沖周期,可以認(rèn)為產(chǎn)生的偽隨機(jī)序列是“真隨機(jī)”的,因此在下文中提到的均勻隨機(jī)序列都將認(rèn)為是真隨機(jī)序列。
圖1 四位LFSR的硬件結(jié)構(gòu)
32位LFSR易在FPGA上實(shí)現(xiàn),能夠產(chǎn)生可被認(rèn)為是真隨機(jī)的均勻分布隨機(jī)序列,但是其32位的數(shù)據(jù)長(zhǎng)度會(huì)急劇增加FPGA實(shí)時(shí)計(jì)算難度,尤其是乘法運(yùn)算。因此必須縮小均勻隨機(jī)數(shù)的數(shù)據(jù)長(zhǎng)度來保證實(shí)時(shí)性,但不能改變數(shù)據(jù)的均勻分布特性。這里截取32位LFSR前20位來減少數(shù)據(jù)長(zhǎng)度,將截取的數(shù)據(jù)進(jìn)行數(shù)值分析。圖2中展示了未截取32位LFSR和截取的20位LFSR的數(shù)據(jù)分布特性,從圖中可以看出,通過此方法截取產(chǎn)生的均勻隨機(jī)序列在延長(zhǎng)其序列周期的情況下,其概率分布特性仍然保持了較好的均勻分布特性。
圖2 未截取32位LFSR與截取20位LFSR分布特性對(duì)比
FPGA便于實(shí)現(xiàn)定點(diǎn)運(yùn)算,不易實(shí)現(xiàn)小數(shù)運(yùn)算,因此直接產(chǎn)生服從各種復(fù)雜分布函數(shù)的隨機(jī)序列是比較困難的,需要從另外的角度來考慮生成隨機(jī)數(shù)據(jù)。本文從概率密度函數(shù)方面進(jìn)行隨機(jī)序列的生成,主要有Ziggurat算法、Wallace算法和Box-Muller算法。Ziggurat算法是一種經(jīng)典的拒絕采樣方法,但是其數(shù)據(jù)輸出速率不是連續(xù)的,不利于硬件仿真[7]。Box-Muller算法是一種速度快、步驟少、便于硬件實(shí)現(xiàn)的算法,在各種文獻(xiàn)中被廣泛引用[4,9-12]。Wallace算法由于其自身反饋結(jié)構(gòu)的原因,會(huì)使得部分?jǐn)?shù)據(jù)之間會(huì)產(chǎn)生相關(guān)性。因此,本文采用了Box-Muller算法。該算法僅需通過四種數(shù)學(xué)運(yùn)算就可以將均勻分布的隨機(jī)數(shù)轉(zhuǎn)換成服從高斯分布的隨機(jī)數(shù)。該算法可由公式(2)和公式(3)表示:
式中:u0與u1是兩組獨(dú)立的(0,1)之間均勻分布的隨機(jī)序列。將u0與u1進(jìn)行上述公式中的計(jì)算,得到兩組獨(dú)立的均值為0、方差為1的高斯分布隨機(jī)序列x0與x1,即x0~N(0,1),x1~N(0,1),其概率密度分布函數(shù)為
高斯分布的隨機(jī)序列為產(chǎn)生瑞利分布、萊斯分布以及指數(shù)分布的隨機(jī)序列提供了基礎(chǔ)。
根據(jù)定義:當(dāng)一個(gè)隨機(jī)二維向量的兩個(gè)分量呈獨(dú)立的、均值為0、有著相同方差的正態(tài)分布時(shí),這個(gè)向量的模呈瑞利分布。即當(dāng)且x0~N(ucosθ,σ2),x1~N(usinθ,σ2)時(shí),則x~其概率密度分布函數(shù)為
由公式(2)與公式(3)可以看出,Box-Muller算法中產(chǎn)生的兩組高斯數(shù)據(jù)x0與x1是相互正交的,所以公式(2)或公式(3)中的計(jì)算所得的隨機(jī)序列是直接服從瑞利分布的隨機(jī)序列。
根據(jù)定義:當(dāng)一個(gè)隨機(jī)二維向量的兩個(gè)分量呈獨(dú)立的、均值不同、方差相同的正態(tài)分布時(shí),這個(gè)向量的模呈萊斯分布。即當(dāng)x0~N(ucosθ,σ2)且x1~N(usinθ,σ2),若,則σ2),其中u和θ為任意實(shí)數(shù)。其概率密度分布函數(shù)為
根據(jù)定義:u是服從均勻分布的隨機(jī)變量,那么如果x=-ln(u)/λ,λ為任意實(shí)數(shù),則x服從于指數(shù)分布,即x~E(λ),其概率密度分布函數(shù)為
根據(jù)Box-Muller算法以及上述復(fù)雜分布函數(shù)定義,可以總結(jié)出:首先產(chǎn)生服從均勻分布的隨機(jī)序列,通過有限的數(shù)學(xué)計(jì)算,即可得到多種服從不同分布函數(shù)的隨機(jī)序列。將運(yùn)算過程總結(jié)成圖3所示的流程圖,只需添加一個(gè)多路復(fù)用器,就可以實(shí)時(shí)切換選擇不同概率分布的噪聲信號(hào)輸出。下文將詳細(xì)介紹流程圖中主要運(yùn)算模塊的原理以及在FPGA上的實(shí)現(xiàn)方法。
圖3 基于Box-Muller算法流程圖
圖3中流程主要包含對(duì)數(shù)、平方根、乘加以及三角函數(shù)四種數(shù)學(xué)計(jì)算。乘法運(yùn)算以及加法運(yùn)算易在FPGA上實(shí)現(xiàn),而對(duì)數(shù)函數(shù)運(yùn)算、平方根運(yùn)算以及三角函數(shù)運(yùn)算在FPGA上實(shí)現(xiàn)較為復(fù)雜,目前常用的方法有查表法、分段多項(xiàng)式近似法和坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算(Coordinate Rotation Digital Computer,CORDIC)法[9]。查表法精度最高,速度最快,但由于本文計(jì)算精度都非常高,如果使用查表法必然會(huì)耗費(fèi)大量存儲(chǔ)資源。分段多項(xiàng)式的硬件實(shí)現(xiàn)較為復(fù)雜,需要使用多級(jí)乘法器,會(huì)帶來較大的延遲,不利于信號(hào)的實(shí)時(shí)計(jì)算。CORDIC算法是一種用于計(jì)算復(fù)雜函數(shù)的循環(huán)迭代算法,用一系列與運(yùn)算基數(shù)相關(guān)角度的不停擺動(dòng),逼近所需旋轉(zhuǎn)的角度,將復(fù)雜的算法分解成加法、移位等易在硬件上實(shí)現(xiàn)的操作。因此為了能完成復(fù)雜函數(shù)的快速計(jì)算,降低延遲,提高系統(tǒng)的實(shí)時(shí)性,本文選擇使用CORDIC算法。CORDIC IP核是FPGA開發(fā)軟件提供的IP核,利用CORDIC算法能夠?qū)崿F(xiàn)平方根、正余弦以及反雙曲正切函數(shù)的計(jì)算,但CORDIC IP核對(duì)數(shù)據(jù)的輸入范圍有嚴(yán)格要求,超過輸入范圍外的數(shù)據(jù)會(huì)得到錯(cuò)誤的數(shù)據(jù),因此在實(shí)時(shí)計(jì)算時(shí)需要對(duì)輸入的數(shù)據(jù)進(jìn)行調(diào)整來滿足輸入要求,以便得到高精度的計(jì)算結(jié)果。
對(duì)數(shù)函數(shù)運(yùn)算不能直接用CORDIC算法來實(shí)現(xiàn),考慮到雙曲正切函數(shù)的表達(dá)式為
因此其反函數(shù)為
令
將其帶入式(9),可得
因此可以利用這個(gè)等式來實(shí)現(xiàn)Box-Muller算法中第一步的對(duì)數(shù)計(jì)算。設(shè)置兩個(gè)新的變量t1=x-1和t2=x+1,x是LFSR產(chǎn)生的在(0,1)之間均勻分布隨機(jī)序列1,最小值為2,對(duì)應(yīng)的對(duì)數(shù)函數(shù)值-13.863。但是由于CORDIC IP核能夠正確計(jì)算雙曲正切函數(shù)的數(shù)據(jù)輸入范圍是0.106 85<x<2,因此需要對(duì)第一步產(chǎn)生的均勻分布隨機(jī)序列進(jìn)行放大,如式(12)所示:
式中:m是使數(shù)據(jù)左移到數(shù)據(jù)的小數(shù)點(diǎn)后第一位為1的正整數(shù)。此時(shí),CORDIC IP核能夠正確計(jì)算出放大后數(shù)據(jù)的函數(shù)值,最后減去mln 2即可得到正確的原輸入數(shù)據(jù)的對(duì)數(shù)函數(shù)值。通過此方法進(jìn)行對(duì)數(shù)運(yùn)算,得到5位有符號(hào)整數(shù)位、20位小數(shù)位的二進(jìn)制補(bǔ)碼數(shù)據(jù),其數(shù)值范圍是[-13.86,0]。
CORDIC算法同時(shí)能實(shí)現(xiàn)求平方根的運(yùn)算。將對(duì)數(shù)運(yùn)算計(jì)算出的值乘-2,得到的隨機(jī)序列數(shù)值范圍為[0,27.72],但是由于CORDIC IP核只能正確計(jì)算[0,2)范圍內(nèi)平方根的運(yùn)算,因此需要對(duì)輸入數(shù)據(jù)進(jìn)行縮小,否則直接計(jì)算會(huì)得到錯(cuò)誤數(shù)據(jù),如式(13)所示:
由于需要計(jì)算的數(shù)值范圍是[0,27.72],整數(shù)部分需要5位二進(jìn)制數(shù)來表示,因此將數(shù)據(jù)左移4位后即可得到[0,2)的數(shù)據(jù),帶入求出平方根數(shù)值,最后再將求出數(shù)據(jù)的右移兩位即可,得到無符號(hào)3位整數(shù)位、20位小數(shù)位的二進(jìn)制補(bǔ)碼數(shù)據(jù),其數(shù)值范圍是[0,5.265]。
CORDIC算法最易實(shí)現(xiàn)三角函數(shù)的計(jì)算。將產(chǎn)生的均勻分布隨機(jī)序列2與2π相乘,得到[0,2π]內(nèi)隨機(jī)分布的相位。CORDIC IP核相位輸入要求是[-π,π],因此需要對(duì)隨機(jī)分布的相位進(jìn)行調(diào)整。根據(jù)三角函數(shù)的性質(zhì),對(duì)于相位在[π,2π]的隨機(jī)相位,只需要減去2π然后進(jìn)行三角計(jì)算即可得到正確的三角函數(shù)值。通過此方法計(jì)算得到2位有符號(hào)整數(shù)位、20位小數(shù)位的二進(jìn)制三角函數(shù)值,其數(shù)值范圍是[-1,1]。
本文中,所有函數(shù)計(jì)算的數(shù)據(jù)都保留到二進(jìn)制小數(shù)位20 b(9.536×10-7)來保證數(shù)據(jù)精度,避免影響生成數(shù)據(jù)的分布特性,同時(shí)20位的小數(shù)精度能夠根據(jù)需求自適應(yīng)調(diào)節(jié)DAC芯片輸入有效位數(shù),產(chǎn)生相對(duì)幅度不同的噪聲信號(hào)。實(shí)現(xiàn)上述高精度計(jì)算模塊之后,利用握手信號(hào)來同步隨機(jī)序列在各模塊之間連續(xù)計(jì)算,以此來提高信號(hào)實(shí)時(shí)產(chǎn)生速率。
噪聲信號(hào)實(shí)時(shí)發(fā)生器的結(jié)構(gòu)如圖4所示。噪聲發(fā)生器根據(jù)上位機(jī)的指令實(shí)時(shí)產(chǎn)生五種分布的隨機(jī)序列,同時(shí)脈沖發(fā)生器可以根據(jù)需求產(chǎn)生脈沖回波信號(hào)或者連續(xù)信號(hào),進(jìn)而產(chǎn)生服從復(fù)雜分布噪聲的雷達(dá)回波信號(hào),為雷達(dá)性能測(cè)試和噪聲雷達(dá)波形設(shè)計(jì)提供目標(biāo)信號(hào)。
圖4 實(shí)時(shí)噪聲信號(hào)產(chǎn)生框圖
FPGA芯片使用了Xilinx XC7VX415T,此款芯片足以滿足本設(shè)計(jì)的需要。利用Verilog HDL語言實(shí)現(xiàn)上述所有功能模塊,然后按照?qǐng)D3的處理流程在FPGA上進(jìn)行綜合。設(shè)置圖3中的參數(shù)λ=1、v=0、u1=u2=0或u1=0.8、u2=0.6。用Isim軟件監(jiān)視仿真生成的數(shù)據(jù),如圖5所示。從圖中可以看出,基于本文的快速實(shí)時(shí)算法在上位機(jī)下達(dá)的使能信號(hào)有效后,立即得到紅色服從均勻分布的隨機(jī)序列,30個(gè)時(shí)鐘周期得到灰色服從指數(shù)分布的隨機(jī)序列,60個(gè)時(shí)鐘周期后得到黃色服從高斯分布的隨機(jī)序列,90個(gè)時(shí)鐘周期之后得到藍(lán)色服從瑞利(u1=u2=0)或萊斯(u1=0.8,u2=0.6)分布的隨機(jī)序列。整個(gè)算法延遲低,實(shí)時(shí)性高。
圖5 仿真生成的四種隨機(jī)信號(hào)序列
在DRFM開發(fā)板上進(jìn)行試驗(yàn)。FPGA芯片頻率工作在312.5 MHz,通過8路并聯(lián)的方法,噪聲信號(hào)實(shí)時(shí)產(chǎn)生速率可達(dá)2.5 GHz,與DAC芯片工作頻率一致。如有需要,可以通過并行更多通道數(shù)實(shí)現(xiàn)更高速度的數(shù)據(jù)實(shí)時(shí)產(chǎn)生速率。算法硬件開發(fā)平臺(tái)如圖6所示。
圖6 DRFM開發(fā)板卡
由于均勻分布序列的特性前文已經(jīng)給出,這里使用Chipscope Pro抓取后四種分布數(shù)據(jù)各106個(gè),圖7給出了各種分布數(shù)據(jù)樣本的幅度圖。
圖7 數(shù)據(jù)樣本幅度圖
在數(shù)字系統(tǒng)中,數(shù)值需要被量化到有限精度,因此在本文中,數(shù)據(jù)位數(shù)的截?cái)鄷?huì)帶來量化誤差。均勻分布小數(shù)位的精度決定了各種分布噪聲的最大值,均勻分布序列的最小值為2-20,則理論高斯噪聲最大值為5.26σ,其中σ為高斯分布的標(biāo)準(zhǔn)差,這是誤差的主要來源。
為了評(píng)估生成隨機(jī)序列的概率密度分布情況和誤差,首先利用Matlab將采集到的數(shù)據(jù)進(jìn)行分析,圖8~11中分別使用直方圖展示了硬件產(chǎn)生的指數(shù)分布、高斯分布、瑞利分布和萊斯分布隨機(jī)序列的概率分布情況,同時(shí)在每幅圖中擬合了各種概率密度函數(shù)理想情況下的曲線??梢钥闯?本文方法產(chǎn)生的復(fù)雜函數(shù)分布的隨機(jī)序列直方圖能夠精準(zhǔn)地符合理想的四種復(fù)雜函數(shù)的概率密度函數(shù)(Probability Density Function,PDF)。
圖8 產(chǎn)生指數(shù)分布序列樣本與理想指數(shù)分布PDF對(duì)比
圖9 產(chǎn)生高斯分布序列樣本與理想高斯分布PDF對(duì)比
圖10 產(chǎn)生瑞利分布序列樣本與理想瑞利分布PDF對(duì)比
圖11 產(chǎn)生萊斯分布樣本與理想萊斯分布PDF對(duì)比
對(duì)生成四種序列的均值和方差進(jìn)行分析并與理想情況下的均值和方差進(jìn)行對(duì)比,結(jié)果如表1所示。從表中可以看出,生成的四種隨機(jī)分布序列的均值與方差均的誤差均優(yōu)于0.1%,數(shù)據(jù)精度高。
表1 生成數(shù)據(jù)誤差分析
所提方法的算法流程綜合后硬件資源占用情況與其他文獻(xiàn)對(duì)比如表2所示。文獻(xiàn)[11]僅能產(chǎn)生高斯分布序列,應(yīng)用場(chǎng)景有限。相比文獻(xiàn)[4]多產(chǎn)生萊斯分布序列,本文在產(chǎn)生多種分布隨機(jī)序列的情況下整體資源利用率更低,并且本文給出了具體的實(shí)時(shí)產(chǎn)生速率,最遲90個(gè)時(shí)鐘周期就能得到多種服從復(fù)雜函數(shù)分布的隨機(jī)序列,因而具有較高的實(shí)時(shí)性。
表2 硬件資源占用情況
本文提出了一種基于FPGA的高精度雷達(dá)噪聲信號(hào)產(chǎn)生方法,重點(diǎn)闡述了不同函數(shù)分布噪聲信號(hào)的產(chǎn)生原理以及高精度復(fù)雜函數(shù)的實(shí)時(shí)高精度計(jì)算方法,并對(duì)該方法的實(shí)際效果進(jìn)行了實(shí)驗(yàn)驗(yàn)證。實(shí)測(cè)結(jié)果表明,本文提出的方法在占用極少的FPGA資源的情況下,利用CORDIC算法完成復(fù)雜函數(shù)的快速計(jì)算,能夠?qū)崟r(shí)產(chǎn)生速率為2.5 GHz的多種高精度復(fù)雜函數(shù)分布隨機(jī)信號(hào),為DRFM系統(tǒng)進(jìn)行雷達(dá)回波仿真提供高精度噪聲信號(hào),操控簡(jiǎn)單,可用于測(cè)試?yán)走_(dá)系統(tǒng)在不同噪聲干擾以及雜波環(huán)境下的性能檢測(cè)或噪聲雷達(dá)波形設(shè)計(jì),具有廣闊的應(yīng)用前景。后續(xù)將進(jìn)一步研究不同幅度以及不同類型噪聲對(duì)DRFM系統(tǒng)模擬雷達(dá)回波性能的實(shí)際影響。