【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现

上传人:r****d 文档编号:145005065 上传时间:2022-08-28 格式:DOC 页数:49 大小:73.50KB
收藏 版权申诉 举报 下载
【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现_第1页
第1页 / 共49页
【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现_第2页
第2页 / 共49页
【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现_第3页
第3页 / 共49页
资源描述:

《【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现》由会员分享,可在线阅读,更多相关《【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现(49页珍藏版)》请在装配图网上搜索。

1、【电子信息工程毕业设计+文献综述+开题报告】基于FPGA的过失控制编码的设计与实现 〔20_ _届〕 本科毕业设计 基于FPGA的过失控制编码的设计与实现 摘 要 本文主要介绍了电子设计自动化〔EDA〕技术的主要特点、现状、前景及意义,并就课题的研究方向做了相关的论述。进一步论述了EDA技术的开展对电路设计应用的影响,探讨了通过VHDL语言和可编程门阵列〔FPGA〕进行电路设计开发的流程。以其作为应用对象,进一步编程开发了 8,4 增余汉明码的编码、译码,循环冗余过失校验编码 CRC 和MD5编码。通过对前两种编码各个模块

2、进行设计,完整阐述了对前两种编码软件局部的设计。同时,通过测试,完善,修改,最终完成了各自独立的编码程序。基于VHDL硬件描述语言,利用FPGA器件开发的过失控制编码系统,采用了自顶向下的设计方法用VHDL语言进行设计,选用当前应用最广泛的EDA软件XILINX ISE作为开发平台及配套的MULTISIM仿真工具。所有程序全部通过了该平台的编译和功能仿真测试,得出了实际的仿真波形,最后,对设计调试过程中出现的问题进行了分析、研究、解决。我还对上述这些各种编码的异同点进行了分析总结,对MD5编码进行了算法分析,进而对这些编码进行讨论。 关键词:FPGA,VHDL,汉明码,循环冗余码,MD5码

3、 The Design and Implementation of Error Control Coding based on FPGA Abstract This paper mainly introduced the main characteristics, current situation and prospects and significance of EDA technology, and puts some elaboration in related to research directions of the topic.And further discussed th

4、e influence of EDA technology development to CAD, ?explored the VHDL language and FPGA for circuit design development process. As an applied objects, the coding and decoding of?Hamming code, CRC coding and MD5 coding are further designed. Through the design of module in first two coding each, the f

5、irst two coding software part of the design is completely elaborated .At the same time, through the testing and modification, the independent encoding program is completed eventually. The development of error-controlling codes based on VHDL, using the FPGA device use the top-down design methods , an

6、d select the most widely used ISE XILINX EDA software as the development platform ,and the MODELSIM as a simulation tools. The whole design is passed through the compiler and function simulation test, obtaining the actual simulation waveform. Finally, the debugging problems were analyzed, research

7、ed and solved. I also turned to summary the differences and similarities of these various codings , the algorithm of MD5 coding is also analyzed. Keywords: FPGA,, ?Hamming code, CRC code, MD5 目 录 摘 要 III Abstract IV 1 绪 论 1 1.1课题的来源 1 1.1.1 EDA技术综述 1 1.1.2过失控制编码技术介绍 3 1.2课题的意义 5 1.3过失控制编

8、码开展现状 6 1.4课题研究的主要内容 6 2 基于FPGA的过失控制编码技术 8 2.1过失控制编码的总体设计方案 8 2.2〔8,4〕增余汉明码的过失控制编码译码设计 8 2.2.1汉明码编码译码原理 8 2.2.2 〔8,4〕增余汉明码的算法与实现 8 2.2.3 〔8,4〕汉明码编码波形仿真图 10 2.2.4 〔8,4〕汉明码译码算法实现 10 2.2.5 〔8,4〕汉明码译码波形仿真图 13 2.2.6 〔8,4〕汉明码编码译码综合模块 13 2.2.7 〔8,4〕汉明码编码译码综合波形仿真图 14 2.3 循环冗余过失控制校验码的设计 15 2.3.1

9、 CRC循环校验码编码校验原理 15 2.3.2 CRC循环码编码规那么 15 2.3.3 CRC循环码算法分析 15 2.3.4 CRC校验生成模块的设计实现 17 2.3.5 CRC校验生成模块仿真波形图 18 2.3.6 CRC校验接收模块的设计实现 19 2.3.7 CRC校验接收模块仿真波形图 20 2.4 MD5码的算法分析 20 2.5.1 MD5的引言 20 2.5.2 MD5的原理 21 2.5.4 MD5的应用 22 3过失控制编码技术开发体会 23 3.1 算法的重要 23 3.2 硬件对软件的制约影响 23 3.3 调试的重要性 23 4

