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