基于fpga的双精度混沌信号发生器的制作方法

文档序号:7887200阅读:496来源:国知局
专利名称:基于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日
发明者向菲, 陈曦, 何谷慧, 宋潇, 栗素娟 申请人:河南科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1