10、结束语 24 致 谢 26 附 录I 27 附 录II 28 附 录III 30 附 录IV 33 1 绪 论 1.1.1 EDA技术综述 由于大规模集成电路开发技术的应用和开展以及电子产品市场运作的进一步加快,涉及诸如通信、、、、技术是在电子技术根底上开展起来的计算机软件系统,是指以计算机为工作平台,了应用电子技术、计算机技术、信息处理最新成果,进行电子产品的自动设计。利用工具,电子设计师大量工作通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC幅员或PCB幅员的整个过程的计算机上自动处理完成。 图1-1 可编程逻辑器件开发设计流程图 接受任务

11、:进行系统设计之前,先要由总体设计部门给出设计的任务和设计的一些要求。 确定功能:对给出的设计任务和设计的一些要求进行分析,确定出具体的功能及要求。 进行分析:决定设计中所要采用的设计方法。 源代码模拟:在设计中,利用VHDL硬件描述语言仿真器进行源代码仿真可以在早期开发中发现设计上的缺陷、错误,并及时进行改正,既而,缩短了开发周期节省了大量的设计时间。 综合、优化和布局布线:所谓综合就是将较高层次的抽象描述,转化到较低级描述的一种方法,即将设计的VHDL描述转化成底层电路表示。优化是指将设计的时延缩小到最小,有效利用资源。布局布线就是把通过综合、优化所得到的逻辑,安放到一个逻辑器件中

12、的过程,一个较好的布局布线过程,就是将电路的相关局部放置在一起,以消除布线延迟。 布局布线后的设计模拟:布局布线后的设计模拟与源代码模拟不同,源代码模拟只是对设计的逻辑功能进行模拟,而布局布线后的设计模拟不仅可以对逻辑功能进行验证,而且还能对设计时序功能进行验证。 器件编程和配置:器件编程就是将VHDL设计描述经过模拟、综合、优化和布局布线的结果,经过一定映射转化成一个器件编程所用的数据文件格式。器件配置就是在功能仿真和时序仿真正确的前提下,将综合后的文件下载到具体的芯片中进行电路验证。 过失控制在数据通信过程中能发现也能纠正过失,把错误限制在尽可能小的范围内的技术和方法。在信息传输

13、中常利用编码方法对传输中产生的过失进行过失控制以提高数字消息传输的准确率。过失控制系统的组成和原理如图1-2: 图1-2 过失控制系统原理图 图中虚线内的局部就是信号传输中的过失控制系统。当没有过失控制系统时,信源输出的信息将直接送往信宿。但是由于信道中存在干扰,信道的输出将发生错误。信号在传输中发生过失的概率是传输准确率的一个重要指标。在数据传输中信道给定以后,如果误码率不能满足既定的要求,就要采取过失控制了。具体的实现方法各有不同,过失控制可以分为前向纠错法、反应重传法和混合法三种类型[3]。 〔1〕前向纠错法 过失控制系统只含有编码器和译码器。从信源输出的传输信号在信道编码器中被

14、编码,然后输出送往信道。因为信道编码器使用的是纠错码,所以译码器可以改正传输过程中所带来的大局部过失进而使信宿得到相比照拟正确的序列。 〔2〕反应重传法 仅仅只利用了检错码来发现传输中带来的过失,并且在发现过失以后通过信道反向通知发信端再重新传输相应的一组数字,以此来提高传输信号的准确性。反应重传法根据重传方法的不同还可以分成很多种种实现方式。其中最普遍,最简单的一种被称为等待重传方式。采用这种方式时发信端每送出一组信号就停下来等待收信端的应答。这时信道译码器如果没有发现过失便通过反向信道向发信端发出表示正确的答复,否那么信源会重新传输原先那组信号。 〔3〕混合法 在信道存在交大干扰

15、时,仅用反应重传会因不断重传,而使信息的传输速率下降过多,从而仅用前向纠错又不能保证传输信息足够的准确性。这时两者兼用比拟有利,这就是所说的混合法。此方法所用的信道编码是一种既能纠正局部过失,又能发现大局部过失的码。信道译码器首先纠正那些可以纠正的过失,只对那些不能纠正,但能发现的过失才要求重传。这会大大降低重传的次数。同时,由于这种码的检错能力非常强,最终所得到的信息的准确率是比拟高的。过失控制编码又可区分为检错码和纠错码两种。检错码只能检查出传输中信号出现的过失,发送方只有重传数据才能够纠正这种过失;而纠错码不仅能检查出过失而且还能能自动纠正过失,防止了重传机制。 如今各种数字通信系

