0 引 言
偽噪聲序列(PN序列)可應(yīng)用于擴(kuò)頻通信,、信息加密,、計算機(jī)仿真等領(lǐng)域。PN序列發(fā)生器需要一個隨機(jī)信號源和一系列的離散,、量化算法及其硬件實現(xiàn)技術(shù),。確定性的混沌可以復(fù)制,具有長期不可預(yù)測性,,且很難區(qū)分一個信號是來自于非確定性系統(tǒng)還是混沌系統(tǒng),。因此,混沌滿足密碼系統(tǒng)設(shè)計的基本原則,利用混沌系統(tǒng)作為PN序列的信號源已引起了國內(nèi)外學(xué)者的廣泛關(guān)注與研究,。
基于Logistic映射產(chǎn)生PN序列已有不少研究,。文獻(xiàn)[7]利用模擬電路研究了其實現(xiàn)技術(shù),由于混沌對初值和參數(shù)的敏感性,,兩個模擬電路實現(xiàn)的PN序列,,其電路參數(shù)不可能完全匹配,且受環(huán)境條件的變化而出現(xiàn)失配現(xiàn)象,很難保證保密通信或信息加密中兩個PN序列的完全同步,。因此,,近年來開展了基于數(shù)字電路(如FPGA)的PN序列的實現(xiàn)研究,但現(xiàn)有的研究中大多進(jìn)行仿真實驗,,無法保證硬件實際輸出PN序列的產(chǎn)生及其性能的測試,。為此,基于FPGA技術(shù),,利用Logistic混沌映射作為隨機(jī)信號源對實現(xiàn)PN序列的硬件進(jìn)行了深入研究,,提取Logistic數(shù)值序列中二進(jìn)制數(shù)的某一位bi(bi∈{0,1})為PN數(shù)字序列,,實驗中獲得了硬件輸出序列,,并通過一個串口通信電路對硬件輸出序列進(jìn)行取樣,對其進(jìn)行序列統(tǒng)計性能分析,。分析結(jié)果表明,,基于Logistic的PN序列性能良好,滿足PN序列測試的標(biāo)準(zhǔn),。
1 Logistic映射
Logistic方程如下:
式中:Xn∈(0,,1);μ∈(0,,4),,當(dāng)μ取值[3.571 448,4]時,,Logistic映射進(jìn)入混沌態(tài),,并表現(xiàn)出復(fù)雜的動力學(xué)特性。在此取μ=4,,令Xn的初值Xo=O.312 5,則xn的時間序列和吸引子相圖如圖1所示,。
2 Logistic映射的電路設(shè)計及時間序列的量化
DSP Builder,。將Matlab和Simlalink系統(tǒng)級設(shè)計工具的算法開發(fā)、仿真和驗證功能與VHDL綜合,、仿真和開發(fā)工具整合在一起,,實現(xiàn)了這些工具的集成,將系統(tǒng)級設(shè)計的實現(xiàn)與DSP算法的開發(fā)相鏈接,,涵蓋了算法和存儲功能等基本操作,。可利用DSP Builder模塊迅速生成算法硬件電路,,并轉(zhuǎn)成VHDL語言,,大大縮短了FPGA的設(shè)計周期。圖2為Logistic的DSP Builder電路實現(xiàn)模型。
圖2中為消除毛刺,,在各輸出端加入了一個延時器,。其中,xout為Xn+1的時間序列,;yout為其延時一個時鐘周期后的輸出,,即Xo。xout與yout都是以二進(jìn)制數(shù)表示的一系列小數(shù)(xn∈(0,,1)),,可表示為:
因為時間序列Xn的數(shù)值是用二進(jìn)制數(shù)表示的,隨著迭代的不斷進(jìn)行,,Xn將隨之變化,,此時其二進(jìn)制表示中的某一位(O或1)也隨之變化。因此可以提取Xn時間序列中某一位二進(jìn)制位作為量化值,,當(dāng)Xn的時間序列值隨時間變化時即生成一PN序列,。圖2中的XoutBit為PN序列的輸出端,它取自Xn二進(jìn)制數(shù)表示中的第9位,。后面的分析表明,,這種量化方法同樣具有很好的混沌性能和隨機(jī)性。
為了驗證圖2電路模塊的正確性,,對Logistic的模塊電路進(jìn)行仿真,,其時間序列和吸引子如圖3所示。比較圖3和圖1發(fā)現(xiàn),,利用DSP Builder設(shè)計的電路有效地實現(xiàn)了Logistic映射的功能,。
3 基于FPGA的PN序列實現(xiàn)
圖2中,xout與yout具有相同的k及l(fā)值,,k=1,,l=9,即k+l=10,。因為所使用的FPGA開發(fā)板自帶THS5651DA轉(zhuǎn)換器接受的是10引腳數(shù)據(jù),,k+l=10可實現(xiàn)匹配。盡管xout在最后輸出前轉(zhuǎn)成了10位長度,,但在整個內(nèi)部運算環(huán)節(jié),,是50位長度的,有限字長明顯大于10,,這樣可以最大限度地保持精度,,減少有限字長效應(yīng)帶來的誤差,有效實現(xiàn)混沌的非周期特性,。
理論上混沌序列是非周期的,,但因為在使用有限字長表示混沌狀態(tài)的情況下,,加上運算結(jié)果的近似化,混沌序列最終會演化為一個周期序列,。但是可以通過加長有限字長來延長周期,。從實用的角度看,只要設(shè)計得好,,映射和分叉參數(shù)選擇合適,,所產(chǎn)生的序列周期將足夠長,序列的相關(guān)特性將足夠好,,可用的序列數(shù)量將足夠多,,可認(rèn)為位轉(zhuǎn)換就已夠用,因為通信的時間不可能無限長,。研究還發(fā)現(xiàn),,混沌映射產(chǎn)生的有限字長周期序列具有正的最大Lyapllnov指數(shù)。
將圖2所示的圖形化模塊通過“Signal Corepiler”直接轉(zhuǎn)化為硬件描述語言,,再利用QuartusⅡ進(jìn)行編譯,,其仿真時序圖見圖4。其中,,Output為抽取的混沌數(shù)字PN序列,,即圖2中的XoutBit;Outputl和Output2分別為Xn+1和Xn,。
把工程文件在CycloneⅡ的EP2C35F484C8進(jìn)行編譯和引腳分配并下載到該芯片進(jìn)行硬件實驗,,從數(shù)字示波器上觀察到的PN序列如圖5(a)所示。為了驗證硬件實現(xiàn)的精度,,通過THS5651芯片對得到的混沌數(shù)字信號進(jìn)行D/A轉(zhuǎn)化,,再通過示波器觀察其時間序列和吸引子,如圖5(b),,圖5(c)所示,。
4 PN序列隨機(jī)性分析
為了對硬件輸出的PN序列進(jìn)行性能測試,首先通過一個串口通信模塊電路對FPGA輸出的數(shù)字PN序列進(jìn)行采樣,,然后利用計算機(jī)對其進(jìn)行隨機(jī)性能分析,。這里采用的FPGA開發(fā)板其內(nèi)核為CycloneⅡ的EP2(235F484C8,外圍電路提供了USB口,、并行I/O以及串口等一系列可供用戶選擇的端口。抽取Xn二進(jìn)制表示的小數(shù)部分的第9位作為比特序列,,并通過串口來實時獲得該位在一定時間段t內(nèi)的所有值,,其串口通信模塊電路如圖6所示。
為了確保計算機(jī)在接收該序列時不出現(xiàn)比特丟失現(xiàn)象,,可預(yù)先向計算機(jī)發(fā)送一組周期序列來保證數(shù)據(jù)的可靠性,。假設(shè)串口傳輸波特率為9 600,系統(tǒng)晶振為20 MHz,為了得到整數(shù)倍的分頻,,可根據(jù)公式:
n=(20×106×k)/9600
令k=3,,則可得出n為6 250。其中,,比例因子k可通過鎖相環(huán)來獲得,。上述兩步驟可通過在QuartusⅡ中添加鎖相環(huán)代碼與分頻器代碼實現(xiàn)。此時,,讓系統(tǒng)時鐘T=1/9 600再經(jīng)過二分頻后通過串口輸出,,如果在接收端收到“01010”的周期序列,則表明FPGA與計算機(jī)之間的通信無問題,。
5 PN序列隨機(jī)性能分析
5.1 頻率測試(Frequency Test)
該測試可用來判斷序列當(dāng)中0和1的個數(shù)是否近似相等,,若近似相等,則符合隨機(jī)序列的必要條件,。令n0,n1分別代表0與1的個數(shù),;n代表序列s的長度。
該統(tǒng)計方程為:
T1=(n0-n1)2/n
若n≥lO,,則T1近似符合1維自由度的x2分布,。
對采集到的PN序列進(jìn)行自由度為l的x2檢驗,取顯著性水平α=0.05,,可以從標(biāo)準(zhǔn)表中查到顯著性水平a=O.05的x2值為3.84,。如果T1值小于3.84,則該序列通過測試,。n0,n1和T1的測試值如表l所示,,由此可知,該序列的T1值遠(yuǎn)小于3.84,,通過測試,。
5.2 串列測試(Serial Test)
該測試可用來判斷序列中00,01,,10,,11子序列的個數(shù)是否近似相等。若近似相等,,則符合隨機(jī)序列的必要條件,。令n0,n1分別代表0與1的個數(shù),而n00,n01,n10,,n11分別代表s序列中00,,01,10,,11的個數(shù),。由于n00+n01+no+nll=n-l,,該統(tǒng)計方程為:
若n≥21,則T2近似符合2維自由度的x2分布,。對序列進(jìn)行自由度為2的x2檢驗,。顯著性水平α置為O.05,查標(biāo)準(zhǔn)表得此時的x2值為5.99,。測試結(jié)果如表2所示,,T2=O.352 5《5.99,通過測試,。
5.3 Poker測試(Poker Test)
令m為符合(n/m)≥5×2m的正整數(shù),,并令k=n/m。將序列s分成k個不重復(fù)的部分,,每部分的長度為m,,令ni為第i個長度為m的序列標(biāo)號,1≤i≤2m,。Poker測試可用來確定ni在序列s中,,長度為m的各個不同子序列出現(xiàn)的概率是否近似相等。該統(tǒng)計方程為:
式中:T3近似符合2m-1維自由度的x2分布,。值得注意的是,,頻率測試其實是Poker測試的一個特例,令m=1,,Poker測試即成為了頻率測試,。分別取m=1,2,,3,,4,5,,6,,對待測序列進(jìn)行自由度為2m-1的x2檢驗,結(jié)果列于表3,。由表3可見,,對于不同m值的T3值均小于對應(yīng)的x2值,通過測試,。
5.4 游程測試(RLins Test)
該測試的目的是為了判斷s序列中不同長度的游程是否具有隨機(jī)序列的游程特性,。理論上,在一個長度為n隨機(jī)序列中,,長度為i的連續(xù)O或連續(xù)1的期望值為ei=(n—i+3)/2i+2,。令k為當(dāng)ei≥5時的最大的i;Bi,,Gi分別為各個block和gap的個數(shù),。游程測試的統(tǒng)計方程為:
則T4近似符合2k-2維自由度的χ2分布。
分別取i為1,,2,,3,4,,5,,6,7,,8,,9。對本序列,,k值為9,,所以可對T4進(jìn)行自由度為16的χ2檢驗。查標(biāo)準(zhǔn)表知自由度為16的χ2值為26.3,。將上述數(shù)值代人統(tǒng)計方程,,運算得T4=19.883 1<26.3,通過測試,。其測試結(jié)果如表4所示,。
5.5 自相關(guān)測試(Autocorrelation Test)
該測試是為了檢測s序列與其(非循環(huán)的)移動后的序列的相關(guān)性。令d為一個整數(shù),,1≤d≤(n/2),。比較s序列和它移動d位之后的序列,兩者不同的位的數(shù)目可由計算得出,。⊕表異或運算,。自相關(guān)測試的統(tǒng)計方程為:
當(dāng),n-d≥10時,,T5近似符合N(O,,1)分布。
為判斷序列是否符合N(O,,1)分布,,可用余誤差函數(shù)計算再將erfc(z)與顯著性水平α=O.05比較,若大于它,,則通過測試,,測試結(jié)果如表5所示。由檢驗結(jié)果可知,,每一個erfc(z)都大于a,,通過測試。
6 結(jié) 語
利用Logistic混沌映射作為隨機(jī)信號源,,基于FP-GA技術(shù)研究了PN序列的硬件產(chǎn)生,。通過對產(chǎn)生的PN序列進(jìn)行性能分析發(fā)現(xiàn),,其具有很好的隨機(jī)性,可被應(yīng)用于擴(kuò)頻通信和數(shù)字信息加密等領(lǐng)域,。由于直接以離散混沌作為隨機(jī)信號源,,相對于將連續(xù)混沌離散化后再量化產(chǎn)生PN序列,其精確度更高,。由于數(shù)字序列是通過抽取二進(jìn)制數(shù)值中某一位產(chǎn)生的,,只要迭代值的位數(shù)足夠多,序列的可變性就更大,,從而增大了密鑰空間和通信的保密性,。