專利名稱:基于fpga的雙精度混沌信號發(fā)生器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高精度數(shù)字信號處理與數(shù)字圖像加密領(lǐng)域,具體說來就是一種符合IEEE-754標(biāo)準(zhǔn)的、利用現(xiàn)場可編程門陣列(FPGA)設(shè)計的具有雙精度浮點數(shù)的Lorenz雙渦卷混沌信號發(fā)生器。
背景技術(shù):
信息安全技術(shù)是一門綜合的學(xué)科,它涉及信息論、計算機科學(xué)、密碼學(xué)和數(shù)學(xué)等多方面知識,它的主要任務(wù)是研究計算機系統(tǒng)和通信網(wǎng)絡(luò)內(nèi)的信息保護方法以實現(xiàn)系統(tǒng)內(nèi)信息交流的安全、保密、真實和完整。其核心問題之一其實就是密碼學(xué)理論,而密碼學(xué)已經(jīng)成為信息安全方面的一個難點也是熱點課題。密碼學(xué)可以說是一門比較古老但又擁有年輕血液的學(xué)科,早在幾千年前它就用于國家之間機密信息的交流。從古至今,密碼學(xué)隨著科技手段的發(fā)展都保持著蓬勃的生機,在信息爆炸的當(dāng)今社會,加密技術(shù)的研究顯得尤為重要。混沌系統(tǒng)是一種非線性的確定性系統(tǒng),由于系統(tǒng)內(nèi)部非線性相互作用而表現(xiàn)出了非周期的行為?;煦绲脑S多特性恰好能夠滿足密碼學(xué)的基本要求:混沌動力學(xué)方程的確定性保證了通信雙方在收發(fā)過程和解密過程中的可靠性;混沌軌道的發(fā)散特性及對初始條件的敏感性正好滿足密碼系統(tǒng)設(shè)計的擴散原則;混沌吸引子的拓撲傳遞性與混合性正好滿足混淆原則;混沌輸出信號的寬帶功率譜和快速衰減的自相關(guān)性是對抗頻譜分析的有利保障。因此混沌理論能夠直接用于設(shè)計密碼算法,這為信息安全理論和加密技術(shù)的發(fā)展提供了新的研究方向,如何實現(xiàn)混沌系統(tǒng)、產(chǎn)生可控制的混沌信號成為人們研究的熱點。近年來,隨著各種技術(shù)手段的發(fā)展,人們由最初的模擬電子電路轉(zhuǎn)向利用數(shù)字器件實現(xiàn)混沌信號以提高系統(tǒng)構(gòu)建的靈活性,各種數(shù)字化的技術(shù)手段層出不窮。Lorenz混沌信號發(fā)生器是一種基于最經(jīng)典的雙渦卷混沌吸引子系統(tǒng)一Lorenz混沌吸引子系統(tǒng)的混沌信號發(fā)生裝置。該混`沌吸引子系統(tǒng)是由美國氣象學(xué)家Lorenz于1963年提出的,其動力學(xué)系統(tǒng)方程如下所示:
Cl)
其中=16,P =45.92,=4。顯然,(I)式是一個連續(xù)性的系統(tǒng)方程,為了將該連續(xù)系統(tǒng)應(yīng)用于數(shù)字系統(tǒng)中,就必須對系統(tǒng)進行離散化處理。常用的方法是Euler算法,也可以采用Runge-Kutta算法。相比較而言,Euler算法的實現(xiàn)比較簡便。離散化后的系統(tǒng)能夠很好的反映原系統(tǒng)的動力學(xué)特性,其系統(tǒng)方程如下所示:
(2)
其中增益系數(shù)為:G1= , G2= , G3= , G4=,G5=,G6=,G7=。取0.001,根據(jù)奈奎斯特采樣定理,采樣頻率一定要大于混沌信號截止頻率的2倍,所以一定要小于某一個特定的閾值。取得越小,離散系統(tǒng)就越能精確反映連續(xù)系統(tǒng)的混沌動態(tài)特性。如果取得太大,將無法得到正確的仿真結(jié)果。此外,混沌系統(tǒng)需要選定初始值,混沌電路就像一個振蕩器,在有一點“擾動”的前提下,才會“起振”,最終才會進入持續(xù)的混沌運動狀態(tài)。在這里選取=15,=18,=31。根據(jù)學(xué)者們的研究以及實驗,還有多組典型的參數(shù)和初始值可以選取,這里不再一一列舉。文獻[I]Mohammed A.Aseeri, Mohamed1.Sobhy.Lorenz chaotic model usingfiled programmable gate array (FPGA).45th Midwest Symposium on Circuits andSystems, 2002.最早提出了利用FPGA技術(shù)實現(xiàn)Lorenz混沌系統(tǒng)的方法,文獻[2]張鈺,禹思敏,劉明華.用FPGA技術(shù)產(chǎn)生多渦卷超混沌吸引子的研究[J].電路與系統(tǒng)學(xué)報,2007, 12(1):39-43等采用DSP Builder技術(shù)以實現(xiàn)各種多渦卷超混沌吸引子,圖1就是采用DSP Builder技術(shù)在Simulink中建立的26位精度的Lorenz雙潤卷混沛吸引子的模型。DSP Builder是Altera公司和Mathworks公司合作開發(fā)的一款FPGA設(shè)計工具,該工具可以將系統(tǒng)表不成一個高度抽象的模塊,并自動將系統(tǒng)映射為一個基于FPGA的硬件方案。DSP Builder是內(nèi)嵌在MATLAB的Simulink中進行工作的,它以一個被稱為ALTERADSP Builder塊包含在Simulink庫里,可以把它看成是Simulink的一個工具包,也就是說,可以在Simulink建模仿真工具中調(diào)用Altera公司的DSP Builder模塊并根據(jù)需要修改模塊參數(shù),進行系統(tǒng)的建模和仿真。除了圖形化的系統(tǒng)建模外,DSP Builder還可以通過使用Signal Compiler模塊自動生成VHDL代碼,自動完成大部分的設(shè)計過程和仿真,直至把設(shè)計文件下載至FPGA開發(fā)板上。采用DSP Builder技術(shù)具有直觀、方便快捷的優(yōu)點,能夠節(jié)省大量人力,縮短研發(fā)周期,但是其主要缺點是不能從根本上解決時序控制的問題,難以實現(xiàn)混沌同步,這就限制了其在保密通信領(lǐng)域的應(yīng)用。于是,就有學(xué)者回到直接利用FPGA技術(shù)實現(xiàn)混沌系統(tǒng)的道路上。文獻[3]周武杰,禹思敏.基于IEEE-754標(biāo)準(zhǔn)和現(xiàn)場可編程門陣列技術(shù)的混沌產(chǎn)生器的設(shè)計與實現(xiàn).物理學(xué) 報,2008, 57(8): 4738-4747提出了基于IEEE-754標(biāo)準(zhǔn)的混沌信號發(fā)生器的設(shè)計與實現(xiàn)方法。利用FPGA技術(shù)設(shè)計Lorenz混沌系統(tǒng)的主要設(shè)計理念在于將整個系統(tǒng)劃分為若干個基本功能模塊,主要包括浮點數(shù)乘法器、浮點數(shù)加/減法器、數(shù)據(jù)選擇器等主要模塊。這種方法具有很強的通用性,可以用于各類高精度數(shù)字信號處理系統(tǒng)的設(shè)計。圖2為利用該方法搭建的雙精度Lorenz混沛信號發(fā)生器在Alrera公司的Quartus II工具中建立的模型,圖中數(shù)據(jù)選擇器通過輸入端SEL對初始值進行選擇,浮點數(shù)加法器和浮點數(shù)乘法器級聯(lián)得到一次迭代運算結(jié)果。這種利用FPGA技術(shù)設(shè)計混沌信號發(fā)生器的方法能夠很好的解決時序控制問題,為混沌同步的應(yīng)用掃清了障礙,但是該方法占用FPGA邏輯資源較多,這就使得其在有限芯片面積上無法集成更多功能,限制了設(shè)計的應(yīng)用范圍,同時提高了實際工程應(yīng)用的成本。針對上述缺陷,文獻[4]劉玉民,張雨虹,姚明林,基于FPGA的混沌信號發(fā)生器的設(shè)計與實現(xiàn).計算機工程與設(shè)計,2010, 31 (18): 3972-3974提出了一種采用面積優(yōu)化思想,復(fù)用耗費邏輯資源較多的浮點運算模塊的方案,基于Altera EP1C3T144C8芯片(僅含有2910個邏輯單元)成功設(shè)計并實現(xiàn)了單精度Lorenz混沌信號發(fā)生器。該方案將整個系統(tǒng)劃分為若干個基本功能模塊,主要包括浮點乘法器、浮點加/減法器、數(shù)據(jù)選擇器、數(shù)據(jù)分配器、時序控制模塊和數(shù)值轉(zhuǎn)換模塊等主要模塊。采用數(shù)據(jù)選擇器來復(fù)用浮點數(shù)運算器,采用數(shù)據(jù)分配器對浮點乘法、浮點加/減法運算結(jié)果進行分配,使其分配到相應(yīng)的數(shù)據(jù)寄存器進行寄存。采用利用狀態(tài)機編寫的時序控制模塊為浮點乘法器、浮點加/減法器、數(shù)據(jù)選擇器、數(shù)據(jù)分配器等模塊提供時序控制信號,根據(jù)所進行的13次浮點數(shù)運算,將系統(tǒng)劃分為13個工作周期也即是13個狀態(tài),以協(xié)調(diào)各模塊有序工作。該方案的系統(tǒng)架構(gòu)原理如圖3所示,其中Ini_X、Ini_Y、Ini_Z,分別代表混沌系統(tǒng)“起振”所需的初始值,MUX為數(shù)據(jù)選擇單元,用于初始值的選擇及其對浮點數(shù)運算器的復(fù)用,ADD與MULTI分別代表浮點數(shù)加法器與浮點數(shù)乘法器,DEMUTI為數(shù)據(jù)分配單元,對浮點數(shù)運算器運算所得的結(jié)果分配到存儲器中,RAM為存儲單元,能夠進行數(shù)據(jù)的讀寫操作。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種兼顧節(jié)約芯片面積與提高系統(tǒng)的工作頻率兩方面因素的基于FPGA的雙精度混沌信號發(fā)生器。本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是:基于FPGA的雙精度混沌信號發(fā)生器,采用兩條并行的運算支路完成三路信號的運算,其中一條支路以分時段工作的方式完成兩路信號的運算,另一條支路完成另一路信號的運算;信號發(fā)生器包括時序控制單元、數(shù)據(jù)選擇單元、數(shù)據(jù)存儲單元和兩個浮點數(shù)運算單元,兩個浮點數(shù)運算單元構(gòu)成兩條并行的運算支路,時序控制單元為各單元模塊提供狀態(tài)控制信號;三路信號的初始值輸入數(shù)據(jù)選擇單元,數(shù)據(jù)存儲單元輸出三路信號的運算結(jié)果,并將運算結(jié)果反饋至數(shù)據(jù)選擇單元,數(shù)據(jù)選擇單元用于將三路信號的初始值以及由數(shù)據(jù)存儲單元反饋的三路信號運算結(jié)果分配至兩個浮點數(shù)運算單元;每個浮點數(shù)運算單元中都設(shè)有一個數(shù)據(jù)分配單元、一個浮點數(shù)加法器、一個浮點數(shù)乘法器和一個具有數(shù)據(jù)分配的功能的存儲單元,數(shù)據(jù)分配單元將輸入的信號分配至浮點數(shù)加法器和浮點數(shù)乘法器,浮點數(shù)加法器和浮點數(shù)乘法器的運算結(jié)果傳入存儲單元,存儲單元根據(jù)當(dāng)前狀態(tài)將運算結(jié)果存入結(jié)果分配到相應(yīng)的地址進行暫存或者從相應(yīng)地址讀出數(shù)據(jù)傳回數(shù)據(jù)分配單元。本發(fā)明的技術(shù)方案是這樣形成的:
Cl)離散化后的Lorenz系統(tǒng)方程如下:
文獻[4]中運用了面積優(yōu)化的思想,相當(dāng)于將Lorenz系統(tǒng)的X,y, z三路信號放入一條線路中進行傳輸,也就是說,該條傳輸線路分時段進行工作,就相當(dāng)于是將這條線路的使用時間進行分段,不同時間單獨地用于單一信號的運算,并將結(jié)果暫存,最后再統(tǒng)一輸出。這就相當(dāng)于將完整的一份工作劃分為三部分,由一個人去完成,當(dāng)每一部分都完成的時候,這份工作才算結(jié)束,這樣由單人完成這份工作顯然是很費時的,體現(xiàn)在系統(tǒng)中,就是硬件的工作速度不高。通過運用流水線技術(shù)的原理,聯(lián)系到Lorenz系統(tǒng)是由X,y, z三相信號構(gòu)成,并且在一次完整的混沌迭代運算中互不影響的特點,本發(fā)明將系統(tǒng)架構(gòu)由單條信號通路改為多條并行支路的結(jié)構(gòu),將完整的工作劃分為幾塊,交給多個人去完成,這就節(jié)省了時間,也就是提高了系統(tǒng)的工作速度。(2)通過比較X,y, z每一路信號所進行的浮點運算次數(shù)發(fā)現(xiàn),X分量進行了三次浮點運算,I分量進行了六次浮點運算,z分量進行了四次浮點運算。如果直接按照形式上有三種信號就將系統(tǒng)劃分為三條并行支路的話,就會產(chǎn)生這樣的結(jié)果:x支路和z支路由于進行的浮點運算次數(shù)遠少于I支路(3〈6,4〈6),所以,當(dāng)X支路和z支路的運算結(jié)果得出以后,y支路還沒有運算完成,y支路的工作周期遠多于X支路和z支路,這就相當(dāng)于同樣的條件下分給每個人的工作份額不均衡。反映在硬件系統(tǒng)上,就是說X支路和Z支路上的邏輯單元在y支路還在工作著的時候就被閑置了,這從時間的角度上造成了芯片面積的浪費。又進一步考慮到3+4=7,進行七次浮點運算與進行六次浮點運算相差的工作周期并不多,于是,本發(fā)明參考時分復(fù)用原理采取了將X支路與z支路進行合并的策略,這樣就將系統(tǒng)改為兩條并行支路的架構(gòu)。本發(fā)明的有益效果是:首先,相比較文獻[3],本方案由于僅采用2個浮點數(shù)加法器和2個浮點數(shù)乘法器,控制部分與RAM占用邏輯單元很少,所以最多能節(jié)約7個浮點數(shù)乘法器和2個浮點數(shù)加法器的邏輯單元(文獻[3]中僅9個浮點數(shù)加法器器和4個浮點數(shù)乘法器就占用1399 X 8+697 X 5=16076個邏輯單元),大大減少了實現(xiàn)相同功能所占用的芯片面積。其次,與文獻[4]中僅考慮面積優(yōu)化的方案不同,雖然本方案相比多使用了一個浮點數(shù)加法器和一個浮點數(shù)乘法器,但是通過合理使用流水線技術(shù),在工作頻率方面,經(jīng)初步估算,本方案設(shè)計的混沌信號發(fā)生器能夠達到文獻[4]中的2倍左右,拉近了與文獻[3]中系統(tǒng)工作頻率的距離(按照工作周期部分浮點數(shù)運算所用的周期算本方案工作頻率大概在文獻[3]的1/7左右,高于文獻[4]的1/13)。
圖1是現(xiàn)有技術(shù)中利用DSP Builder技術(shù)設(shè)計Lorenz混沌信號發(fā)生器的系統(tǒng)模型。圖2是現(xiàn)有技術(shù)中利用FPGA技術(shù)設(shè)計Lorenz混沌信號發(fā)生器的系統(tǒng)結(jié)構(gòu)模塊圖。圖3是現(xiàn)有技術(shù)中基于面積優(yōu)化思想的Lorenz混沌信號發(fā)生器原理框架。圖4是本發(fā)明雙精度Lorenz混沌信號發(fā)生器系統(tǒng)的原理框架。圖5是本發(fā)明浮點數(shù)運算單元內(nèi)部原理框架。圖6是本發(fā)明雙精度Lorenz混沌信號發(fā)生器的系統(tǒng)結(jié)構(gòu)模塊圖。圖7是本發(fā)明雙精度Lorenz混沌信號發(fā)生器內(nèi)部浮點運算單元模塊圖。圖8是浮點數(shù)運算單元工作時序狀態(tài)圖。
具體實施例方式為使本發(fā)明實現(xiàn)的技術(shù)手段、創(chuàng)作特征、達成目的與功效易于明白了解,下面附圖,進一步闡明本發(fā)明。本發(fā)明的原理框圖如圖4所示,Ini_X、Ini_Y、Ini_Z,分別代表混沌系統(tǒng)“起振”所需的初始值;MUX為數(shù)據(jù)選擇單元,用于初始值的選擇及其對兩路并行支路中的復(fù)用;FPU為浮點數(shù)運算單元;RAM1為數(shù)據(jù)存儲單元,能夠進行數(shù)據(jù)的讀寫操作。其中兩個浮點數(shù)運算單元FPU構(gòu)成兩條并行的運算支路。采用利用狀態(tài)機編寫的時序控制單元為各單元模塊提供狀態(tài)控制信號。本發(fā)明采用兩條并行的運算支路完成X、Y、Z三路信號的運算,其中一條支路以分時段工作的方式完成X、Z兩路信號的運算,即X/Z支路。另一條支路完成另一路信號Y的運算,即Y支路。三路信號的初始值Ini_X、Ini_Y、Ini_Z輸入數(shù)據(jù)選擇單元MUX,數(shù)據(jù)存儲單元RAMl輸出三路信號的運算結(jié)果X (n+l)、Y (η+1)、Ζ (η+1 ),并將運算結(jié)果反饋至數(shù)據(jù)選擇單元MUX,數(shù)據(jù)選擇單元MUX用于將三路信號的初始值以及由數(shù)據(jù)存儲單元RAMl反饋的三路信號運算結(jié)果分配至兩個浮點數(shù)運算單元FPU。浮點數(shù)運算單元并非簡單的進行浮點運算,每個浮點數(shù)運算單元中都設(shè)有一個數(shù)據(jù)分配單元、一個浮點數(shù)加法器、一個浮點數(shù)乘法器和一個具有數(shù)據(jù)分配的功能的存儲單元,其內(nèi)部原理框架如圖5所示,其中,DEMUTI為數(shù)據(jù)分配單元,根據(jù)當(dāng)前狀態(tài)選擇將信號分配到ADD與MULTI中,ADD與MULTI分別代表浮點數(shù)加法器與浮點數(shù)乘法器,采用浮點數(shù)運算的標(biāo)準(zhǔn)算法進行編寫,也可以采用新的改進算法以提高浮點數(shù)運算器的工作速度,還可以使用Quartus II工具中的MegaFunction功能進行定制,自動生成代碼以縮短開發(fā)周期。此處的RAM2不同于圖4中的RAMl,它能夠根據(jù)當(dāng)前狀態(tài)完成將ADD與MULTI的運算結(jié)果分配到相應(yīng)的地址進行暫存或者從相應(yīng)地址讀出數(shù)據(jù)傳回DEMUTI的操作,也就是說相當(dāng)于集成了數(shù)據(jù)分配的功能。工作時序狀態(tài)圖8所示。如圖6所示,其為按照原理圖4在Quarrus II軟件中生成的模塊圖,通過輸入端SEL控制對“起振”初始值的選擇,輸入端RST進行復(fù)位,輸入端CLK外接晶振,作為系統(tǒng)時鐘。運算結(jié)果通過輸出端X(n+l)、Y(n+l)、Z(n+l)送入DAC芯片中,最后得到雙渦卷吸引子的相圖。圖中fp_mux模塊、fpu模塊、ram模塊與原理圖4中MUX、FPU、RAM1模塊——對應(yīng),實現(xiàn)技術(shù)方案中所述功能。圖7為浮點運算單元的模塊圖,其中demut1、add、mult1、dmram模塊分別對應(yīng)原理圖5所示的DEMUT1、ADD、MULT1、RAM2模塊。
權(quán)利要求
1.基于FPGA的雙精度混沌信號發(fā)生器,其特征在于:采用兩條并行的運算支路完成三路信號的運算,其中一條支路以分時段工作的方式完成兩路信號的運算,另一條支路完成另一路信號的運算;信號發(fā)生器包括時序控制單元、數(shù)據(jù)選擇單元(MUX)、數(shù)據(jù)存儲單元(RAMl)和兩個浮點數(shù)運算單元(FPU),兩個浮點數(shù)運算單元(FPU)構(gòu)成兩條并行的運算支路,時序控制單元為各單元模塊提供狀態(tài)控制信號;三路信號的初始值輸入數(shù)據(jù)選擇單元(MUX),數(shù)據(jù)存儲單元(RAMl)輸出三路信號的運算結(jié)果,并將運算結(jié)果反饋至數(shù)據(jù)選擇單元(MUX),數(shù)據(jù)選擇單元(MUX)用于將三路信號的初始值以及由數(shù)據(jù)存儲單元(RAMl)反饋的三路信號運算結(jié)果分配至兩個浮點數(shù)運算單元(FPU);每個浮點數(shù)運算單元(FPU)中都設(shè)有一個數(shù)據(jù)分配單元(DEMUTI)、一個浮點數(shù)加法器(ADD)、一個浮點數(shù)乘法器(MULTI)和一個具有數(shù)據(jù)分配的功能的存儲單元(RAM2),數(shù)據(jù)分配單元(DEMUTI)將輸入的信號分配至浮點數(shù)加法器(ADD)和浮點數(shù)乘法器(MULTI),浮點數(shù)加法器(ADD)和浮點數(shù)乘法器(MULTI)的運算結(jié)果傳入存儲單元(RAM2),存儲單元(RAM2)根據(jù)當(dāng)前狀態(tài)將運算結(jié)果存入結(jié)果分配到相應(yīng)的地址進行暫存或者從相應(yīng)地址讀出數(shù)據(jù)傳回數(shù)據(jù)分配單元(DEMUTI)。
全文摘要
基于FPGA的雙精度混沌信號發(fā)生器,采用兩條并行的運算支路完成三路信號的運算,其中一條支路以分時段工作的方式完成兩路信號的運算,另一條支路完成另一路信號的運算;信號發(fā)生器包括時序控制單元、數(shù)據(jù)選擇單元、數(shù)據(jù)存儲單元和兩個浮點數(shù)運算單元,兩個浮點數(shù)運算單元構(gòu)成兩條并行的運算支路,信號發(fā)生器為個單元模塊提供狀態(tài)控制信號;每個浮點數(shù)運算單元中都設(shè)有一個數(shù)據(jù)分配單元、一個浮點數(shù)加法器、一個浮點數(shù)乘法器和一個具有數(shù)據(jù)分配的功能的存儲單元;在大幅減少芯片使用面積的同時,明顯提高了工作頻率。
文檔編號H04L9/00GK103078729SQ20121000963
公開日2013年5月1日 申請日期2012年1月13日 優(yōu)先權(quán)日2012年1月13日
發(fā)明者向菲, 陳曦, 何谷慧, 宋瀟, 栗素娟 申請人:河南科技大學(xué)