16、统已广泛用于我们的生产生活中。然而数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。由乘性干扰引起的码间串扰,可以采用均衡的方法纠正。而加性干扰的影响那么需要用其它方法解决。在设计数字通信系统时,应该首先从合理选择调制制度、解调方法以及发送功率等方面考虑,使加性干扰缺乏以影响到达误码率的要求。在仍不能满足要求时,就要考虑过失控制措施了,这就是我们研究过失控制技术的意义所在。 现代电子产品面临高功能、设计周期短、上市快的要求,其复杂度日益加深。一个电子系统,可能由数万个中小规模的集成电路构成,这就带来了体积大、功耗大和可靠性差的问题,解决这一问题的有效方法

17、,就是来用可编程逻辑器件〔PLD〕进行设计。可编程逻辑器件,尤其是FPGA器件,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的根底上进一步开展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的缺乏,又克服了原有可编程器件门电路数有限的缺点1948年C.E.香农〔Shannon〕发表论文指出,只要采用适当的纠错码,就可在多类信道上传输消息。宣告了纠错码的诞生。自Shannon之后,人们不断向逼近信道容量努力,取得重大开展,如分组码,代数码,卷积码,网格码和Turbo码。所能到达的性能也越来越接近Shannon限间的距离[5]。现在利用FPGA技术实现

18、过失控制编码的种类很多,而且这些具有很强的纠错、检错码,被广泛应用到密码学、通信、磁盘阵列及光存储、卫星通信、移动通信、深空通信等众多领域[6]。 汉明码是一种能纠一位错的线性分组码, 由于它的编译码简单,在数据通信和计算机存储系统中广泛应用,如在蓝牙和硬盘阵列中[6]。它可以纠正一位错误,但对于两位错不能检测,还可能会造成误纠。尽管,发生一位错的概率相对最高, 但在一些要求较高的应用中,汉明码不能满足要求。常用的能检测两位错同时能纠正1位错的纠错码有 8,4 扩展汉明码。 CRC即循环冗余校验码:是数据通信领域中最常用的一种过失校验码,其特征是信息字段和校验字段的长度可以任意选定。C

19、RC ,采用CRC 串行算法,即一个时钟周期内,有一位数据输入, k 位长度的信息元连续计算k次后得出校验码[7]。这种传统CRC的产生、校验方法对于现代实时高速的通信系统已经不能满足其对于信息处理高速化、并行化的要求。因此,本文提出一种新的并行CRC 编码方法,用VHDL 语言在FPGA 芯片上编程,实现在一个时钟周期内完成一次并行CRC 码的计算及校验。该方法可以对不同长度的数据进行过失控制,而且大大缩短了CRC码的校验周期,为实现循环冗余校验提供了一种新思路。 MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data

20、Security Inc创造,经MD2、MD3和MD4开展而来。Message-Digest一般是指字节串信息的Hash变换,即把一个任意长度的字节串变换成一定长的大整数。MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值的方式保存的[8]。 对于过失控制编码技术的研究,我主要是研究 8,4 增余汉明码编译码、CRC循环编码和MD5编码,首先分别研究这几种编码的算法,对前两种分别应用FPGA技术去实现,用VHDL语言去编写代码,然后再进行编译,下载,仿真及其去了解这些编码;然后是对MD5码进行研究和算法分析;最后总结出它们的异同点,以适应在以后需要的时候选择适当的编码

21、应用到相应的领域中去。 2 基于FPGA的过失控制编码技术 在具体设计过程中,采取自上而下的设计思路。首先根据整体的规划设计出模块的外部输入输出引脚定义以及功能,即根据需求设计出功能模块的整体外部特性,然后根据设计的这一外部特性以及功能描述模块内部的实现细节。 2.2〔8,4〕增余汉明码的过失控制编码译码设计 汉明码,是由Richard Hamming于1950年提出的,它属于线性分组编码方式,用来纠正单个错误的线性分组码。 假设,原代码的码长为k 比特,附加纠错编码局部为r比特,当码字长度n 2r-1,r n-k,r 1,2??????时就称这种线性分组码为汉明码。其根本原

22、理是,将信息码元、监督码元通过线性方程式联系起来,每一个监督位被编在传输码字的特定比特位置上。系统对于错误的那一位不管是原有信息位中的,或者是附加监督位中的都能把它别离开来[9]。从汉明码的性质可以得知, 8,4 增余汉明码能够纠正1位错,检测出两位错。 .2 〔8,4〕增余汉明码的算法与实现 8,4 增余汉明码全码码元数n 8,其中信息码元数k 4 ,监督码元数d 4,其监督矩阵为: 对于任何给定的信息码组,都可以由下式求出相应的监督码元,即: 假设用方程式来表示, 那么上式可以写成: 从而形成全码这就是 8,4 增余汉明码的编码过程。由于汉明码编码VHDL语言描述比拟简单,

