基于Logistic映射PN序列的FPGA實現(xiàn)
偽噪聲序列(PN序列)可應(yīng)用于擴頻通信、信息加密、計算機仿真等領(lǐng)域。PN序列發(fā)生器需要一個隨機信號源和一系列的離散、量化算法及其硬件實現(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混沌映射作為隨機信號源對實現(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ā)相鏈接,涵蓋了算法和存儲功能等基本操作??衫肈SP 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位。后面的分析表明,這種量化方法同樣具有很好的混沌性能和隨機性。
為了驗證圖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)所示。
[!--empirenews.page--]4 PN序列隨機性分析
為了對硬件輸出的PN序列進(jìn)行性能測試,首先通過一個串口通信模塊電路對FPGA輸出的數(shù)字PN序列進(jìn)行采樣,然后利用計算機對其進(jìn)行隨機性能分析。這里采用的FPGA開發(fā)板其內(nèi)核為CycloneⅡ的EP2(235F484C8,外圍電路提供了USB口、并行I/O以及串口等一系列可供用戶選擇的端口。抽取Xn二進(jìn)制表示的小數(shù)部分的第9位作為比特序列,并通過串口來實時獲得該位在一定時間段t內(nèi)的所有值,其串口通信模塊電路如圖6所示。
為了確保計算機在接收該序列時不出現(xiàn)比特丟失現(xiàn)象,可預(yù)先向計算機發(fā)送一組周期序列來保證數(shù)據(jù)的可靠性。假設(shè)串口傳輸波特率為9 600,系統(tǒng)晶振為20 MHz,為了得到整數(shù)倍的分頻,可根據(jù)公式:
n=(20×106×k)/9 600
令k=3,則可得出n為6 250。其中,比例因子k可通過鎖相環(huán)來獲得。上述兩步驟可通過在QuartusⅡ中添加鎖相環(huán)代碼與分頻器代碼實現(xiàn)。此時,讓系統(tǒng)時鐘T=1/9 600再經(jīng)過二分頻后通過串口輸出,如果在接收端收到“01010”的周期序列,則表明FPGA與計算機之間的通信無問題。
5 PN序列隨機性能分析
5.1 頻率測試(Frequency Test)
該測試可用來判斷序列當(dāng)中0和1的個數(shù)是否近似相等,若近似相等,則符合隨機序列的必要條件。令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ù)是否近似相等。若近似相等,則符合隨機序列的必要條件。令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序列中不同長度的游程是否具有隨機序列的游程特性。理論上,在一個長度為n隨機序列中,長度為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混沌映射作為隨機信號源,基于FP-GA技術(shù)研究了PN序列的硬件產(chǎn)生。通過對產(chǎn)生的PN序列進(jìn)行性能分析發(fā)現(xiàn),其具有很好的隨機性,可被應(yīng)用于擴頻通信和數(shù)字信息加密等領(lǐng)域。由于直接以離散混沌作為隨機信號源,相對于將連續(xù)混沌離散化后再量化產(chǎn)生PN序列,其精確度更高。由于數(shù)字序列是通過抽取二進(jìn)制數(shù)值中某一位產(chǎn)生的,只要迭代值的位數(shù)足夠多,序列的可變性就更大,從而增大了密鑰空間和通信的保密性。