齊國元,胡玉慶,萬彰凱
(天津工業(yè)大學 電氣工程與自動化學院,天津 300387)
混沌系統(tǒng)是一種復雜的非線性運動,它對初始條件具有高度的敏感性,運動軌道長期不可預測,因此混沌系統(tǒng)表現(xiàn)出非常好的密碼學特性[1].近年來人們致力于基于混沌的偽隨機數(shù)發(fā)生器(CPRNG)的研究與設(shè)計[2-4].隨著數(shù)字化技術(shù)的發(fā)展,可編程邏輯門陣列(FPGA)具有速度快、并行處理、成本低等特性,因此越來越多的借助FPGA技術(shù)設(shè)計和實現(xiàn)偽隨機數(shù)發(fā)生器[5-8].超混沌系統(tǒng)一般具有多個正的Lyapunov指數(shù),這意味著系統(tǒng)的運動向多個方向擴展,因此超混沌系統(tǒng)較一般的混沌系統(tǒng)具有更強的隨機性和不可預測性[9-10].但目前基于超混的偽隨機數(shù)發(fā)生器設(shè)計大多存在資源占用較高以及混沌迭代次數(shù)多等問題[11-13].本文根據(jù)IEEE-754浮點數(shù)標準,設(shè)計并實現(xiàn)32位單精度浮點數(shù)偽隨機數(shù)發(fā)生器.基于Qi超混沌系統(tǒng),采用Verilog硬件描述語言構(gòu)建了超混沌系統(tǒng)模塊、數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)緩存模塊等.采用分時復用的方法僅構(gòu)建一個方程計算模型,通過狀態(tài)機控制四維超混沌的迭代計算,可以很好地節(jié)省硬件資源的占用.根據(jù)計算機浮點數(shù)格式的特點,選取某一取浮點數(shù)狀態(tài)變量為基準,取其尾數(shù)部分一定位數(shù)與其他狀態(tài)變量相異或輸出,可以得到任意長度的偽隨機序列,大大減少系統(tǒng)迭代次數(shù),提高偽隨機序列產(chǎn)生的效率.
基于FPGA硬件系統(tǒng)設(shè)計偽隨機數(shù)發(fā)生器,并要求能與計算機進行數(shù)據(jù)通信.偽隨機數(shù)發(fā)生器的系統(tǒng)結(jié)構(gòu)圖如圖1所示.
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 System structure diagram
由圖1可見,該系統(tǒng)主要包括超混沌系統(tǒng)模塊、先入先出存儲器模塊(FIFO)、FIFO控制模塊及數(shù)據(jù)發(fā)送模塊.超混沌系統(tǒng)模塊是核心算法模塊,主要實現(xiàn)混沌系統(tǒng)迭代計算及偽隨機序列的生成.FIFO模塊調(diào)用自IP核,用于數(shù)據(jù)緩存,可實現(xiàn)高速的超混沌系統(tǒng)模塊數(shù)據(jù)與發(fā)送模塊的數(shù)據(jù)交互.FIFO控制模塊用于控制FIFO的數(shù)據(jù)讀寫以及發(fā)送模塊的使能.數(shù)據(jù)發(fā)送模塊根據(jù)一定的波特率對由超混沌系統(tǒng)模塊生成的偽隨機序列通過串口發(fā)送到計算機.
Qi等提出的超混沌系統(tǒng)是一個四維連續(xù)非線性系統(tǒng),其2個正Lyapunov指數(shù)最大分別為13和3;并且具有較寬的頻譜,其帶寬是一般混沌系統(tǒng)甚至有些超混沌系統(tǒng)的20~30倍[14-15].Qi超混沌系統(tǒng)表達式為:
當取 a=50,c=13,d=8,e=33,f=30,b∈[15.425,27]時,系統(tǒng)是超混沌的,其最大的2個正的Lyapunov指數(shù)大約為13和3左右.
為了數(shù)字實現(xiàn)Qi超混沌系統(tǒng),下面對連續(xù)的微分方程離散化.Qi超混沌系統(tǒng)混亂度高,要求采樣時間為τ=0.000 01,因而其占用空間比普通混沌和一些超混沌系統(tǒng)的大得多.考慮到離散化精度,資源消耗和生成混沌序列速度等問題,Euler法相對較簡單,比較易于實現(xiàn),且占用資源少[16],因此這里選用Euler法.
對于一階微分方程Euler法可表示為:
式中:τ為采樣時間.對(2)式離散化后的方程為
對于(3)式,用Verilog HDL設(shè)計Qi超混沌系統(tǒng),將整個系統(tǒng)劃分為若干基本功能模塊,主要包括狀態(tài)機模塊、數(shù)值計算模塊、數(shù)值計算控制模塊、數(shù)據(jù)緩存模塊、偽隨機序列生成模塊.超混沌系統(tǒng)的結(jié)構(gòu)框圖如圖2所示.
圖2 超混沌系統(tǒng)模塊結(jié)構(gòu)圖Fig.2 Hyperchaos system structure diagram
圖2中給出了系統(tǒng)中主要的控制信號及數(shù)據(jù)流關(guān)系.為減少硬件資源的占用,設(shè)計中采用了分時復用的思想.數(shù)值計算模塊例化少量的單精度浮點數(shù)乘法器和加法器構(gòu)造一個方程計算模型,狀態(tài)機模塊在不同的狀態(tài)向數(shù)值計算模塊賦予不用的系數(shù)和狀態(tài)變量值,從而完成4個方程的順序計算.
為了簡化系統(tǒng)結(jié)構(gòu)圖,對部分信號進行了整合,現(xiàn)作解釋說明.Seli代表sel1,sel2,sel3,輸出到數(shù)值計算模塊控制浮點數(shù)乘法器、加法器有序執(zhí)行.done:數(shù)值計算完成標志;start,stop:開始和停止控制,由外部按鍵控制;Data:數(shù)值計算結(jié)果;Pi代表信號 p1,p2,p3,i1,i2,i3,i4,是系統(tǒng)方程的系數(shù)及狀態(tài)變量,它們的位寬度均為32位.Calculate_start:計算開始控制信號;clear:清零;X 代表 x1,x2,x3,x4,4 個狀態(tài)變量的迭代結(jié)果,數(shù)據(jù)位寬度為32位;Done:數(shù)據(jù)緩存完成標識;data:偽隨機序列.
(1)狀態(tài)機模塊.時序控制模塊為數(shù)值計算模塊、數(shù)據(jù)緩存等模塊提供時序控制信號,以協(xié)調(diào)各模塊有序工作,同時為數(shù)值計算模塊提供初始值和每次迭代的結(jié)果.本文根據(jù)(3)式設(shè)計狀態(tài)機實現(xiàn)時序控制.狀態(tài)機流程如下:
S0:將 x1,x2,x3,x4的初始值寫入狀態(tài)寄存器.
S1:將賦予 p1,p2,p3及狀態(tài)變量 x1,x2,x2,x3賦予i1,i2,i3,i4輸出到計算模塊,計算模塊開始執(zhí)行 done 信號有效時進入下一個狀態(tài).
S2:將賦予 p1,p2,p3及狀態(tài)變量 x1,x2,x1,x3賦予i1,i2,i3,i4輸出到計算模塊,計算模塊開始執(zhí)行 done 信號有效時進入下一個狀態(tài).
S3:將賦予 p1,p2,p3及狀態(tài)變量 x3,x4,x1,x2賦予i1,i2,i3,i4輸出到計算模塊,計算模塊開始執(zhí)行 done 信號有效時進入下一個狀態(tài).
S4:將賦予 p1,p2,p3及狀態(tài)變量 x3,x4,x1,x2賦予i1,i2,i3,i4輸出到計算模塊,計算模塊開始執(zhí)行 done 信號有效時進入下一個狀態(tài).
S5:當Done有效時,從數(shù)據(jù)緩存模塊中讀取4次的計算結(jié)果并寫入狀態(tài)寄存器中,并進入狀態(tài)S1.
(2)數(shù)據(jù)緩存模塊.該模塊存儲數(shù)值計算模塊的計算結(jié)果,done有效時將計算結(jié)果寄存,在完成4次結(jié)果的寄存后即完成了離散化的超混沌系統(tǒng)的一次迭代,將本次迭代的結(jié)果由Done信號控制返回狀態(tài)機模塊.
(3)數(shù)值計算模塊.數(shù)值計算模塊的結(jié)構(gòu)圖如圖3所示.
圖3 數(shù)值計算模塊結(jié)構(gòu)圖Fig.3 Calculation structure
該模塊調(diào)用了IP核中32位的單精度浮點數(shù)乘法器和加法器,共例化了4個乘法器和2個加法器來構(gòu)建一個方程模型.模塊中的sel1,sel2,sel3信號來自計算控制模塊,控制各乘法器和加法器有序執(zhí)行.參數(shù)輸入信號:p1,p2,p3分別代表方程中的系數(shù)輸入端口;i1,i2,i3,i4分別代表狀態(tài)變量輸入端口,它們由狀態(tài)機模塊在不同的狀態(tài)給出每個方程的系數(shù)和狀態(tài)變量值.
(4)偽隨機序列生成模塊.該模塊首先舍去超混沌系統(tǒng)前50次迭代的值,以消除初值影響.IEEE-754單精度浮點數(shù)格式為32位,如圖4所示.
圖4 單精度浮點數(shù)格式Fig.4 Single precision floating-point format
其中第 31 位(S)為符號位,1:負;0:正.30-23 位(E)為階碼位.22-0位(F)為尾數(shù)位.根據(jù)單精度浮點數(shù)的特點,取尾數(shù)部分位相異或即可得到一定長度的偽隨機序列.設(shè)混沌系統(tǒng)第k次迭代的結(jié)果為x1(k),x2(k),x3(k),x4(k),x5(k),其寬度均為32位.截取變量x1(k),x2(k),x3(k),x4(k),x5(k)的尾數(shù)部分數(shù)據(jù),分別記為 m1,m2,m3,m4.設(shè)置起始位為第 i位,終止位為第 j位,那么截取數(shù)據(jù)位長度為j-j+1.根據(jù)以下規(guī)則輸出偽隨機序列.
則可得偽隨機序列{…,s1(k),s2(k),s3(k),…}.尾數(shù)部分抽取的位數(shù)可以任意設(shè)定,本偽隨機序列生成模塊抽取尾數(shù)部分八位則超混沌系統(tǒng)迭代一次可以產(chǎn)生24位偽隨機序列,從而利用了高維混沌的特點可有效地減少混沌系統(tǒng)的迭代次數(shù),提高了偽隨機序列產(chǎn)生的效率.
先入先出寄存器調(diào)用自IP核,可實現(xiàn)數(shù)據(jù)的緩存或高速異步數(shù)據(jù)的交互.對于數(shù)據(jù)計算模塊高速產(chǎn)生的數(shù)據(jù)可以存入先入先出寄存器中,再由數(shù)據(jù)發(fā)送模塊以一定的波特率讀出并發(fā)送.本設(shè)計中例化了一個深度為2 048,寬度為8位的FIFO.空標志位有效時,向FIFO中寫數(shù)據(jù),滿標志位有效時,系統(tǒng)停止寫數(shù)據(jù),并開始讀出由數(shù)據(jù)發(fā)送模塊發(fā)送.該FIFO可緩存16 384位的二進制偽隨機序列.
FIFO控制模塊用于控制FIFO的讀寫數(shù)據(jù)及串口發(fā)送模塊使能.當FIFO寄存器為空時,F(xiàn)IFO控制模塊發(fā)出寫請求,將超混沌模塊的計算結(jié)果寫入FIFO中.寫滿時其狀態(tài)標志位變高,接著發(fā)送讀請求,同時使串口發(fā)送模塊的發(fā)送使能有效,開始讀取并發(fā)送數(shù)據(jù),由發(fā)送完成標志信號控制下一個要發(fā)送數(shù)據(jù)的讀取.當空標志位重新為高時,停止讀數(shù)據(jù)和,發(fā)送使能拉低.并發(fā)出寫請求,重新向FIFO中寫數(shù)據(jù).
數(shù)據(jù)發(fā)送模塊負責FPGA硬件系統(tǒng)與PC機的數(shù)據(jù)通信,由硬件描述語言編程實現(xiàn)串口數(shù)據(jù)發(fā)送.數(shù)據(jù)發(fā)送模塊的結(jié)構(gòu)圖如圖5所示.發(fā)送數(shù)據(jù)的波特率設(shè)置為115 200 bps,發(fā)送一次數(shù)據(jù)包含1位起始位,8位數(shù)據(jù)位,1位停止位.串口發(fā)送模塊包含2個主要部分波特率生成模塊及數(shù)據(jù)發(fā)送模塊.波特率生成模塊基于查找表和分頻計數(shù)器實現(xiàn).
圖5 數(shù)據(jù)發(fā)送模塊結(jié)構(gòu)圖Fig.5 Data sent module structure
經(jīng)QuartusII編譯后得到的該偽隨機數(shù)發(fā)生器資源消耗情況如表1所示.
表1 系統(tǒng)資源消耗Tab.1 System resource consumption
由表1可以看出,由于采用了分時復用的思想,系統(tǒng)占用資源相對較少,并且有較高的工作時鐘頻率,系統(tǒng)在140 MHz下可穩(wěn)定工作.
利用Modelsim對工程進行仿真,得到的時序仿真結(jié)果如圖6所示.
圖6 時序仿真結(jié)果Fig.6 Timing simulation results
由圖6仿真結(jié)果可以看出,本系統(tǒng)可以實現(xiàn)將超混沌系統(tǒng)產(chǎn)生的偽隨機序列通過串口發(fā)送模塊將數(shù)據(jù)發(fā)出.將仿真所得超混沌系統(tǒng)迭代的數(shù)據(jù)導出到Matlab可得混沌吸引子的相位圖如圖7、圖8所示.
圖7 x1-x2相位圖Fig.7 x1-x2phase diagram
圖8 x1-x3相位圖Fig.8 x1-x3phase diagram
由圖7和圖8可以看出,該基于FPGA設(shè)計的超混沌系統(tǒng)可以正確地實現(xiàn)離散化混沌系統(tǒng)的迭代計算,所得相位圖與Matlab仿真結(jié)果一致.
在確定時序仿真結(jié)果無誤后,將程序下載到EP4CE15F17C8型FPGA開發(fā)板.將FPGA通過串口與計算機相連.計算機端接收到的偽隨機序列如圖9所示.
從圖9實驗結(jié)果可以看出,基于FPGA硬件平臺設(shè)計的偽隨機數(shù)發(fā)生器能夠產(chǎn)生偽隨機序列,并能實現(xiàn)與計算機進行數(shù)據(jù)通信.
經(jīng)過modelsim仿真可知,在取尾數(shù)部分8位的情況下,系統(tǒng)每隔47個時鐘周期產(chǎn)生1個8位比特數(shù)據(jù),當工作頻率為50 MHz時,該系統(tǒng)產(chǎn)生偽隨機序列的速率為8×50/47=8.5 Mbps;當工作頻率為140 MHz時,系統(tǒng)產(chǎn)生偽隨機序列的速率為8×140/47=23.8 Mbps,可以滿足大多數(shù)場合的加密需求.
美國國家標準技術(shù)局(NIST)設(shè)定了15個測試以檢驗一個隨機或偽隨機發(fā)生序列的統(tǒng)計特性[17].根據(jù)SP800-22標準,每項測試結(jié)果都用P值表示,如果測試結(jié)果的P值大于之前設(shè)定的閾值則可認為該項測試通過,反之則不通過.現(xiàn)對計算機端接收到的偽隨機序列進行測試,測試的偽隨機序列位長度為1.6×107bits,默認設(shè)置α=0.01.測試結(jié)果如表2所示.
從表2測試結(jié)果看出,15項測試的P值均大于設(shè)定的閾值,表明本文設(shè)計的偽隨機數(shù)發(fā)生器能夠產(chǎn)生性能良好的偽隨機序列.
表2 NIST測試結(jié)果Tab.2 NIST test results
本文針對基于超混沌的偽隨機數(shù)發(fā)生器占用資源高,迭代次數(shù)多等問題,基于Qi超混沌系統(tǒng)設(shè)計了一種32位單精度浮點數(shù)偽隨機數(shù)發(fā)生器.采用分時復用的思想以節(jié)省系統(tǒng)資源占用,并且利用高維混沌及計算機浮點數(shù)格式的特點,可以有效地減少迭代次數(shù).并采用Verilog HDL在FPGA硬件平臺構(gòu)建了超混沌系統(tǒng)模塊、FIFO模塊以及數(shù)據(jù)發(fā)送模塊,實現(xiàn)了偽隨機數(shù)發(fā)生器的設(shè)計.從仿真結(jié)果可以看出,該偽隨機數(shù)發(fā)生器占用資源少,產(chǎn)生偽隨機序列的速率最高為23.8 Mbps.并且對FPGA硬件平臺產(chǎn)生的偽隨機序列進行了NIST測試,結(jié)果表明該偽隨機數(shù)發(fā)生器產(chǎn)生的二進制序列具有很好的偽隨機特性,具有一定的實際應用價值.
[1]禹思敏.混沌系統(tǒng)與混沌電路:原理、設(shè)計及其在通信中的應用[M].西安:西安電子科技大學出版社,2011:10-11.YU S M.Chaotic System and Chaotic Circuit:Principle,Design and Its Application in Communication[M].Xi′an:Xi′an University of Electronic Science and Technology Press,2011:10-11(in Chinese).
[2]劉玉民,張雨虹,姚明林.基于FPGA的混沌信號發(fā)生器的設(shè)計與實現(xiàn) [J].計算機工程與設(shè)計,2010,31(18):3972-3974.LIU Y M,ZHANG Y H,YAO M L.Design and implementation of chaotic signal generator based on FPGA[J].Computer Engineering and Design,2010,31(18):3972-3974(in Chinese).
[3]張麗姣,閔樂泉,韓雙霜.二維新混沌系統(tǒng)和偽隨機數(shù)生成器的設(shè)計[J].計算機工程與設(shè)計,2014,35(4):1178-1182.ZHANG L J,MIN Y Q,HAN S S.Design of two-dimensional new chaotic system and pseudo-random number generator[J].Computer Engineering and Design,2014,35(4):1178-1182(in Chinese).
[4]劉沛華,魯華祥,龔國良,等.基于FPGA的高速任意分布偽隨機數(shù)發(fā)生器[J].應用科學學報,2012,30(3):306-310.LIU P H,LU H X,GONG G L,et al.High-speed arbitrary distributed pseudo-random number generator based on FPGA[J].Journal of Applied Sciences,2012,30(3):306-310(in Chinese).
[5]孫克輝,葉正偉,賀少波.混沌偽隨機序列發(fā)生器的FPGA設(shè)計與實現(xiàn)[J].計算機應用與軟件,2014,31(12):7-11.SUN K H,YE Z W,HE S B.Design and implementation of chaotic pseudo-random sequence generator based on FPGA[J].Computer Applications and Software,2014,31(12):7-11(in Chinese).
[6]SHAH Divya K,CHAURASIYA Rohit B.FPGA implementation of fractional-order chaotic systems[J].International Journal of Electronics and Communications,2017,78:1-13.
[7]黃沄,張鵬,趙衛(wèi)峰.一個新的四翼超混沌系統(tǒng)及其FPGA實現(xiàn) [J].西南大學學報:自然科學版,2013,35(6):127-130.HUANG Y,ZHANG P,ZHAO W F.A new four-wing hyperchaotic system and its FPGA implementation[J].Journal of Southwest University:Natural Science Edition,2013,35(6):127-130(in Chinese).
[8]劉強,方錦清.基于FPGA技術(shù)的混沌加密系統(tǒng)研究[J].物理學報,2012,61(13):78-83.LIU Q,F(xiàn)ANG J Q.Research on chaotic encryption system based on FPGA technology[J].Journal of Physics,2012,61(13):78-83(in Chinese).
[9]CHEN Zengqiang,YANG Yong,QI Guoyuan,et al.A novel hyperchaos system only with one equilibrium[J].Physics Letters A,2007,360(6):696-701.
[10]QI Guoyuan,WANG Zhonglin,GUO Yanling.Generation of an eight-wing chaotic attractor from QI 3-D four-wing chaotic system[J].International Journal ofBifurcationandChaos,2012,22(12):1250287-1250295.
[11]涂光友,何波.基于時空混沌的偽隨機數(shù)發(fā)生器設(shè)計[J].計算機應用,2013,33(12):3499-3502.TU G Y,HE B.Design of pseudo-random number generator based on spatiotemporal chaos[J].Computer Application,2013,33(12):3499-3502(in Chinese).
[12]盛利元,劉念,曹莉凌.一種混沌偽隨機序列發(fā)生器的FPGA 實現(xiàn)[J].鄭州大學學報:工學版,2008,29(1):44-47.SHENG L Y,LIU N,CAO L L.Realization of a chaotic pseudo-random sequence generator based on FPGA[J].Journal of Zhengzhou University:Engineering Science Edition,2008,29(1):44-47(in Chinese).
[13]曹騮,茅耀斌,劉文波,等.時空混沌偽隨機比特發(fā)生器及其 FPGA 實現(xiàn)[J].系統(tǒng)工程與電子技術(shù),2008,30(9):1606-1610.CAO L,MAO Y B,LIU W B,et al.Time-space chaotic pseudo-random bit generator and its FPGA implementation[J].Systems Engineering and Electronics,2008,30(9):1606-1610(in Chinese).
[14]QI Guoyuan,WYK M A V,WYK B J V,et al.On a new hyperchaotic system[J].Physics Letters A,2008,372(2):124-136.
[15]QI Guoyuan,WYK Michael Antonie van.A new hyperchaotic system and its circuit implementation[J].Chaos Solitons and Fractals,2009,40(5):2544-2549.
[16]周武杰,禹思敏.基于IEEE-754標準和現(xiàn)場可編程門陣列技術(shù)的混沌產(chǎn)生器設(shè)計與實現(xiàn)[J].物理學報,2008,157(8):4738-4746.ZHOU W J,YU S M.Design and implementation of chaotic generator based on IEEE-754 standard and field programmable gate array technology[J].Journal of Physics,2008,157(8):4738-4746(in Chinese).
[17]RUKHIN Andrew,SOTO Juan,NECHVATAL James,et al.A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications,SP800-22rev1a[S].Gaithersburg:National Institute of Standards and Technology,2010.