23、在这里就不详细做介绍,具体见附录I代码。 〔8,4〕汉明码编码的顶层设计模块如图2-1所示: 图2-1 汉明码编码模块图 可以看出,输入为四位并行输入,编码后为一个八位的并行输出。 〔8,4〕汉明码编码的底层设计模块如图2-2所示: 图2-2 汉明码编码模块底层关系图 底部的各个分模块为两位的输入模通过各种逻辑运算,并最终组合在一起形成一个8位的最终编码输出。 2.2.3 〔8,4〕汉明码编码波形仿真图: 图2-3 汉明码编码仿真图 2.2.4 〔8,4〕汉明码译码算法实现 [n,k,d]分组码的译码步骤可归结为以下三步: 1 根据接收到的R计算伴随式S R??HT;

24、 2 当S 0时,认为接收正确。假设S≠0,由表2-1找出错误图样E^; 3 由E^和R 找出C^ R-E^。 汉明码的译码较简单,它可由S 直接得到错误图样E^。其他分组码如何由S 求得E^就比拟复杂。而一个译码器的复杂性及其译码错误概率也是由这一步决定的。 设接收方收到发送方传来的一个完整的编码为:X11,X22,X33,X44,X55,X66,X77,X88,根据汉明码校验矩阵: S1 S2 S3 S4为 8 ,4 增余汉明码的校验子。当S1 S2 S3 S4 0000 时,传送无误;当S1 S2 S3 S4为偶数时,可判接收到的全码中有两位错误,但不能判断哪两位错

25、,可要求发送方重新发送全码;当S1 S2 S3 S4为奇数时,可根据表2-1判断哪一位错,然后通过软件来纠错,完成译码过程。 表2-1 〔8,4〕汉明码校验参数 错位 S1 S2 S3 S4 错位 S1 S2 S3 S4 1 0 1 1 1 5 1 0 0 1 2 1 0 1 1 6 0 1 0 1 3 1 1 0 1 7 0 0 1 1 4 1 1 1 1 8 0 0 0 1 译码算法的流程图如下图: 图2-4 汉明码译码流程图 根据上述流程图,用VHDL语言描述〔8,4〕汉明译码算法功能模块如图2-5所示: 图2-5 汉明码译码顶层模块图 Hamin为汉明8位数据输入

26、,dataout为汉明4位数据输出,sec、ded、ne为诊断输出。局部代码如下: IF syndrome "0000" THEN -- 没出错的情况; ne '1'; ded '0'; sec '0'; dataout 0 to 3 hamin 0 to 3 ; ELSIF syndrome 0 '1' THEN -- 一位出错情况; ne '0'; ded '0'; sec '1'; case syndrome 3 DOWNTO 1 IS -- 查表纠错 when"000"|"001"|"010"|"100" datao

27、ut 0 to 3 hamin 0 to 3 ; when"011" dataout 0 NOT hamin 0 ; dataout 1 to 3 hamin 1 to 3 ; when"101" dataout 1 NOT hamin 1 ; dataout 0 hamin 0 ; dataout 2 to 3 hamin 2 to 3 ; when"110" dataout 2 NOT hamin 2 ; dataout 3 hamin 3 ; dataout 0 to 1

28、hamin 0 to 1 ; when"111" dataout 3 NOT hamin 3 ; dataout 0 to 2 hamin 0 to 2 ; when others dataout "0000"; end CASE; elsif syndrome 0 '0' AND syndrome 3 DOWNTO 1 / "000" THEN -- 两位出错情况; ne '0'; ded '1'; sec '0'; dataout 0 to 3 "0000"; END IF ; 当接受校验无误,那么诊断输出ne、ded、se

29、c按“100〞标识,假设一位出错,那么按“001〞标识,然后在根据syndrome各位数判断是哪位出错并纠错,出错两位那么按“010〞标识并清0,需要重传机制。 2.2.5〔8,4〕汉明码译码波形仿真图: 图2-6 汉明码译码仿真图 可以看出,通过译码模块,8位全码又重新译码成原输入数据,其中,第三第四组数据认为制造了数据错误,第三组数据出错一位,仿真输出结果得到了纠正,第四组数据由于出错两位,清0处理。 2.2.6 〔8,4〕汉明码编码译码综合模块 通过原件例化,对编码、译码电路进行连接得到综合顶层模块如下: 图2-7 汉明码编码译码综合顶层模块图 对顶层模块进行细化,如下图:

30、 图2-8 汉明码编码译码综合底层模块图 2.2.7 〔8,4〕汉明码编码译码综合波形仿真图 图2-9 汉明码综合模块仿真图 2.3 循环冗余过失控制校验码的设计 2.3.1 CRC循环校验码编码校验原理 CRC校验采用的是多项式编码的方法。被处理的数据块可以看作是一个n 阶的二进制多项式,如一个12 位二进制数1XXXXXXXXXX010可以表示为:x11+x9+x7+x5+x3+x1+1。多项式乘除法运算的过程与普通代数多项式的乘除法大体相同。多项式的加减法运算以2为模,加减时不用进位、错位,和逻辑的异或运算一致。利用CRC 校验时,发送方和接收方用要有同一个生成多项式P x

