




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文 论文题目:基于Logistic混沌算法的动态口令芯片设计学生姓名:学生学号:专业班级:学院名称:电子与通信工程指导老师: 2012年6月5日 摘 要 为了解决信息安全问题,得到加密用的混沌随机数,本文分析了Logistic混沌模型,提出了一种便于硬件实现的离散Logistic混沌算法,并完成了其硬件结构设计。针对混沌随机数的典型应用,本文利用所述离散Logistic混沌算法硬件电路,完成了一款动态口令芯片的设计,其具有安全性好,性价比高,速度快等优点,其应用价值广。关键字:Logistic FPGA 动态口令 混沌 AbstractIn order to sove the problem of information security,and get the chaotic random numbers for encryption,this paper analyzed the Logistic random chaos model and gave a kind of discrete Logistic chaos algorithm which is easy for hardware realization,and completed its hardware structure design.The dynamic password chip is a typical application of random number in chaos,and this paper used the discrete Logistic chaos algorithm mentioned above,and completed a dynamic password chip design,it has the advantages of good security,low cost,high speed,and extensive application value.Keywords: Logistic; FPGA;dynamic password; chaotic 目 录 一、引言6二、方案论证6三、Logistic混沌算法设计6(一)Logistic混沌模型分析6(二)离散化的Logistic混沌算法7(三)Logistic混沌算法系统设计8(四)Logistic混沌算法模块设计9四、动态口令芯片设计10(一)动态口令芯片的设计方案10(二)动态口令芯片的实现111. 动态口令芯片硬件实现平台112. 软件设计和仿真平台113. 基于FPGA的硬件电路模块设计12五、动态口令芯片的效果分析28六、结论29七、参考文献30八、附录31(一)动态口令芯片的电路图311.动态口令芯片的整体结构图312Logistic核心算法模块结构313. 基于FPGA设计的顶层电路图31(二)基于FPGA设计的动态口令芯片各个子模块的设计代码321. count模块设计代码322. 求补码模块(minus)设计代码343. mux2_1模块代码344. diedai模块设计代码355. enable模块设计代码366. yingshe模块的设计代码377. xiaodou模块的设计代码398. key模块设计代码409. deal模块的设计代码4310.dis_choose模块的设计代码4411.fenpin模块的设计代码4512.display模块的设计代码46一、 引言随着现代信息技术的不断发展,信息安全技术变得越来越重要。为了使信息在 的过程中不被窃取,通常要采用加密技术1。比较通用的加密技术中,序列密码是一中和非常典型有效的加密方法2,其采用伪随机数序列和需要加密的内容进行运算,得到加密后的内容。混沌现象是一种确定性的,类似随机的过程,这种过程既非周期又不收敛,并且对初始值有及其敏感的依赖性。从时域上看,混沌映射得到的序列类似于随机序列,相关性较弱,具有很好的类白噪声特性,因此可以用来产生伪随机信号或伪随机码3。Logistic映射是一种非常简单却被广泛应用的经典混沌映射4-5。动态口令技术是一种非常有效的身份认证&加密技术6-7。通常的动态口令技术采用时间同步的认证机制8,常用的算法是使用Hash函数的MDS算法9。该算法具有计算代价大,芯片成本高,专利授权费贵等缺陷。本文采用Logistic混沌模型,设计出一套可以用硬件实现的算法,并利用该算法实现了一个动态口令IC,具有安全性好,性价比高,速度快等优点,应用价值广泛。本设计的实现平台采用FPGA,FPGA技术应用逐渐在中国得以推广,其广泛于数字通信技术,计算机应用技术,自动化控制等领域。FPGA的最新发展主要包括功能扩展和现场可编程技术,在原来离线的串/并行格式编程的基础上,创新产生了所谓的在线式可编程技术(ISP)和动态可重配技术(或称cache logic)。使FPGA器件不仅仅是现场可编程,而且可用户在线可编程,动态容量可扩展,从而进一步提高了FPGA技术的应用灵活性,降低了应用系统的实现成本10。二、 方案论证方案一:用CPLD去实现该动态口令牌芯片设计方案二:用FPGA去实现该动态口令牌芯片设计 方案比较:尽管CPLD和FPGA都是可编程的ASIC芯片,但是FPGA相比CPLD而言更适合完成时序逻辑,同时在编程上,FPGA比CPLD具有更大的灵活性,支持在线可编程,再者FPGA相比CPLD集成度要高,而且FPGA内部触发器资源丰富,在时序要求较高的场合用FPGA去实现更容易达到时序收敛,基于上述比较,最终方案选择方案二。三、 Logistic混沌算法设计(一) Logistic混沌模型分析现代混沌学研究起源于20世纪60年代,混沌是一种特殊的动力学行为,其会在该动力学系统中表现出一种确定性的,类随机的过程。这种过程非周期,不收敛,但是有边界。所以这样的一种过程,只要其初始值有微小的变化,就会形成完全不同的两组序列,所以利用混沌现象的天然随机过程,可以得到很好的随机序列,从而应用到加密领域,达到很好的加密效果。Logistic是混沌模型中比较经典的一种,其起源于虫口模型(worm number model11)Xk+1=aXk (1)(1)式中Xk+1为下一代虫子的数量,而Xk为上一代虫子的数量,这是个理想的情况,但是实际中由于虫子的食物问题,生存空间问题,天灾问题,事实上两代虫子之间的数量可以表示为如下式:Xk+1=aXk(1-Xk) (2)根据研究表明12,当a和Xk满足关系:3.5699a4,且0Xk1时,虫子的数量在代与代之间处于混沌变化,下一代虫子的数量和这当代的数量之间的关系非收敛,变化具有很强的随机性,无法从动力学行为13规律找到破解密文的办法。Schuster H.G14证明了Logistic函数的概率分布度函数为: (3)可见不依赖于其初始值的不同而不同,所以其遍历性等同于零均值白噪声14,所以在保证初始值未知的情况下,这样的随机序列与利用的物理效应得到的随机序列在统计意义上是一致的。(二) 离散化的Logistic混沌算法根据前面对Logistic混沌模型的分析可知,Logistic映射关系中虫子的数量在代与代之间处于混沌变化,可以把每一代虫子的数量作为一个数据,而随着虫子的繁衍,每一代虫子的数量的序列可以形成一个随机性良好的随机序列。而Logistic混沌模型本身的数学关系的定义域,但是由于硬件计算需要使用离散化的方式,因此,需要把Logistic混沌模型中的映射关系的定义域从实数域映射到整数域。首先定义表达式(2)中的a为序列选择因子,通常也称之为系统的密码。设离散化Logistic混沌算法中的序列选择因子为X。而X的取值范围为0,N,其中N为自然数,显然这样的序列因子是不能进行计算的,设x是经过变换的序列选择因子,且满足3.56699x4,可以证明,X,x满足表达式(4): (4)其中,“int()”代表对“()”内的数据进行取整数运算,b为计算精度影响因子,取值为自然数。为了保证四位有效数字的计算精度,N应该不小于自然104,b至少取值为1。这样在二进制计算中,可以令N为一个32位二进制数。另外,可以较容易证明表达式(5)成立。 (5)为了把浮点运算转换为整数运算,并且适用于硬件电路实现,可以把表达式(5)和N=232-1,b=1代入(4),经过一系列数学推导得到如下式子(6): (6)设最后产生的随机序列为SK,并且假设SK的取值范围为0,M。而满足虫口关系表达式(2)的序列为sk,显然有: (7)由于x和sk满足虫口模型,因此将(6)和(7)代入(2),经过一定的数学推导过程得到如下式子(8): (8)在本文中,取值,并且由于,代入上述表达式(8)可得: (9)表达式(9)中除法运算均为整数运算,因此(9)是一个纯整数域上的迭代运算表达式,称之为离散化的Logistic混沌算法,所生成的Sk序列就是一个良好的混沌随机数序列。其中X为上文所述的序列选择因子,式子将定义在实数域中的序列选择因子X映射到整数域中。Sk为混沌随机序列,式子(216-Sk-1)为求混沌序列Sk的补码。1/248为将产生的混沌随机序列向右移48位,得到新的混沌随机序列。(三) Logistic混沌算法系统设计为了实现该Logistic混沌算法,根据表达式(9),设计出如图1所示的Logistic混沌算法系统结构: 图1.Logistic混沌算法系统结构由于产生Sk序列的Logistic混沌算法是一个反复迭代的过程,Sk+1的产生依赖于Sk的取值。因此称这个运算为“Logistic迭代运算”。图1中的“Logistic迭代计算模块”可以实现这个功能。输入Sk的值,经过若干个时钟周期后计算出Sk+1的值。而产生Sk序列的第一个数据的方法是对一个系统设定的初始值进行Logistic迭代计算,而这个初始值的取值范围应该与Sk的取值相同,为0,M,并且称这个初始值为“随机种子”。在Logistic混沌算法系统中,使用一组寄存器存储随机种子,当进行第一次迭代计算时,需要把随机种子输入给Logistic迭代计算模块,当进行后面的Logistic迭代计算时,需要把前一次的迭代计算结果代入。通过一个迭代寄存器配合一个多路选择器可以选择输入随机种子或者是前一次的代买结果给Logistic迭代计算模块。图1中的定义在整数域的密码就是前文所诉的序列因子(密码),由于序列选择因子的定义域是0,N,因此需要“密码取值映射”模块完成(10)式的计算, (10)。根据(9)式,“数值映射”模块计算1/248的结果,“取对定义域补码”模块完成(11)式的运算,其中定义=-1 (11),迭代计算的结果就是一个随机数的序列,其需要进行处理后可用于加密运算或者动态口令的产生。(四) Logistic混沌算法模块设计如图1所述的系统,其核心的处理部件包括“Logistic迭代计算模块”,“迭代状态”模块和“密码数值映射”模块。图2为“迭代状态”模块的逻辑图,该模块的输入信号为“上电/复位”信号,“迭代使能信号”,以及时钟信号。输出信号为“迭代次数”信号和“迭代状态信号”。图2 迭代状态模块的逻辑图 如图2所示,该模块需要需要一个1位的状态寄存器和一个迭代次数寄存器。由于迭代状态只有两大类:“迭代次数为0”,“迭代次数大于0”。因此可以根据图2的方式构建有限状态机,进而用标准的数字系统设计方法实现该有限状态机。而迭代次数寄存器的电路满足如下逻辑:当“上电/复位”信号有效时,对该寄存器清零,如果有“迭代操作信号”时,判断是否出现寄存器溢出,如果没有溢出,则对寄存器进行加“1”运算,否则就对进村器赋值“1”。“密码取值映射”模块的任务是完成(10)式的计算。由于7046等于13位二进制数“1101110000110”,则可以利用标准的二进制乘法计算方法,对X分别乘以二进制数“1101110000110”的每一位数字移位后进行累加,最终得到X*7046的结果。由于上述算法为一个状态机,因此需要一个状态机控制配合上述运算,状态转换规律如图3所示: 图3 密码取值映射模块状态机按照图3的方式构建有限状态机电路,并且在每一个状态下,都进行一次累加运算,当状态跳转规律符合从状态寄存器0的状态,一次经历状态寄存器1,2,3的状态,并最终回到状态寄存器0的状态时,此时该电路的输出是X*7046的结果,得到X*7046的结果以后,对这个结果进行二进制的右移14位运算,可以得到int(X*7046/214),再对int(X*7046/214)进行算,可得 int(X*7046/214)的结果。Logistic迭代计算模块完成三个数据Sk, Sk和Y的乘法。Sk和Sk均为16位二进制,Y是32位二进制数。首先计算Sk和Sk的乘积,然后再计算这个乘积和Y的乘积。四、 动态口令芯片设计(一) 动态口令芯片的设计方案利用上述Logistic混沌算法设计成一个核心计算模块,可以完成一个动态口令芯片的设计。本文所述的动态口令芯片是一个8位十进制数据的动态口令,而动态口令的变化时间为10秒。每个动态口令芯片需要独立的存储自己的随机种子个序列选择因子(密码)。 图4 动态口令芯片结构 图4给出了动态口令芯片的结构,其中核心计算模块使用了前文所述的Logistic混沌算法,每当核心计算模块收到迭代使能信号以后,可以进行一次迭代计算。输出的最终动态口令定义为Sk,Sk和Y的乘积对108取余数运算的结果。图4中的“迭代使能计算”模块负责每隔10秒发送一个迭代 使能信号,并且负责记录迭代的次数,迭代次数是动态口令芯片的内部状态数据,可以用于动态口令芯片的校准验证等工作。“拨码按键输入”模块是外部接口模块,负责协调外部输入,得到随机种子和随机序列选择因子(密码),并且协调外部控制显示模块的输出。LED显示模块负责把最终的动态口令数据变换为七段数码管显示出来,同时,在外部接口的控制下,可以选择输出内部的一些状态,包括:“迭代次数”,“随机种子”,“随机序列选择因子(密码)”。(二)动态口令芯片的实现1. 动态口令芯片硬件实现平台本文所述的动态口令芯片的硬件实现平台是Altera的EP2C8Q208C8(FPGA),它属于cycloneII系列(90nm工艺),特点是具有较多的寄存器资源并且价格较低。FPGA是英文FieldProgrammable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: 1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此, FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活2. 软件设计和仿真平台本动态口令芯片在设计过程中所用到的软件设计平台是Altera公司的Quartus II9.0,Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。设计过程中所需的仿真平台是Mentor公司的Modelsim,Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。其主要特点是支持RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真,集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象Virtual Object、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能3. 基于FPGA的硬件电路模块设计3.1 顶层模块设计基于FPGA平台设计的动态口令芯片的顶层电路模块如下图5所示:图5 基于FPGA设计的顶层模块如上图所示,本文所述的基于Logistic混沌算法的动态口令芯片的顶层电路由12个子模块组成。3.1.1 “enable”模块“enable”模块主要用于控制动态口令芯片每隔10s钟产生一个随机数序列,该模块输入信号为时钟信号“clk”和复位信号“clr”,输出信号为迭代使能信号“en”,该信号送到下一个“iteration”模块。3.1.2 “iteration”模块“iteration”模块的输入信号为时钟信号“clk”,复位信号“clr”以及来自“enable”模块的迭代使能信号“en”,其输出信号为迭代状态信号“state”和迭代次数信号“times”。3.1.3 “mux2_1”模块“mux2_1”模块用于选择上文所述的随机种子和混沌序列,其输入信号为来自“enable”模块的迭代使能信号“en”,“iteration”模块的“state”模块,“key”模块的随机种子“random”以及核心计算模块“count”的迭代混沌序列“out2”。当“en”为“1”,“state”为“0”,“mux2_1”模块选择随机种子“random”,当“en”为“1”,“state”为“1”,“mux2_1”模块选择混沌序列“out2”。3.1.4 “minus”模块“minus”模块用于对“mux2_1”模块的输出进行求补码运算。3.1.5 “key”模块“key”模块用于产生动态口令芯片所需的随机种子和初始密码,以及显示模式切换所需的控制信号。3.1.6 “xiaodou”模块由于按键在按下的过程中,存在硬件抖动问题,从而会出现信号的建立时间和保持时间问题,导致信号误采样,为此用“xiaodou”模块解决上述问题,保证信号的稳定采样。3.1.7 “mapping”模块如上文所述,Logistic混沌模型本身的数学关系的定义域,但是由于硬件计算需要使用离散化的方式,需要对Logistic函数的运算离散化,为此本设计中采用了“mapping”模块用来将“key”模块产生的初始密码从实数域映射到整数域,其功能完成上文(10)式的运算过程。3.1.8 “count”模块“count”模块是设计的核心算法模块,其主要功能是实现上文(9)式的运算过程。3.1.9 “deal”模块“deal”模块用于将“count”模块产生的混沌随机序列进行处理,该模块的输出为“count”模块产生的混沌随机序列的低32位。3.1.10 “dis_choose”模块“dis_choose”模块用于选择“display”模块要显示的对象,该模块的控制信号为来自“key”模块的信号“dis_mode”,该模块可以选择动态口令,随机种子,初始密码,迭代次数作为显示对象。3.1.11 “display”模块“display”模块用于显示数据,“fenpin”模块产生“display”模块扫描的时钟。 3.2 子模块设计与仿真本文只给出了动态口令芯片内部一些比较关键的模块设计与仿真结果,并进行了分析说明。3.2.1 count模块本文所述count模块是本设计的核心模块,该模块在一定程度上决定了本动态口令牌芯片的功能。该模块实现了上文所述(2)式的计算模型,在本动态口令芯片设计中,该模块用于计算式子的计算,其中为动态口令芯片的初始密码,Sk为随机种子或者迭代混沌序列,216-Sk-1为Sk的补码,count模块实现数据相乘的方法是将乘法转换为加法运算,通过将一个乘数所对应的二进制数进行移位,并且与被乘数所对应的二进制数相加,从而实现两个数据的相乘。基于FPGA的“count”模块的电路模块如下图6所示: 图6 基于FPGA设计的“count”模块从图6可知,“count”模块的输入信号为时钟信号“clk”,复位信号“clr”,初始密码信号“a0”,随机种子(迭代混沌序列)“x0”,随机种子(迭代混沌序列)“x0”的补码“x1”。输出信号为混沌序列信号“out1”以及混沌序列信号“out1”的高16位信号“out2”。“count”模块的功能仿真结果如下图7所示: 图7 count模块功能仿真结果在仿真过程中,通过给不同的初始密码和随机种子(迭代混沌序列),观察该模块的输出结果与预期的是否一致,从Modelsim仿真结果可知,当给定不同的初始密码和随机种子(迭代混沌序列)时,count模块的输出结果与预期的是完全一致的。在仿真的过程中为了证明设计模块和测试模块的代码都已经被仿真到,在仿真的过程中对代码的覆盖率也进行了仿真,count模块的代码覆盖率仿真结果如下图7所示: 图8 count模块仿真的代码覆盖率结果从上图8可知,count模块的代码覆盖率达到了100%,说明count模块的设计代码和测试代码都已经被仿真到。3.2.2 minus模块minus模块主要用于对随机种子(迭代混沌序列)进行求补码运算,也就是实现式子216-Sk-1的功能。minus模块功能比较简单,主要实现减法功能,基于FPGA的“minus”模块设计如下图9所示:图9基于FPGA设计的“minus”模块该模块的功能仿真结果如下图10所示: 图10 minus模块功能仿真结果从上图10的仿真结果图分析可知,当给minus模块一个输入时,其仿真结果的输出为输入数据的补码,即minus模块的功能仿真结果是正确的。该模块的代码覆盖率仿真结果如下图11所示: 图11 minus模块仿真的代码覆盖率结果3.2.3 mux2_1模块mux2_1模块用于对随机种子和迭代混沌序列进行选择,该模块的输出信号主要由输入信号为迭代使能信号“en”和迭代状态信号“state”,进行控制,当动态口令芯片复位或是刚上电后,迭代使能信号“en”为“1”和迭代状态信号“state”为“0”,此时mux2_1选择随机种子作为其输出,在以后的工作过程中,迭代使能信号“en”为“1”和迭代状态信号“state”为“1”,“mux2_1”模块选择来自count模块的迭代混沌序列作为其输出。基于FPGA的“mux2_1”模块设计如下图12所示:图12基于FPGA设计的“mux2_1”模块“mux2_1”模块的功能仿真结果取下图13所示: 图13 mux2_1模块的功能仿真结果分析图13的仿真结果可知,当该模块在复位后,输入信号迭代使能信号“en”为“1”和迭代状态信号“state”为“0”,此时输出信号x0的值等于输入信号random的值,随后,输入信号迭代使能信号“en”为“1”和迭代状态信号“state”为“1”,输出信号x0的值始终等于输入信号out2的值。从分析可知,该模块的功能仿真结果正确,该模块的代码覆盖率仿真结果如下图14所示: 图14 mux2_1模块仿真的代码覆盖率结果从图14的覆盖率仿真结果可知,该模块的分支覆盖率并没有达到100%,原因是,在mux2_1模块的功能仿真中,输入信号迭代使能信号“en”和迭代状 态信号“state”的组合只有两种,即en=“1”,state=“0”和en=“1”,state= “1”,而仿真器认为输入信号迭代使能信号“en”和迭代状态信号“state”的组合有四种,在mux2_1模块的设计模块和测试模块的代码中输入信号迭代使能信号“en”和迭代状态信号“state”的组合只出现了符合该模块功能的 两种组合,所以该模块分支覆盖率的仿真不可能达到100%。3.2.4 iteration模块“iteration”模块的主要功能是产生mux2_1模块工作所需的迭代状态信号“state”以及对动态口令芯片的迭代次数进行计数,该模块的输入信号为时钟信号“clk”,复位信号“clr”,来自“enable”模块的迭代使能信号“en”。 在时钟信号“clk”的作用下,每检测到一次迭代使能信号“en”的有效电平,迭代次数计数器就加1,并且将迭代状态寄存器的输出置“1”。基于FPGA的“iteration”模块设计如下图15所示: 图15基于FPGA设计的“iteration”模块“iteration”模块的功能仿真结果如下图16所示: 图16 iteration模块的功能仿真结果从上图16可分析得到,iteration模块在输入信号“clk”的作用下,每检测到一次“en”的有效电平,迭代次数寄存器就加1,并且迭代状态寄存器的输出被置“1”,当迭代次数计数器加到65535后,在下一次检测到“en”有效电平时,迭代次数寄存器又从1开始做加1操作。iteration模块的代码覆盖率仿真结果如下17所示: 图17 iteration模块仿真的代码覆盖率结果从上图17可知,iteration模块仿真的代码覆盖率达到100%,说明该模块的设计代码和测试代码都已经被仿真到。3.2.5 enable模块“enable”模块主要用于控制每隔10s产生一个随机混沌序列,即动态口令。该模块的输入信号是时钟信号“clk”和复位信号“clr”,输出信号为迭代使能信号“en”,该模块在时钟信号“clk”的作用下,控制迭代使能信号“en”每隔10s产生一个有效电平,控制迭代使能信号“en”供后继模块“diedai”模块和“mux2_1”模块使用。基于FPGA设计的“enable”模块如下图18所示: 图18基于FPGA设计的“enable”模块“enable”模块的功能仿真结果如下图19所示: 图19 enable模块的功能仿真结果从上图19可以很明显的看出,当“enable”模块在复位完成后,迭代使能信号“en”每隔10s产生一个有效电平信号。该模块仿真的代码覆盖率结果如下图20所示: 图20 diedai模块仿真的代码覆盖率结果从图20可以得知,diedai模块的设计代码和测试代码都被仿真到,代码覆盖率达到了100%。3.2.6 mapping模块“mapping”模块主要用于将从“key”模块得到的初始密码从实数域映射到整数域,从而实现Logistic的离散化混沌算法,其功能是完成上文(10)式的运算过程。基于FPGA设计的“mapping”模块如下图21所示:图21 基于FPGA设计的“mapping”模块从上图21可知,“mapping”模块的输入信号有时钟信号“clk”,复位信号“reset”,输入完成标志信号“flag”以及来自“key”模块的离散化初始密码“din”,输出信号为“din”从实数域映射到整数域的初始密码“a0”。“mapping”模块的功能仿真结果如下图22所示: 图22 “mapping”模块的功能仿真结果 从图22可知,当给“mapping”模块进行复位时,其输出信号被清零,当复位操作完成后,将输入完成标志信号“flag”拉高有效,经过若干个时钟周期后,给定的实数域中的初始密码所对应的整数域密码被计算出,经验证,结果是正确的,由于为了清晰可见,只截取了仿真结果的一小部分。“mapping”模块的仿真代码覆盖率结果如下图23所示: 图23 “mapping”模块的仿真代码覆盖率结果从图23可知,“mapping”模块的仿真代码覆盖率并没有达到100%,经过分析得出,在该模块设计代码的状态机中有default项,但是当该模块正常工作时,是不可能跳到default这个状态,由于仿真器没有把设计代码中状态机的每个状态都仿真到,所以仿真器给出的代码覆盖率结果不会是100%。3.2.7 Top1模块 “Top1”模块是“count”模块和“minus”模块的组合,通过对“Top1”模块进行仿真来确定“count”模块和“minus”模块在联仿的过程中有无功能错误。基于FPGA设计的“Top1”模块如下图24所示: 图24 基于FPGA设计的“Top1”模块“Top1”模块的功能仿真结果如下图25所示: 图25 “Top1”模块的功能仿真结果分析上图25可知,当给“Top1”模块进行复位时,其输出信号全部清零,当复位操作完成后,给定一个初始密码,一个随机种子及其对应的补码,在时钟信号“clk”的作用下,进过若干个时钟周期后,对应的随机混沌序列信号“out1”将被计算出,此时随机混沌序列信号“out1”的高16位“out2”也输出。经验证,仿真结果跟实际的计算时一致的,可以确定“Top1”模块的功能没有问题,“Top1”模块仿真的代码覆盖率结果如下图26所示: 图26 “Top1”模块仿真的代码覆盖率结果从图26的仿真结果可以看出,“Top1”模块仿真的代码覆盖率达到了100%。3.2.8 Top2模块“Top2”模块主要由“mux2_1”模块和“Top1”模块组成,仿真“Top2”模块的主要作用是确定当“mux2_1”模块和“Top1”模块联合时是否有功能错误。基于FPGA设计的“Top2”模块如下图27所示:图27 基于FPGA设计的“Top2”模块“Top2”模块的功能仿真结果如下图28所示: 图28 “Top2”模块的功能仿真结果从图28的仿真结果可以得知,当“Top2”模块完成复位操作后,给输入迭代使能信号“en”高电平“1”,给迭代状态信号“state”低电平“0”, “mux2_1”模块将选择随机种子参与运算,并且验证了其第一次计算的结果是正确的,随后“mux2_1”模块将选择迭代混沌序列信号“out2”参与计算,通过分析软件仿真的结果数据,并与实际计算的值进行了比较,比较结果是软件仿真的跟实际计算出的值是完全一致的,说明“Top2”模块的功能仿真正确。“Top2”模块功能仿真的代码覆盖率结果如下图29所示: 图29 “Top2”模块功能仿真的代码覆盖率结果从图29的“Top2”模块代码覆盖率结果可知,分支覆盖率没有达到100%,其原因和上文所述“mux2_1”模块的代码覆盖率结果一样,上文已经对“mux2_1”模块的分支覆盖率没有达到100%的原因进行了分析与说明,在此就不在重复。3.2.9 Top3模块“Top3”模块主要由“iteration”模块和“Top2”模块组成,仿真“Top3”模块的作用主要为了仿真当“iteration”模块和“Top2”模块联合时其功能有没有问题。基于FPGA设计的“Top3”模块如下图30所示:图30 基于FPGA设计的“Top3”模块“Top3”模块的功能仿真结果如下图31所示: 图31 “Top3”模块的功能仿真结果从图31的仿真结果分析得知,当“Top3”模块完成复位操作后,每隔10s给迭代使能信号“en”一个有效高电平“1”,开始“diedai”模块的输出迭代状态信号“state”为低电平“0”,此时迭代使能信号“en”和迭代状态信号“state”控制“mux2_1”模块选择随机种子“random”参与混沌迭代计算,在随机种子“random”参与混沌迭代计算后,迭代次数计数器开始加1,并且迭代状态信号“state”被置“1”,在之后的计算中,迭代使能信号“en”和迭代状态信号“state”控制“mux2_1”模块选择混沌序列信号“out2”参与混沌迭代计算。通过将软件仿真的结果数据与实际计算出的数据进行比较,比较发现通过软件仿真的输出结果数据与实际计算的结果数据是一致的,即证明“Top3”模块的功能正确。“Top3”模块功能仿真的代码覆盖率结果如下图32所示: 图32 “Top3”模块功能仿真的代码覆盖率结果从图32的代码覆盖率结果可知,“Top3”模块中所有的模块的设计代码和测试代码都被仿真到了,覆盖率达到100%。3.2.10 Top4模块“Top4”模块主要由“enable”模块和“Top3”模块组成,仿真“Top4”模块的主要作用是仿真当“enable”模块和“Top3”模块联合时整体功能是否有问题。基于FPGA设计的“Top4”模块如下图33所示: 图33 基于FPGA设计的“Top4”模块“Top4”模块的功能仿真结果如下图34所示:图34 “Top4”模块的功能仿真结果从上图34的仿真结果可以得知,当“Top4”模块完成了复位操作之后,“enable”模块的输出迭代使能信号“en”每隔10s产生一次有效的高电平,并且迭代次数计数器也相应的加1,从图中可以很清楚地看到产生第一个迭代使能信号“en”,“mux2_1”模块选择的是随机种子“random”参与混沌迭代计算,在此后产生迭代使能信号“en”时,“mux2_1”模块选择的都是从“count”模块反馈的混沌序列信号“out2”参与混沌迭代计算。通过将软件仿真的“Top4”模块的输出结果数据与实际计算的结果数据进行比较,发现软件仿真的结果数据与实际计算的结果数据是完全一致的,可以证明“Top4”模块的功能没有问题。“Top4”模块功能仿真的代码覆盖率结果如下图35所示: 图35 “Top4”模块功能仿真的代码覆盖率结果从图35的代码覆盖率结果可知,“Top4”模块功能仿真的代码覆盖率并没有达到100%,经过分析原因有两个,一个原因是“diedai”模块的设计代码中迭代使能信号“en”和迭代状态信号“state”的组合情况没有全部出现,仿真器没有仿真到除“diedai”模块的设计代码中迭代使能信号“en”和迭代状态信号“state”的组合情况之外的其他组合情况,所以条件分支覆盖率不会达到100%。另一个原因是在“diedai”模块的设计代码中有这样的语句,当迭代次数寄存器加到65535时,迭代次数寄存器置1,并且从1开始继续加1,而为了仿真的快速性,在“Top4”模块的测试代码中没有给那边对的时间让迭代次数寄存器加到65535,所以在“diedai”模块的设计代码中的一个if语句分支没有被仿真到,仿真结果的条件分支覆盖率不会达到100%。3.2.11 Top5模块“Top5”模块主要由“mapping”模块和“Top4”模块组成,仿真“Top5”模块的主要作用是仿真当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届福建省南平市第一中学化学高二第一学期期中质量检测试题含解析
- 甘肃省庆阳长庆中学陇东中学分校2026届化学高三上期中综合测试试题含解析
- 2026届天津市武清区等五区县高一化学第一学期期末联考试题含解析
- 现代文学鉴赏课件
- 2025年春季英语四六级写作高分策略与实战演练试卷
- 现代女性健康知识培训课件
- 2025年Python二级考试模拟试卷 实战演练知识点精讲
- 王波培训知识产权贯标课件
- 重庆市七校2026届化学高一上期中监测模拟试题含解析
- 王亚林律师课件
- 剪映剪辑教学课件
- 麦当劳营销策略分析及对策建议定稿
- 全陪导游工作流程
- 2025年心理辅导:声音疗愈《听听声音》课件设计
- 2025年七年级上册生物知识点总结样本(2篇)
- 变化与更新-2025中国家居家装行业发展研究报告-树懒生活fine-202501
- 主要施工机械设备、劳动力、设备材料投入计划及其保证措施
- 《柴油机的维护保养》课件
- 4S店企业职业卫生培训
- 石油化工设备维护与检修手册
- 2023部编新人教版五年级(上册)道德与法治全册教案
评论
0/150
提交评论