本发明涉及混沌系统,具体涉及一种基于fpga的通用混沌系统。
背景技术:
混沌是非线性系统所产生的伪随机现象,是非线性系统中所特有的一种运动形式。混沌具有伪随机性、对初始条件敏感等特性,且可以控制和同步。《onthenonchaoticnatureofmonotonedynamicalsystems》等文献对于混沌系统的性质和特性做了论述和研究,并罗列了混沌的不同角度定义;《chaotictransportofnavigationsatellites》等文献于混沌系统的同步和控制反控制做了深入的研究。并且随着信息科学技术的快速应用和发展,信息的安全问题日渐重要。混沌系统的优良特性使得它在保密通信、密码学等领域有着广泛的应用前景。高性能的混沌伪随机数发生器被广泛应用于诸如通信加密、图像加密和密码学等领域。
在实际混沌研究中需要将实现混沌系统,将其应用于不同的领域中。徐玉杰,李春彪,黄武奇等人在《基于偏置可控混沌系统的保密通信体系构建及其电路实现》使用stm32嵌入式器件实现了混沌系统;文献《基于忆阻器反馈的lorenz超混沌系统及其电路实现》使用电阻、电容、模拟乘法器和集成运算放大电路等器件来实现模拟电路的混沌系统。混沌系统的分析主要是通过建模探索系统的生成方法,证明混沌的存在性。数学上有一套严格的理论和方法。要设计一个混沌系统,连续混沌系统建模的难度相对较大。这些方法实现连续混沌系统具有难以调试、通用性差等缺陷,而数字电路技术则可以克服这些问题。fpga(fieldprogrammablegatearray)作为当下炙手可热的可编程芯片,专门用于构造不同的数字系统。具有开发周期短、成本低、系统可靠性高、易于修改移植和高性价比等优点,这项技术己渗透到很多应用领域,并且成为混沌数字电路设计的一个趋势。现有技术中使用fpga技术实现了不同的离散化混沌系统,并且将其应用于不同的领域之中;使用fpga技术实现了混沌系统伪随机数发生器。混沌系统的fpga实现受到越来越多的关注,对于相关领域的发展具有重要的实用意义。而目前混沌系统的fpga通用实现方法现在还没有相关研究,大多都是特定混沌系统,当需要其它混沌信号时,需要重新设计,开发周期很长。
因此,现有混沌系统设计技术存在不具备通用性、开发周期长的问题。
技术实现要素:
本发明提供了一种基于fpga的通用混沌系统,具备较高的通用性,能够缩短混沌系统开发周期,快速实现相应的混沌系统。
一种基于fpga的通用混沌系统,该系统包括混沌迭代控制模块、混沌序列算法模块、浮点数定点数转换模块、串口发送模块、da控制模块、da转换芯片以及globalbuffer;
混沌序列算法模块,用于产生所需要的混沌数字序列以及对混沌系统迭代的纠错和扰动计算;
混沌迭代控制模块,用于通过外部的数据配置对混沌序列算法模块进行初始化迭代、纠错和扰动模式的控制,控制整个系统的运行;
globalbuffer,用于协调混沌序列算法模块产生混沌数字序列的速度和串口波特率的差异,保证外部能够接受到完整的混沌数字序列;
串口发送模块,用于将从globalbuffer接受的混沌数字序列输出至应用端;
浮点数定点数转换模块,用于负责对混沌系统产生的浮点数进行定点数的格式转换,以匹配d/a转换芯片的数据格式;
da控制模块,用于控制定点数混沌序列输出给da转换芯片;
da转换芯片,用于输出混沌序列的模拟波形检测相图。
混沌序列算法模块包括扰动纠错模块、混沌序列生成模块、m序列生成模块、量化模块以及归一化模块。
扰动纠错模块,用于在上层混沌迭代控制模块配置好扰动模式后,通过混沌序列生成模块的反馈来对混沌序列生成模块的迭代数据进行控制;
混沌序列生成模块,用于产生所需要的浮点数序列,受上层的混沌迭代控制模块进行控制;
m序列生成模块,用于生成m序列,当混沌序列生成模块生成数据超过规定范围后对扰动纠错模块进行反馈,扰动纠错模块根据配置好的扰动模式对混沌序列生成模块进行m序列的扰动;
量化模块,用于基于量化算法对浮点数的混沌序列进行量化;
归一化模块,用于对混沌序列生成模块的输出进行归一化修正,使不同混沌序列生成模块的输出均在同一个范围之内,使自适应扰动纠错功能兼容不同的混沌系统。
混沌序列生成模块包括初始化控制模块、符号改变模块、加法模块、同步模块、乘法模块;初始化控制模块通过上层的配置进行初始化数据的输出,通过符号改变模块使加法模块实现减法的功能,对于不同时序的数据利用同步模块进行同步后再进行计算,保证时序的正确性。
扰动纠错模块的扰动模式包括随机扰动、周期扰动、纠错扰动、周期纠错扰动。
量化算法采用比特抽取量化方法。
比特抽取量化方法包括:将离散混沌实数序列中所有浮点实数值均写成32bit二进制数形式,选定尾数部分比特作为抽取位,然后将选定位进行特定异或运算,组成最终的二值序列。
本发明的有益效果在于:
本发明使用fpga技术实现了通用混沌系统设计,并且进一步实现了一维离散logistic混沌系统和三维lorenz连续混沌系统两种算例,对设计的通用性进行了详细的分析。对实现混沌系统的ip核进行了详细的讲解,分别分析了logistic混沌系统和lorenz混沌系统的设计案例。并结合顶层模块在实际fpga上进行实验,对两种混沌系统的实验相图进行了分析,证明了通用设计方法的正确性。相对于现有技术,本发明的混沌系统具备很好的通用性,解决了混沌系统开发周期长的问题,在实际应用中,能够较快地设计和实现相应的混沌系统。
附图说明
图1为基于fpga的通用混沌系统整体架构图;
图2为混沌序列算法模块结构图;
图3为自适应中断纠错原理框图;
图4为logistic混沌序列生成模块ip结构图;
图5为logistic混沌系统吸引子相图;
图6为lorenz混沌序列生成模块ip结构图;
图7为lorenz混沌系统吸引子相图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于fpga的通用混沌系统,下面通过具体实施例来进行说明。
实施例一:
一种基于fpga的通用混沌系统,该系统包括混沌迭代控制模块、混沌序列算法模块、浮点数定点数转换模块、串口发送模块、da控制模块、da转换芯片以及globalbuffer。
使用fpga设计一个混沌系统,主要是通过状态方程公式建模探索系统的生成方法,并且证明系统混沌的存在性,数学上有一套严格的理论和方法。离散混沌系统主要有一维logistic和二维henon映射,连续混沌系统的典型代表有lorenz族、chua系统和chen系统等。而对一个连续混沌系统我们对其分析主要有相图显示、时域波形显示、最大李氏指数计算、平衡点和稳定性分析,对于离散系统我们可以通过da转换使用连续系统的分析方法相图显示和时域波形显示来验证系统的正确性。
基于fpga实现离散混沌系统或者被离散化后的连续混沌系统,将其中所需要的计算单元分离出来。对于通用性的设计需要将不同的功能进行分割模块化处理,将不同的处理层次分离。我们可以发现需要专用于混沌系统的加法、减法以及乘法运算ip(intellectualproperty)核。而为了适应不同的混沌系统还需要同步控制类ip核,用来提高设计的灵活性。并且为了实现对混沌系统的m序列扰动以及自适应纠错控制功能还需要额外的自适应纠错控制以及扰动控制ip核。为此,本发明设计了一套专门用于实现混沌系统的fpga专用ip核。对于不同的混沌系统只需要对其进行状态方程的实现就可以完全兼容不同混沌系统,系统包括多种控制模块ip核和5种计算类模块ip核。基于fpga的通用混沌系统整体架构如图1所示。
混沌序列算法模块,是整个系统的核心,用于产生所需要的混沌数字序列以及对混沌系统迭代的纠错和扰动计算。
混沌迭代控制模块,用于通过外部的数据配置对混沌序列算法模块进行初始化迭代、纠错和扰动模式的控制,控制整个系统的运行。
globalbuffer,用来协调混沌序列算法模块产生混沌数字序列的速度和串口波特率的差异,保证外部能够接受到完整的混沌数字序列。
串口发送模块,用于从globalbuffer接受的混沌数字序列输出至应用端。
浮点数定点数转换模块,负责对混沌系统产生的浮点数进行定点数的格式转换,用来匹配d/a转换芯片的数据格式。
da控制模块,用于控制定点数混沌序列输出给da转换芯片。
da转换芯片,用于输出混沌序列的模拟波形检测相图。
混沌序列算法模块结构如图2所示,主要由扰动纠错模块、混沌序列生成模块、m序列生成模块、量化模块以及归一化模块组成。其中最主要的模块就是混沌序列生成模块,作为核心产生所需要的浮点数序列,主要受上层的混沌迭代控制模块进行控制。
扰动纠错模块受上层混沌迭代控制模块配置好扰动模式后,通过混沌序列生成模块的反馈来对混沌序列生成模块的迭代数据进行控制。m序列生成模块,用于生成m序列,当混沌序列生成模块生成数据超过规定范围后对扰动纠错模块进行反馈,扰动纠错模块根据配置好的扰动模式对混沌序列生成模块进行m序列的扰动。
混沌系统定义在连续实数域,所以其动力学特性体现在连续域。因此混沌系统数字化过程中存在有限精度效应,会导致混沌系统的动力学特性出现退化现象。一旦混沌系统出现退化现象,整个混沌系统所产生的数字序列随机性会降低,我们需要避免这种情况。
在数字混沌系统实际应用时,应该避免或改善数字化过程中出现的退化问题。很多研究者致力于改善有限精度效应这方面的研究,整体还处于探索阶段。到今天,许多的方法已经被提出,这些方法在一定程度上改善了部分特性退化问题。《一种改进的变结构混沌序列性能分析》中使用的方法有提高实现精度、多个混沌系统进行级联、对多个混沌系统进行切换和对混沌系统施加扰动等。其中施加扰动是一种相对有效的方法,其基本思路是使用一个满足均匀分布的伪随机序列对原混沌系统的状态变量进行扰动。扰动是一种积极有效的工程补救方法,可以有效的改善混沌动力学特性。
自适应中断纠错原理如图3所示,使用硬中断的方法进行纠错控制,基础的计算模块中会嵌入底层检测单元。对于计算结果进行归一化区间的溢出检测及结果有效判断,结果用信号量error表示如下:
如果出现错误会出现硬中断信号传递给扰动纠错模块。扰动纠错模块会传递信号量error给混沌迭代控制模块进行迭代变量的m序列扰动初始化,以保证扰动初始变量的随机性。
如表1所示工程可以配置三种扰动模式,其中周期纠错扰动需要借助中断机制且需要提前对系统进行扰动周期配置;纠错扰动需要借助中断机制来完成功能,但是不要提前对系统进行数据的配置;周期扰动只需要配置需要扰动的固定周期,系统就会对周期性的进行迭代值进行扰动;随机扰动不需要中断机制以及提前配置数据,会不停地对随机序列的结果进行随机扰动。
表1扰动模式对比
对于32bit浮点数的混沌系统序列我们需要对其进行量化,量化模块主要负责量化算法。
由于混沌系统输出的结果为浮点数类型的离散混沌实数序列,所以需要将浮点数序列转为可以使用的二值序列,这就是混沌序列预处理,也称混沌量化。将实数序列转为二值序列时,能否保持这种混沌特性决定着数字混沌序列的随机性。混沌序列密码安全性依赖于混沌系统的混沌特性,所以量化结果也应该尽量继承原有的混沌特性,这就要求量化方法对混沌特性有较好的传递性。量化方法包括位序列法、多值序列量化法、阈值量化法和整数求余量化法等,位序列法又分为l比特量化方法和比特抽取量化方法。
根据ieee754标准的浮点数特点,我们在工程中使用改进的比特抽取量化方法。混沌系统的浮点数混沌序列具有尾数比阶码变化更为快速的特点,因此将离散混沌实数序列中所有浮点实数值均写成32bit二进制数形式,选定尾数部分比特作为抽取位,然后将选定位进行特定异或运算,组成最终的二值序列。
假设我们选取的是一维的混沌系统,产生的混沌序列我们记为:
其中
对于量化后的混沌数字序列我们记为:
对于量化的方法我们可以用公式表示:
上述序列
对于不同的混沌系统,其生成的混沌序列数值范围均不同,对其进行定点数化时所需要的定点数格式也就不同。为了更好的模块通用性,设计出了归一化模块。归一化模块对混沌系统的输出进行归一化修正,使不同混沌序列生成模块的输出均在同一个范围之内,使设计方法可以使自适应扰动纠错功能兼容不同的混沌系统。
对于不同的混沌系统进行基本运算的提取,可以发现只需要加减法和乘法运算模块。对于硬件来说还需要初始化控制模块和同步控制模块,这五种基本的ip核可以通过组合来实现不同的混沌系统。
图4为logistic混沌序列生成模块ip结构图。初始化控制模块inl通过上层的配置进行初始化数据的输出,通过符号改变模块s_chang使加法模块adder实现减法的功能。对于不同时序的数据利用同步模块sync进行同步后再进行计算,可以保证时序的正确性。logistic系统被设计成了四段式的流水线方式实现,各段可以并行计算以提高计算速度和系统时钟上限。
工程采用浮点数的实现方法对通用混沌设计方法进行硬件实现,使用alink公司的zynq7000开发平台ax7020以及芯片为ad9708的da数模转换模块。此款开发板使用的是xilinx公司的zynq7000系列的芯片xc7z020-2clg400i,具有丰富的系统资源和逻辑模块适用于实现混沌系统。数模转换模块具有数据宽度为8位的双口并行输出,最大采样率为125msps,适用于输出相图观测实验。使用软件是vivado18.3,编程语言为veriloghdl硬件编程语言。
logistic混沌系统的状态方程如下公式所示:
xn 1=uxn(1-xn)(n=1,2,3,…)
logistic是一维离散混沌系统,可以直接用来数字实现而不需要数字化。使用通用方法设计系统,对工程编写相应约束文件,再经过编译、综合、仿真、得到编程文件然后下载到幵发板。模拟波形通过da模块在数字示波器上进行查看,数字波形通过串口发送到电脑保存。logistic混沌系统吸引子相图示波器波形如图5所示,本设计方法在开发板上成功实现了映射。
实施例二:
本实施例提供一种lorenz混沌系统。与实施例一的区别在于,本实施例的混沌序列生成模块用于实现lorenz混沌序列。
图6是lorenz混沌序列生成模块ip结构图。同样的使用五种ip核完成了整个系统的搭建,设计成了四段式的流水线方式实现。
lorenz混沌系统的状态方程如下公式所示:
lorenz是三维连续混沌系统,我们需要对其进行euler算法进行离散化才可以进行设计实现。
由于fpga、dsp等现代数字信号处理器件只适合于处理离散系统或数字系统。所以,要用技术实现连续时间混沌系统,必须先对其进行离散化处理。目前,连续混沌系统离散化通常使用的三种算法分别是:简单算法euler,改进euler算法和runge-kutta算法。这三种算法均可以用于fpga器件的技术实现,相比之下后两种算法较算法euler来说精度较髙,但在硬件实现时占用资源也较多。而对于实现混沌系统所需要的数制我们选用ieee754标准中的单精度浮点数,相对于定点数的表示浮点数在同样位数下的表示范围和精度更大。综合考虑使用euler来实现fpga平台上浮点数的运算,在资源以及性能方面有较大的优势。下面对euler算法进行详细说明。
假设连续时间混沌相图的状态方程如下所示:
euler算法实际是利用导数的定义来实现的,导数的定义如下所示:
当t的值趋于无穷小时,上述公式可以近似为如下:
将上式带入连续时间系统的状态方程后可以得出其离散化状态方程,表示如下:
lorenz离散化后的状态方程如所示:
通过数字化后得到离散状态方程,使用通用方法设计系统。进行时序约束后综合下载,相图通过示波器查看。lorenz混沌系统吸引子相图的示波器波形如图7所示,本设计方法在开发板上成功实现了映射。
本发明使用fpga技术实现了通用混沌系统设计,并且进一步实现了一维离散logistic混沌系统和三维lorenz连续混沌系统两种算例,对设计的通用性进行了详细的分析。对实现混沌系统的ip核进行了详细的讲解,分别分析了logistic混沌系统和lorenz混沌系统的设计案例。并结合顶层模块在实际fpga上进行实验,对两种混沌系统的实验相图进行了分析,证明了通用设计方法的正确性。相对于现有技术,本发明的混沌系统具备很好的通用性,解决了混沌系统开发周期长的问题,在实际应用中,能够较快地设计和实现相应的混沌系统。
以上实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
1.一种基于fpga的通用混沌系统,其特征在于,该系统包括混沌迭代控制模块、混沌序列算法模块、浮点数定点数转换模块、串口发送模块、da控制模块、da转换芯片以及globalbuffer;
混沌序列算法模块,用于产生所需要的混沌数字序列以及对混沌系统迭代的纠错和扰动计算;
混沌迭代控制模块,用于通过外部的数据配置对混沌序列算法模块进行初始化迭代、纠错和扰动模式的控制,控制整个系统的运行;
globalbuffer,用于协调混沌序列算法模块产生混沌数字序列的速度和串口波特率的差异,保证外部能够接受到完整的混沌数字序列;
串口发送模块,用于将从globalbuffer接受的混沌数字序列输出至应用端;
浮点数定点数转换模块,用于负责对混沌系统产生的浮点数进行定点数的格式转换,以匹配d/a转换芯片的数据格式;
da控制模块,用于控制定点数混沌序列输出给da转换芯片;
da转换芯片,用于输出混沌序列的模拟波形检测相图。
2.如权利要求1所述的基于fpga的通用混沌系统,其特征在于,所述混沌序列算法模块包括扰动纠错模块、混沌序列生成模块、m序列生成模块、量化模块以及归一化模块。
3.如权利要求2所述的基于fpga的通用混沌系统,其特征在于,所述扰动纠错模块,用于在上层混沌迭代控制模块配置好扰动模式后,通过混沌序列生成模块的反馈来对混沌序列生成模块的迭代数据进行控制;
所述混沌序列生成模块,用于产生所需要的浮点数序列,受上层的混沌迭代控制模块进行控制;
所述m序列生成模块,用于生成m序列,当混沌序列生成模块生成数据超过规定范围后对扰动纠错模块进行反馈,扰动纠错模块根据配置好的扰动模式对混沌序列生成模块进行m序列的扰动;
所述量化模块,用于基于量化算法对浮点数的混沌序列进行量化;
所述归一化模块,用于对混沌序列生成模块的输出进行归一化修正,使不同混沌序列生成模块的输出均在同一个范围之内,使自适应扰动纠错功能兼容不同的混沌系统。
4.如权利要求2或3所述的基于fpga的通用混沌系统,其特征在于,所述混沌序列生成模块包括初始化控制模块、符号改变模块、加法模块、同步模块、乘法模块;初始化控制模块通过上层的配置进行初始化数据的输出,通过符号改变模块使加法模块实现减法的功能,对于不同时序的数据利用同步模块进行同步后再进行计算,保证时序的正确性。
5.如权利要求2或3所述的基于fpga的通用混沌系统,其特征在于,所述扰动纠错模块的扰动模式包括随机扰动、周期扰动、纠错扰动、周期纠错扰动。
6.如权利要求3所述的基于fpga的通用混沌系统,其特征在于,所述量化算法采用比特抽取量化方法。
7.如权利要求6所述的基于fpga的通用混沌系统,其特征在于,所述比特抽取量化方法包括:将离散混沌实数序列中所有浮点实数值均写成32bit二进制数形式,选定尾数部分比特作为抽取位,然后将选定位进行特定异或运算,组成最终的二值序列。
技术总结