31、,并且要使P〔x〕的首位和最后一位的系数必须为1。CRC 的处理的方法是:发送方以P〔x〕去除T〔x〕,得到余数R作为CRC 校验码。校验的时候,以计算的校正结果的余数是否为0为据,判断数据帧是否出错[10]。 CRC 校验可以准确地检测出所有奇数个随机错误和长度小于等于k〔k为P x 的阶数〕的随机错误。所以CRC 的生成多项式P〔x〕的阶数越高,那么误判的概率就会更小。 2.3.2 CRC循环码编码规那么 CRC编码实际上就是将要发送的M 位二进制多项式T〔x〕转换成为可以被P〔x〕除尽的M+R位二进制多项式T' x ,因此在解码时可以用接受到的数据去除P〔x〕,如果余数R为零,那么

32、表示传输过程没有发生错误;如果余数R不为零,那么在传输过程中必定存在错误。很多CRC的硬件电路就是按这种方式进行校验的。同时T' x 可以看做是由T〔x〕和CRC 校验码的组合,所以解码时将接收到的二进制数据去掉尾部的R位数据,得到的就是原始传输的数据。 2.3.3 CRC循环码算法分析 CRC校验码的编码方法是用待发送的二进制数据T〔x〕除以生成多项式P〔x〕,将最后的余数作为CRC校验码。其实现步骤如下[11]: 〔1〕设要发送的数据块是一个M位的二进制多项式T〔x〕,生成多项式为R阶的P〔x〕。在数据块的末尾添加R个0,数据块的长度增加到M+R位,对应的二进制多项式为T x 。

33、 〔2〕 用生成多项式P〔x〕去除T x ,求得余数为阶数为R-1 的二进制多项式Y〔x〕。此二进制多项式Y〔x〕就是T〔x〕经过生成多项式P〔x〕编码的CRC校验码。 〔3〕 用T x 以模2的方式减去Y〔x〕,得到二进制多项式T' x 。T' x 即为包含了CRC校验码的待发送的字符串。 由于CRC-32、CRC-16、CCITT和CRC-4的编码过程根本一致,只有位数和生成多项式不一样。为了表达上的方便,我们用CRC-4编码的例子来说明CRC的编码过程。 设待发送的数据T〔x〕为一个12位的二进制数据1XXXXXXXXXX0;CRC-4的生成多项式为P〔x〕 x4+x+1,

34、阶数R为4。首先我们在T〔x〕的末尾添加4个0,数据块就成了1XXXXXXXXXX00000。然后用P〔x〕去除,商的值我们无需考虑,只需要求得余数Y〔x〕。表2-1给出了举例数据的除法过程。 表2-1用移位除法求校验码的过程表 除数次数 被除数/ P〔x〕/结果 余数 0 1XXXXXXXXXX10000 1001110000 10011 1001110000 1 1001110000 100000 10011 100000 2 100000 0011 10011 0011 从表2-1中可以看出,CRC编码

35、实际上是一个循环移位的模2运算。对于CRC-4而言,我们假设有一个5位的数据以为存放器,通过反复的移位和进行二进制的除法,最终该存放器中的值去掉最高一位就是我们所要求的余数。 2.3.4 CRC 校验生成模块的设计实现 CRC 校验生成模块是在XILINX ISE 平台编程实现,程序首先执行了11次异或运算,流程图如2-10所示,然后在作一次异或运算,得到的记过就是crc校验码 图2-10 CRC校验生成模块流程图 根据上述流程图,用VHDL语言描述CRC编码生成模块如图2-11所示: 图2-11 CRC校验生成模块 CRC 校验生成模块如图2-11 所示. 其中sdata 是12

36、 位发送信息,datald 是sdata 的装载信号,clk是时钟信号,datacrco 是附加上4 位CRC 校验码的16 位CRC 码,hsend 是与检错模块的握手信号。 2.3.5 CRC校验生成模块仿真波形图 图2-12 CRC校验生成模块仿真波形图 2.3.6 CRC 校验接收模块的设计实现 CRC 校验检错模块编程思想和生成模块类似,从接收到的CRC 码中,提取出信息码,然后将信息码与生成多项式进行异或运算,最后判断得到的余数与CRC 生成模块中得到的校验码是否相同,如果相同,认为信息发送正确,将输出的误码

