湖南師范大學(xué) 彭代鑫 彭良玉 張學(xué)豐
本文研究了基于Adomian分解法求解的分?jǐn)?shù)階混沌系統(tǒng),并利用FPGA的高速并行計算能力與強(qiáng)大的接口能力,設(shè)計了一種新穎的FPGA實(shí)現(xiàn)方案。FPGA在每一次計算狀態(tài)變量后,將數(shù)據(jù)通過USB總線傳送至電腦,實(shí)驗(yàn)數(shù)據(jù)在經(jīng)LabVIEW處理后與數(shù)值仿真結(jié)果一致,驗(yàn)證了方案的可行性和正確性。此方案無需使用示波器,且分?jǐn)?shù)階算法模塊工作在4倍源時鐘頻率200MHz,不僅為信息加密、保密通信提供理論與實(shí)驗(yàn)依據(jù),同時也為混沌系統(tǒng)的FPGA的設(shè)計與驗(yàn)證帶來便利。
相比于整數(shù)階微分,分?jǐn)?shù)階微分能夠描述更復(fù)雜的動力學(xué)行為,因此具有更加廣闊的應(yīng)用前景,Adomian分解法是常用的計算分?jǐn)?shù)階微分的算法。使用數(shù)字電路設(shè)計混沌系統(tǒng),常用的有DSP和FPGA,兩者都可以反復(fù)編程實(shí)現(xiàn)特定的混沌系統(tǒng)。DSP的計算模式為串行計算,從輸入到輸出需要經(jīng)歷一個相對較長的時間。而FPGA的架構(gòu)非常靈活,既可以進(jìn)行串行計算,又可以進(jìn)行并行計算,因此FPGA可以根據(jù)需求靈活地采取計算模式,從而提升計算速度。并且可以利用FPGA芯片強(qiáng)大的接口能力,通過通信協(xié)議將數(shù)據(jù)傳送至電腦,運(yùn)用電腦對信號進(jìn)行處理并顯示。由于本文產(chǎn)生的實(shí)驗(yàn)數(shù)據(jù)大小在Mbit級別,USB通信速度在Mbps以上,且FPGA開發(fā)板配置了一顆USB轉(zhuǎn)FIFO的芯片F(xiàn)T232,能將復(fù)雜的USB通信協(xié)議簡化,因此采用USB通信。在本方案中,通過一個按鍵控制分?jǐn)?shù)階計算模塊的啟動,該模塊在每一次計算出狀態(tài)變量的值后立刻將數(shù)據(jù)寫入FT232芯片,通過USB發(fā)送至電腦,在計算完設(shè)定的總點(diǎn)數(shù)后停止工作。數(shù)據(jù)經(jīng)LabVIEW處理后與數(shù)值仿真結(jié)果一致。
已知分?jǐn)?shù)階混沌系統(tǒng)的數(shù)學(xué)模型如式(1)所示:
令系數(shù)a=1,分解級數(shù)N= 3,求解步長 (t-t0) =2-6,分?jǐn)?shù)階數(shù)q=0.95,狀態(tài)變量初始值(x0,y0,z0) = (0.5, 0.5, 0.5),狀態(tài)變量相圖如圖1所示。
圖1 狀態(tài)變量相圖
在本方案中,采取的數(shù)制為35位定點(diǎn)數(shù),采用一個異步FIFO作為數(shù)據(jù)流的緩沖與輸出。算法結(jié)構(gòu)如圖2所示,運(yùn)用Verilog HDL編程實(shí)現(xiàn)。其中clk0是FPGA板載的源時鐘,頻率為50MHz,clk是經(jīng)過PLL倍頻后的時鐘,頻率為200MHz。rst為復(fù)位信號,當(dāng)復(fù)位信號為低電平時,系統(tǒng)復(fù)位,復(fù)位的主要作用是為寄存器類型的變量賦初值,key是啟動狀態(tài)變量計算模塊的按鍵。
圖2 FPGA實(shí)現(xiàn)與驗(yàn)證方案框圖
當(dāng)按鍵按下時,F(xiàn)PGA進(jìn)入工作狀態(tài),開始計算狀態(tài)變量,在每一次狀態(tài)變量計算完畢后,開啟FIFO的寫使能,把數(shù)據(jù)寫至FIFO,當(dāng)數(shù)據(jù)寫入完畢后,關(guān)閉FIFO寫使能。FIFO是先進(jìn)先出隊(duì)列,這里采用的是異步FIFO,寫頻率為200MHz,讀頻率為FT232自帶的晶振頻率60MHz,當(dāng)FIFO里的讀空信號不為1時,表明FIFO里寫入了數(shù)據(jù),若此時FT232芯片可寫,將拉高FIFO的讀使能信號并拉低芯片寫使能信號,將FIFO里的數(shù)據(jù)讀出到數(shù)據(jù)線上寫入FT232。狀態(tài)變量計算模塊根據(jù)基于Adomian分解法求解后的數(shù)學(xué)方程,采用三個IP乘法器進(jìn)行時分復(fù)用實(shí)現(xiàn),其計算將在計數(shù)器的多個狀態(tài)中完成,計數(shù)器的每個狀態(tài)包含多個時鐘周期,具體值為乘法器的最優(yōu)時延加一,這些時鐘周期又可以用一個計數(shù)器控制,這樣設(shè)計能夠大幅提升工作頻率,計算模塊時域仿真的部分波形圖如圖3所示,由上往下分別為clk0,clk,rst,x(t),y(t)和z(t)。
圖3 時域仿真部分波形圖
當(dāng)每次狀態(tài)變量計算完成后,狀態(tài)變量的值將會通過FIFO寫入FT232,由于本文采用的35位定點(diǎn)數(shù)的范圍足夠大,因此高3位可以舍去,直接傳輸?shù)?2位數(shù)據(jù),每一個時鐘寫入8位數(shù)據(jù),因此需要分4次才能將一個狀態(tài)變量的值完全寫入FIFO。傳輸三個狀態(tài)變量總共需要12個時鐘周期。寫入的數(shù)據(jù)將會被FT232讀取并轉(zhuǎn)換為USB協(xié)議,通過USB總線發(fā)送至電腦,電腦通過USB抓包軟件抓取到所有發(fā)送過來的數(shù)據(jù)。在對數(shù)據(jù)進(jìn)行處理之前,把數(shù)據(jù)存為文本文檔。后續(xù)用LabVIEW讀取數(shù)據(jù)并通過轉(zhuǎn)換算法完成16進(jìn)制到10進(jìn)制的轉(zhuǎn)換 。
令每個狀態(tài)變量的傳輸點(diǎn)數(shù)為N=50000,F(xiàn)PGA芯片型號為:Artix-7 xc7a35tfgg484-2。FPGA傳送至電腦的數(shù)據(jù)為一連串的16進(jìn)制序列,每兩個16進(jìn)制數(shù)組成一個字節(jié),一個狀態(tài)變量的點(diǎn)為32位,由4個字節(jié)組成。所有FPGA傳輸?shù)臄?shù)據(jù)的順序?yàn)閤(t1),y(t1),z(t1),x(t2),y(t2),z(t2)…。圖4記錄了FPGA傳輸至電腦的數(shù)據(jù)。
圖4 FPGA傳輸至電腦的數(shù)據(jù)
由于每個狀態(tài)變量傳輸?shù)狞c(diǎn)數(shù)N=50000,有三個狀態(tài)變量,因此要傳輸150000個點(diǎn)的數(shù)據(jù),而每個點(diǎn)為4個字節(jié),共計傳輸600000個字節(jié),以圖4中最后傳輸?shù)?2個字節(jié)“00 07 54 C5 00 0C 69 45 00 10 EF EF”為例,一個狀態(tài)變量的點(diǎn)為4個字節(jié),這12個字節(jié)為最后傳輸?shù)娜齻€狀態(tài)變量的點(diǎn)x(tN),y(tN),z(tN)。LabVIEW讀取數(shù)據(jù)時以字節(jié)為單位讀取,總共讀取600000字節(jié)的數(shù)據(jù),因此可以利用索引i除以12的余數(shù)將讀取數(shù)據(jù)中的x(t),y(t),z(t)分別保存到數(shù)組。然后進(jìn)行16進(jìn)制到10進(jìn)制的轉(zhuǎn)換,在這個過程中,為了使得轉(zhuǎn)換算法更加通用,首先將數(shù)據(jù)轉(zhuǎn)換為2進(jìn)制,狀態(tài)變量的每個點(diǎn)轉(zhuǎn)換為2進(jìn)制后為32位,其中最高位為符號位,11位整數(shù)位,20位小數(shù)位,然后再運(yùn)用二進(jìn)制到十進(jìn)制的轉(zhuǎn)換原理進(jìn)行轉(zhuǎn)換。圖5為圖4數(shù)據(jù)經(jīng)過LabVIEW轉(zhuǎn)換后得到的相圖,可見其與圖1一致,方案設(shè)計的正確性得到驗(yàn)證。
圖5 LabVIEW處理得到的相圖
本文設(shè)計了一種基于Adomian分解法的分?jǐn)?shù)階混沌系統(tǒng)的FPGA實(shí)現(xiàn)方案,其中分?jǐn)?shù)階計算模塊的工作頻率為源時鐘的四倍頻200MHz。該模塊在每次計算完成后把狀態(tài)變量的值通過一個異步FIFO寫入FT232芯片,F(xiàn)T232芯片將其轉(zhuǎn)化為USB協(xié)議,通過USB總線傳輸至電腦。所有的點(diǎn)經(jīng)過LabVIEW處理后,得到的相圖與數(shù)值仿真的相圖一致,并且無數(shù)據(jù)遺漏,F(xiàn)PGA設(shè)計的正確性與可靠性得到驗(yàn)證。