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