37、警告标志信号crcerror 设置为“0〞;反之,那么认为信息发送错误,将crcerror 设置为“1〞。 CRC 校验检错模块如图2-13所示,其端口数据说明如下: clk :时钟信号; rdata :接收模块 检错模块 接收的12 位有效信息数据; hrecv :接收控制信号; datafini :数据接收校验完成标志信号; datacrci :附加上5 位CRC 校验码的17 位CRC 码; crcerror :错误标志信号; 图2-13 CRC校验接收模块的设计实现 2.3.7 CRC校验接收模块仿真波形图 图2-14 CRC校验接收模块仿真波形图 2.4 MD

38、5码的算法分析 MD5码就是把一个任意长度的字节串变换成一定长的大整数。即MD5将任意长度的“字节串〞变换成一个128位的大整数,并且它是一个不可逆的字符串变换算法,换言之,即使你看到源程序和算法描述也无法将一个MD5的值变换回原始的字符串[12]。从数学原理上说是因为原始的字符串有无穷多个,这有点像不存在反函数的数学函数。 2.5.1 MD5的引言 MD5算法就是把不同长度的信息串转化到128位编码中形成Hash值。然后比拟这个数值是否正确从而确定通信双方的合法性。这也可以说是一种数字认证,在数据传输以后,我们可以通过比拟Hash值,来判断信息传输途中有没有被被修改,是否是合法人发送

39、或者是有合法人接收的[13]。利用这种方式,来防止密钥丧失。由于 MD5加密算法的随机生成性,没有正确的Hash 值是不可能解开加密局部的。而且MD5算法同时具备数字认证的功能,可以证明发送方和接收方的合法性,比拟适用于那些商业信息的传递。 2.5.2 MD5的原理 该算法输入任意长度的消息,输出128 位消息摘要,处理以512位输入数据块为单位。处理报文摘要的过程如下[14]: 〔1〕添加填充位。在消息的最后,添加适当的填充位使数据位的长度满足与448模512同余。 〔2〕添加长度。原消息长度我们用64位表示,且附加在〔1〕的结果后面。由这两个步骤得到了512整数倍的报文。将其表示为

40、L个512 位的数据块:Y0,Y1 ,…,YL-1。他们的长度为L×512位,设N L×16,那么得到了长度为N个32 位的字。M[0…N-1]表示以字为单位的消息。 〔3〕初始化MD缓冲区。一个128位MD缓冲区用以保存中间和最终散列函数的结果。它可以表示成4个32位的存放器A、B、C、D。并对其进行初始化: A 67452301 B EFCDAB89 C 98BADCFE D 10325476 存放器内容 Word A : 01  23  45 67 Word B: 89  AB CD  EF Word C: FE DC BA 98 Word D: 7

41、6 54 32 10 这里采用小数在前的格式进行存储。 〔4〕处理消息块。它包括4轮处理,每次处理都具有相似的结构,但每次使用不同的根本逻辑函数,记为F、G、H、I。每次使用64元素表T[1…64]四分之一。T由正弦函数构造而成。T的第i个元素表示为T[i],其值等于232×abs sin i 的整数局部,其中i是弧度。T的每一个元素是一个可以表示成32位的整数。T表提供了随机化的32 位模板,消除了在输入数据中的任何规律性的特征 T 表 T[ 1] D76AA478     T[ 49] F4292244 T[ 2] E8C7B756     T[ 50]

42、 432AFF97 T[ 3] 242070DB     T[ 51] AB9423A7 T[ 4] C1BDCEEE    T[ 52] FC93A039 ……       …… T[ 16] 49b40821     T[ 64] EB86D391 5 输出结果。 2.5.4 MD5的应用 MD5码的应用,主要是在加密、解密两个方面[15]。在我们的解压缩文件中,有很多就是应用到了MD5码。由于它的保密工作具有一次性保密工作的特点,不仅保存了一次性口令的优点,而且克服了序列密码一次性口令系统中的小数攻击和IP地址欺骗攻击的漏洞

43、,同时又防止了RSA算法中大整数质因数分解的计算效率问题。 3过失控制编码技术开发体会 3.1 算法的重要 在刚开始设计这个毕设的时候,我可以说的这个课题不甚了解,有点无从下手的感觉,通过上网查询和陈老师的教导,我的课题是一个研究性的课题,所以我就要搜集好几种编码来分别进行研究,来找出它们的异同点,首先找到的是汉明码和CRC码,这两种广泛应用于数字通讯中的编码,但是我要用FPGA去实现,这种用硬件实现起来传输速度会很快,可是在这之中算法就是一个很难的问题,我只有理解了算法才能用VHDL的语言来做出来,包括我后来做的MD5编码,算法也是相当的重要的,而且我觉得很难,这些花费我很多的时间。

44、 算法可以说是一种编码的灵魂,没有算法我是不可能实现我的研究课题的,这些涉及到很多别的问题,不是很容易明白,我就要不断地去分析和查找书籍,找出这些原理的所在,为下面的工作做准备。 3.2 硬件对软件的制约影响 在毕业设计的过程中,尤其到了硬件调试的时候,还有一点感受比拟深刻,那就是硬件对软件设计的影响。由于试验台硬件和小组设计试验板硬件性能不完全相同,致使软件系统从试验台到试验板的过程中遇到了很多意想不到的问题,最终还是通过修改软件来适应硬件的标准。 3.3 调试的重要性 程序写出来之后,需要进行大量的硬件调试工作,否那么的话,一旦出现问题,就搞不清楚问题究竟是软件设计的错误还是硬件

45、电路板的错误,所以首先解决硬件调试是必须的。在调试的过程中,需要有清晰的逻辑思维作根底,对硬件知识有熟练的掌握和灵活的应用。 4 结束语 本课题的研究设计至此就根本完成了。本文研究了EDA技术的开展对电路设计方法的影响,深入讨论了用VHDL语言和复杂系统可编程逻辑器件开发的根本方法,作为应用对象,基于VHDL语言、应用FPGA开发的过失控制编码技术,系统采用了“自顶向下〞的设计方法,系统的顶层设计和底层设计采用原理图输入描述和VHDL语言进行描述,选用了当前流行的EDA软件平台XINLIX ISE作为开发平台,所有程序全部通过了该平台的编译和功能仿真实验,在配有SPATANIII芯片的实验

46、台上通过了硬件测试。最后,把程序下载到一个独立的硬件系统,经过不断的调试和改良,终于完成了编码算法的硬件实现。通过上述工作,我对设计、调试过程中出现的问题进行了分析、研究、解决。 通过对EDA技术的学习和对这些编码的初步尝试,对前几年的软硬件方面的知识有了进一步的了解和加深,进一步对软硬件的结合有了更深的认识。经过这个课题的研究使我们已经开始掌握了复杂可编程逻辑器件的开发流程和步骤,并可以展开进一步的提高,比方开发更为复杂的系统。我们研究的这个编码译码模块完全可以嵌入到一个更大大的通信系统内部,作为其中的子模块使用。 回忆毕业设计的整个过程,感受最深的并不是自己开发的这么一个过失控制编码F

47、PGA的实现,而是一个设计从起步到终止整个过程的整体性,连贯性;在这个过程中,初步有了系统开发的概念和经验,为以后的学习工作打下了坚实的根底;通过整个学习新知识,运用新知识的过程,锻炼了自己独立自主学习,分析解决问题等等方面的能力。 总之一句话,通过毕业设计阶段的学习和锻炼,受益颇深。 参考文献 [1]潘松,黄继业 EDA技术与VHDL[M].北京:清华大学出版社, 2005-07:15-18.? [2]黄智伟.FPGA 系统设计与实践[M].北京:电子工业出版社,2005 [3]王兴亮数字通信原理与技术西安电子科技大学出版社2000年. [4]R. W. Hamming.Cod

48、ing and Information Theory.Prentice-Hall.Englewood Cliffs.New Jersey.1980. [5]刘科峰,张沙清, 田丰.EDA技术在电子设计中的应用[J].广西物理, 2004, 02 [6]侯伯亨 顾 新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社, 1999. [7]吴继华,王诚.Altera FPGA/ CPLD 设计[M].北京:人民邮电出版,2005. [8]刘佳,焦斌亮.FPGA 的开展趋势及其新应用[J].电子技术,2021. [9]樊昌信,等.通信原理[M].北京:国防工业出

49、版社,2005. [10]周贤伟.过失控制编码与平安[M].北京:国防工业出版社,2004. [11]辛英.汉明码纠错检错能力分析与应用[J].盐城工学院报:自然科学版,2021,21 1 :34. [12]郭瑛,俞宗佐.基于FPGA 的循环冗余校验模块设计[J],内蒙古大学学报自然科学版2021年第4期王新梅肖国镇纠错码-原理与方法西安电子科技大学出版社1991. [14]Shu Lin,Daniel J.Costello.Error Control Coding[M]:Fundamentals and Applications, 2nd Edition [15]Tsfasman

50、MA. Moduar curves,Shimura curves and Goppa codes,better than V arshamov2Gilbert bound[J].Math N ach r,1982,104:13~28. 附录Ilibrary IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are

51、-- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity hammbm is port hammin:in std_logic_vector 0 to 3 ; hammout:out std_logic_vector 0 to 7 ; end hammbm; architecture lab1 of hammbm is signal p:std_logic_vector 0 to 3 ; begin p

52、 0 hammin 0 xor hammin 1 xor hammin 2 ; p 1 hammin 0 xor hammin 1 xor hammin 3 ; p 2 hammin 0 xor hammin 2 xor hammin 3 ; p 3 hammin 1 xor hammin 2 xor hammin 3 ; hammout 4 to 7 p 0 to 3 ; hammout 0 to 3 hammin 0 to 3 ; end lab1; 附录IIENTITY hammym IS port hamin:IN std_log

53、ic_VECTOR 0 to 7 ; dataout:OUT std_logic_VECTOR 0 to 3 ; sec,ded,ne:OUT std_logic ; END hammym; ARCHITECTURE ver1 OF hammym IS begin PROCESS hamin variable syndrome:std_logic_VECTOR 3 DOWNTO 0 ; begin syndrome 0 : hamin 0 XOR hamin 1 XOR hamin 2 XOR hamin 3 XOR hamin 4 XOR ham

54、in 5 XOR hamin 6 XOR hamin 7 ; syndrome 1 : hamin 0 XOR hamin 1 XOR hamin 3 XOR hamin 5 ; syndrome 2 : hamin 0 XOR hamin 2 XOR hamin 3 XOR hamin 6 ; syndrome 3 : hamin 1 XOR hamin 2 XOR hamin 3 XOR hamin 7 ; IF syndrome "0000" THEN ne '1'; ded '0'; sec '0'; d

55、ataout 0 to 3 hamin 0 to 3 ; ELSIF syndrome 0 '1' THEN ne '0'; ded '0'; sec '1'; case syndrome 3 DOWNTO 1 IS when"000"|"001"|"010"|"100" dataout 0 to 3 hamin 0 to 3 ; when"011" dataout 0 NOT hamin 0 ; dataout 1 to 3 hamin 1 to 3 ; when"101" dataout 1 NO

56、T hamin 1 ; dataout 0 hamin 0 ; dataout 2 to 3 hamin 2 to 3 ; when"110" dataout 2 NOT hamin 2 ; dataout 3 hamin 3 ; dataout 0 to 1 hamin 0 to 1 ; when"111" dataout 3 NOT hamin 3 ; dataout 0 to 2 hamin 0 to 2 ; when others dataout "0000"; end CA

57、SE; elsif syndrome 0 '0' AND syndrome 3 DOWNTO 1 / "000" THEN ne '0'; ded '1'; sec '0'; dataout 0 to 3 "0000"; END IF ; END PROCESS ; END ver1 ; 附 录III CRC校验生成模块VHDL代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -

58、- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity crc_lyd is port clk:in std_logic; datald:in std_logic; sdata: in std_logic_vector

59、11 downto 0 ; datacrc:out std_logic_vector 15 downto 0 ; hsend:out std_logic ; end crc_lyd; architecture myarch of crc_lyd is signal o: std_logic_vector 3 downto 0 ; signal input: std_logic_vector 15 downto 0 ; signal p:std_logic_vector 4 downto 0 ; begin process

60、clk variable crcvar: std_logic_vector 4 downto 0 ; variable c: std_logic_vector 3 downto 0 ; begin p "10011"; c: "0000"; input sdata&c; crcvar 4 : input 15 ; crcvar 3 : input 14 ; crcvar 2 : input 13 ; crcvar 1 : input 12 ;

61、 crcvar 0 : input 11 ; for i in 11 downto 1 loop -- 前11次计算 if crcvar 4 '0' then for j in 3 downto 0 loop c j : crcvar j xor '0'; end loop; else

62、 for j in 3 downto 0 loop c j : crcvar j xor p j ; end loop; end if; crcvar: c&input i-1 ; end loop; if crcvar 4 '0' then -- 第12次计算 for j in 3 downto 0 loop

63、 c j : crcvar j xor '0'; end loop; else for j in 3 downto 0 loop c j : crcvar j xor p j ; end loop; end if; hsend '1'; o c; -- 变量转换成

64、信号 end process; datacrc input 15downto0 xor "000000000000"&o ; -- 输出 end myarch; 附 录IV CRC接收校验模块VHDL代码: entity crcjy is port clk:in std_logic; hrecv:in std_logic; datacrc:in std_logic_vector 15 downto 0 ; rdata:out std_logic_v

65、ector 11 downto 0 ; crcerror:out bit; datafini:out bit ; end crcjy; architecture mycrcjy of crcjy is signal o: std_logic_vector 3 downto 0 ; signal input: std_logic_vector 15 downto 0 ; signal p:std_logic_vector 4 downto 0 ; begin process clk variable crcvar

66、: std_logic_vector 4 downto 0 ; variable c: std_logic_vector 3 downto 0 ; begin p "10011"; c: "0000"; input datacrc; crcvar 4 : input 15 ; crcvar 3 : input 14 ; crcvar 2 : input 13 ; crcvar 1 : input 12 ; crcvar 0 : input 11 ; for i in 11 downto 1 loop -- 前11次计算 if crcvar 4 '0' then for j in 3 downto 0 loop c j : crcvar j xor '0'

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!