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

上传人:r****d 文档编号:145005065 上传时间:2022-08-28 格式:DOC 页数:49 大小:73.50KB
返回 下载 相关 举报
【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现_第1页
第1页 / 共49页
【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现_第2页
第2页 / 共49页
【电子信息工程毕业设计 文献综述 开题报告】基于FPGA的差错控制编码的设计与实现_第3页
第3页 / 共49页
点击查看更多>>
资源描述
【电子信息工程毕业设计+文献综述+开题报告】基于FPGA的过失控制编码的设计与实现 20_ _届本科毕业设计基于FPGA的过失控制编码的设计与实现摘 要本文主要介绍了电子设计自动化EDA技术的主要特点、现状、前景及意义,并就课题的研究方向做了相关的论述。进一步论述了EDA技术的开展对电路设计应用的影响,探讨了通过VHDL语言和可编程门阵列FPGA进行电路设计开发的流程。以其作为应用对象,进一步编程开发了 8,4 增余汉明码的编码、译码,循环冗余过失校验编码 CRC 和MD5编码。通过对前两种编码各个模块进行设计,完整阐述了对前两种编码软件局部的设计。同时,通过测试,完善,修改,最终完成了各自独立的编码程序。基于VHDL硬件描述语言,利用FPGA器件开发的过失控制编码系统,采用了自顶向下的设计方法用VHDL语言进行设计,选用当前应用最广泛的EDA软件XILINX ISE作为开发平台及配套的MULTISIM仿真工具。所有程序全部通过了该平台的编译和功能仿真测试,得出了实际的仿真波形,最后,对设计调试过程中出现的问题进行了分析、研究、解决。我还对上述这些各种编码的异同点进行了分析总结,对MD5编码进行了算法分析,进而对这些编码进行讨论。关键词:FPGA,VHDL,汉明码,循环冗余码,MD5码The Design and Implementation of Error Control Coding based on FPGAAbstractThis 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 the 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 first 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 , and 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, researched 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 目 录摘 要IIIAbstractIV1 绪 论11.1课题的来源11.1.1 EDA技术综述11.1.2过失控制编码技术介绍31.2课题的意义51.3过失控制编码开展现状61.4课题研究的主要内容62 基于FPGA的过失控制编码技术82.1过失控制编码的总体设计方案82.28,4增余汉明码的过失控制编码译码设计82.2.1汉明码编码译码原理82.2.2 8,4增余汉明码的算法与实现82.2.3 8,4汉明码编码波形仿真图102.2.4 8,4汉明码译码算法实现102.2.5 8,4汉明码译码波形仿真图132.2.6 8,4汉明码编码译码综合模块132.2.7 8,4汉明码编码译码综合波形仿真图142.3 循环冗余过失控制校验码的设计152.3.1 CRC循环校验码编码校验原理152.3.2 CRC循环码编码规那么152.3.3 CRC循环码算法分析152.3.4 CRC校验生成模块的设计实现172.3.5 CRC校验生成模块仿真波形图182.3.6 CRC校验接收模块的设计实现192.3.7 CRC校验接收模块仿真波形图202.4 MD5码的算法分析202.5.1 MD5的引言202.5.2 MD5的原理212.5.4 MD5的应用223过失控制编码技术开发体会233.1 算法的重要233.2 硬件对软件的制约影响233.3 调试的重要性234 结束语24致 谢26附 录I27附 录II28附 录III30附 录IV331 绪 论1.1.1 EDA技术综述由于大规模集成电路开发技术的应用和开展以及电子产品市场运作的进一步加快,涉及诸如通信、技术是在电子技术根底上开展起来的计算机软件系统,是指以计算机为工作平台,了应用电子技术、计算机技术、信息处理最新成果,进行电子产品的自动设计。利用工具,电子设计师大量工作通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC幅员或PCB幅员的整个过程的计算机上自动处理完成。图1-1 可编程逻辑器件开发设计流程图接受任务:进行系统设计之前,先要由总体设计部门给出设计的任务和设计的一些要求。确定功能:对给出的设计任务和设计的一些要求进行分析,确定出具体的功能及要求。进行分析:决定设计中所要采用的设计方法。源代码模拟:在设计中,利用VHDL硬件描述语言仿真器进行源代码仿真可以在早期开发中发现设计上的缺陷、错误,并及时进行改正,既而,缩短了开发周期节省了大量的设计时间。综合、优化和布局布线:所谓综合就是将较高层次的抽象描述,转化到较低级描述的一种方法,即将设计的VHDL描述转化成底层电路表示。优化是指将设计的时延缩小到最小,有效利用资源。布局布线就是把通过综合、优化所得到的逻辑,安放到一个逻辑器件中的过程,一个较好的布局布线过程,就是将电路的相关局部放置在一起,以消除布线延迟。布局布线后的设计模拟:布局布线后的设计模拟与源代码模拟不同,源代码模拟只是对设计的逻辑功能进行模拟,而布局布线后的设计模拟不仅可以对逻辑功能进行验证,而且还能对设计时序功能进行验证。器件编程和配置:器件编程就是将VHDL设计描述经过模拟、综合、优化和布局布线的结果,经过一定映射转化成一个器件编程所用的数据文件格式。器件配置就是在功能仿真和时序仿真正确的前提下,将综合后的文件下载到具体的芯片中进行电路验证。过失控制在数据通信过程中能发现也能纠正过失,把错误限制在尽可能小的范围内的技术和方法。在信息传输中常利用编码方法对传输中产生的过失进行过失控制以提高数字消息传输的准确率。过失控制系统的组成和原理如图1-2:图1-2 过失控制系统原理图图中虚线内的局部就是信号传输中的过失控制系统。当没有过失控制系统时,信源输出的信息将直接送往信宿。但是由于信道中存在干扰,信道的输出将发生错误。信号在传输中发生过失的概率是传输准确率的一个重要指标。在数据传输中信道给定以后,如果误码率不能满足既定的要求,就要采取过失控制了。具体的实现方法各有不同,过失控制可以分为前向纠错法、反应重传法和混合法三种类型3。1前向纠错法过失控制系统只含有编码器和译码器。从信源输出的传输信号在信道编码器中被编码,然后输出送往信道。因为信道编码器使用的是纠错码,所以译码器可以改正传输过程中所带来的大局部过失进而使信宿得到相比照拟正确的序列。2反应重传法仅仅只利用了检错码来发现传输中带来的过失,并且在发现过失以后通过信道反向通知发信端再重新传输相应的一组数字,以此来提高传输信号的准确性。反应重传法根据重传方法的不同还可以分成很多种种实现方式。其中最普遍,最简单的一种被称为等待重传方式。采用这种方式时发信端每送出一组信号就停下来等待收信端的应答。这时信道译码器如果没有发现过失便通过反向信道向发信端发出表示正确的答复,否那么信源会重新传输原先那组信号。3混合法 在信道存在交大干扰时,仅用反应重传会因不断重传,而使信息的传输速率下降过多,从而仅用前向纠错又不能保证传输信息足够的准确性。这时两者兼用比拟有利,这就是所说的混合法。此方法所用的信道编码是一种既能纠正局部过失,又能发现大局部过失的码。信道译码器首先纠正那些可以纠正的过失,只对那些不能纠正,但能发现的过失才要求重传。这会大大降低重传的次数。同时,由于这种码的检错能力非常强,最终所得到的信息的准确率是比拟高的。过失控制编码又可区分为检错码和纠错码两种。检错码只能检查出传输中信号出现的过失,发送方只有重传数据才能够纠正这种过失;而纠错码不仅能检查出过失而且还能能自动纠正过失,防止了重传机制。如今各种数字通信系统已广泛用于我们的生产生活中。然而数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。由乘性干扰引起的码间串扰,可以采用均衡的方法纠正。而加性干扰的影响那么需要用其它方法解决。在设计数字通信系统时,应该首先从合理选择调制制度、解调方法以及发送功率等方面考虑,使加性干扰缺乏以影响到达误码率的要求。在仍不能满足要求时,就要考虑过失控制措施了,这就是我们研究过失控制技术的意义所在。现代电子产品面临高功能、设计周期短、上市快的要求,其复杂度日益加深。一个电子系统,可能由数万个中小规模的集成电路构成,这就带来了体积大、功耗大和可靠性差的问题,解决这一问题的有效方法,就是来用可编程逻辑器件PLD进行设计。可编程逻辑器件,尤其是FPGA器件,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的根底上进一步开展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的缺乏,又克服了原有可编程器件门电路数有限的缺点1948年C.E.香农Shannon发表论文指出,只要采用适当的纠错码,就可在多类信道上传输消息。宣告了纠错码的诞生。自Shannon之后,人们不断向逼近信道容量努力,取得重大开展,如分组码,代数码,卷积码,网格码和Turbo码。所能到达的性能也越来越接近Shannon限间的距离5。现在利用FPGA技术实现过失控制编码的种类很多,而且这些具有很强的纠错、检错码,被广泛应用到密码学、通信、磁盘阵列及光存储、卫星通信、移动通信、深空通信等众多领域6。汉明码是一种能纠一位错的线性分组码, 由于它的编译码简单,在数据通信和计算机存储系统中广泛应用,如在蓝牙和硬盘阵列中6。它可以纠正一位错误,但对于两位错不能检测,还可能会造成误纠。尽管,发生一位错的概率相对最高, 但在一些要求较高的应用中,汉明码不能满足要求。常用的能检测两位错同时能纠正1位错的纠错码有 8,4 扩展汉明码。CRC即循环冗余校验码:是数据通信领域中最常用的一种过失校验码,其特征是信息字段和校验字段的长度可以任意选定。CRC ,采用CRC 串行算法,即一个时钟周期内,有一位数据输入, k 位长度的信息元连续计算k次后得出校验码7。这种传统CRC的产生、校验方法对于现代实时高速的通信系统已经不能满足其对于信息处理高速化、并行化的要求。因此,本文提出一种新的并行CRC 编码方法,用VHDL 语言在FPGA 芯片上编程,实现在一个时钟周期内完成一次并行CRC 码的计算及校验。该方法可以对不同长度的数据进行过失控制,而且大大缩短了CRC码的校验周期,为实现循环冗余校验提供了一种新思路。MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc创造,经MD2、MD3和MD4开展而来。Message-Digest一般是指字节串信息的Hash变换,即把一个任意长度的字节串变换成一定长的大整数。MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值的方式保存的8。对于过失控制编码技术的研究,我主要是研究 8,4 增余汉明码编译码、CRC循环编码和MD5编码,首先分别研究这几种编码的算法,对前两种分别应用FPGA技术去实现,用VHDL语言去编写代码,然后再进行编译,下载,仿真及其去了解这些编码;然后是对MD5码进行研究和算法分析;最后总结出它们的异同点,以适应在以后需要的时候选择适当的编码应用到相应的领域中去。2 基于FPGA的过失控制编码技术在具体设计过程中,采取自上而下的设计思路。首先根据整体的规划设计出模块的外部输入输出引脚定义以及功能,即根据需求设计出功能模块的整体外部特性,然后根据设计的这一外部特性以及功能描述模块内部的实现细节。2.28,4增余汉明码的过失控制编码译码设计汉明码,是由Richard Hamming于1950年提出的,它属于线性分组编码方式,用来纠正单个错误的线性分组码。假设,原代码的码长为k 比特,附加纠错编码局部为r比特,当码字长度n 2r-1,r n-k,r 1,2?时就称这种线性分组码为汉明码。其根本原理是,将信息码元、监督码元通过线性方程式联系起来,每一个监督位被编在传输码字的特定比特位置上。系统对于错误的那一位不管是原有信息位中的,或者是附加监督位中的都能把它别离开来9。从汉明码的性质可以得知, 8,4 增余汉明码能够纠正1位错,检测出两位错。.2 8,4增余汉明码的算法与实现 8,4 增余汉明码全码码元数n 8,其中信息码元数k 4 ,监督码元数d 4,其监督矩阵为:对于任何给定的信息码组,都可以由下式求出相应的监督码元,即:假设用方程式来表示, 那么上式可以写成: 从而形成全码这就是 8,4 增余汉明码的编码过程。由于汉明码编码VHDL语言描述比拟简单,在这里就不详细做介绍,具体见附录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; 2 当S 0时,认为接收正确。假设S0,由表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为偶数时,可判接收到的全码中有两位错误,但不能判断哪两位错,可要求发送方重新发送全码;当S1 S2 S3 S4为奇数时,可根据表2-1判断哪一位错,然后通过软件来纠错,完成译码过程。表2-1 8,4汉明码校验参数错位S1S2S3S4错位S1S2S3S41011151001210116010131101700114111180001译码算法的流程图如下图:图2-4 汉明码译码流程图根据上述流程图,用VHDL语言描述8,4汉明译码算法功能模块如图2-5所示:图2-5 汉明码译码顶层模块图Hamin为汉明8位数据输入,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 - 查表纠错when000|001|010|100 dataout 0 to 3 hamin 0 to 3 ;when011 dataout 0 NOT hamin 0 ; dataout 1 to 3 hamin 1 to 3 ;when101 dataout 1 NOT hamin 1 ; dataout 0 hamin 0 ; dataout 2 to 3 hamin 2 to 3 ;when110 dataout 2 NOT hamin 2 ; dataout 3 hamin 3 ; dataout 0 to 1 hamin 0 to 1 ;when111 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、sec按“100标识,假设一位出错,那么按“001标识,然后在根据syndrome各位数判断是哪位出错并纠错,出错两位那么按“010标识并清0,需要重传机制。2.2.58,4汉明码译码波形仿真图:图2-6 汉明码译码仿真图可以看出,通过译码模块,8位全码又重新译码成原输入数据,其中,第三第四组数据认为制造了数据错误,第三组数据出错一位,仿真输出结果得到了纠正,第四组数据由于出错两位,清0处理。2.2.6 8,4汉明码编码译码综合模块通过原件例化,对编码、译码电路进行连接得到综合顶层模块如下:图2-7 汉明码编码译码综合顶层模块图对顶层模块进行细化,如下图:图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 ,并且要使Px的首位和最后一位的系数必须为1。CRC 的处理的方法是:发送方以Px去除Tx,得到余数R作为CRC 校验码。校验的时候,以计算的校正结果的余数是否为0为据,判断数据帧是否出错10。CRC 校验可以准确地检测出所有奇数个随机错误和长度小于等于kk为P x 的阶数的随机错误。所以CRC 的生成多项式Px的阶数越高,那么误判的概率就会更小。2.3.2 CRC循环码编码规那么CRC编码实际上就是将要发送的M 位二进制多项式Tx转换成为可以被Px除尽的M+R位二进制多项式T x ,因此在解码时可以用接受到的数据去除Px,如果余数R为零,那么表示传输过程没有发生错误;如果余数R不为零,那么在传输过程中必定存在错误。很多CRC的硬件电路就是按这种方式进行校验的。同时T x 可以看做是由Tx和CRC 校验码的组合,所以解码时将接收到的二进制数据去掉尾部的R位数据,得到的就是原始传输的数据。2.3.3 CRC循环码算法分析CRC校验码的编码方法是用待发送的二进制数据Tx除以生成多项式Px,将最后的余数作为CRC校验码。其实现步骤如下11:1设要发送的数据块是一个M位的二进制多项式Tx,生成多项式为R阶的Px。在数据块的末尾添加R个0,数据块的长度增加到M+R位,对应的二进制多项式为T x 。2 用生成多项式Px去除T x ,求得余数为阶数为R-1 的二进制多项式Yx。此二进制多项式Yx就是Tx经过生成多项式Px编码的CRC校验码。3 用T x 以模2的方式减去Yx,得到二进制多项式T x 。T x 即为包含了CRC校验码的待发送的字符串。由于CRC-32、CRC-16、CCITT和CRC-4的编码过程根本一致,只有位数和生成多项式不一样。为了表达上的方便,我们用CRC-4编码的例子来说明CRC的编码过程。设待发送的数据Tx为一个12位的二进制数据1XXXXXXXXXX0;CRC-4的生成多项式为Px x4+x+1,阶数R为4。首先我们在Tx的末尾添加4个0,数据块就成了1XXXXXXXXXX00000。然后用Px去除,商的值我们无需考虑,只需要求得余数Yx。表2-1给出了举例数据的除法过程。表2-1用移位除法求校验码的过程表 除数次数 被除数/ Px/结果 余数01XXXXXXXXXX100001001110000100111001110000110011100001000001001110000021000000011100110011从表2-1中可以看出,CRC编码实际上是一个循环移位的模2运算。对于CRC-4而言,我们假设有一个5位的数据以为存放器,通过反复的移位和进行二进制的除法,最终该存放器中的值去掉最高一位就是我们所要求的余数。2.3.4CRC 校验生成模块的设计实现CRC 校验生成模块是在XILINX ISE 平台编程实现,程序首先执行了11次异或运算,流程图如2-10所示,然后在作一次异或运算,得到的记过就是crc校验码图2-10 CRC校验生成模块流程图根据上述流程图,用VHDL语言描述CRC编码生成模块如图2-11所示:图2-11 CRC校验生成模块CRC 校验生成模块如图2-11 所示. 其中sdata 是12 位发送信息,datald 是sdata 的装载信号,clk是时钟信号,datacrco 是附加上4 位CRC 校验码的16 位CRC 码,hsend 是与检错模块的握手信号。 2.3.5 CRC校验生成模块仿真波形图图2-12 CRC校验生成模块仿真波形图2.3.6 CRC 校验接收模块的设计实现CRC 校验检错模块编程思想和生成模块类似,从接收到的CRC 码中,提取出信息码,然后将信息码与生成多项式进行异或运算,最后判断得到的余数与CRC 生成模块中得到的校验码是否相同,如果相同,认为信息发送正确,将输出的误码警告标志信号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 MD5码的算法分析MD5码就是把一个任意长度的字节串变换成一定长的大整数。即MD5将任意长度的“字节串变换成一个128位的大整数,并且它是一个不可逆的字符串变换算法,换言之,即使你看到源程序和算法描述也无法将一个MD5的值变换回原始的字符串12。从数学原理上说是因为原始的字符串有无穷多个,这有点像不存在反函数的数学函数。2.5.1 MD5的引言 MD5算法就是把不同长度的信息串转化到128位编码中形成Hash值。然后比拟这个数值是否正确从而确定通信双方的合法性。这也可以说是一种数字认证,在数据传输以后,我们可以通过比拟Hash值,来判断信息传输途中有没有被被修改,是否是合法人发送或者是有合法人接收的13。利用这种方式,来防止密钥丧失。由于MD5加密算法的随机生成性,没有正确的Hash 值是不可能解开加密局部的。而且MD5算法同时具备数字认证的功能,可以证明发送方和接收方的合法性,比拟适用于那些商业信息的传递。2.5.2 MD5的原理该算法输入任意长度的消息,输出128 位消息摘要,处理以512位输入数据块为单位。处理报文摘要的过程如下14:1添加填充位。在消息的最后,添加适当的填充位使数据位的长度满足与448模512同余。2添加长度。原消息长度我们用64位表示,且附加在1的结果后面。由这两个步骤得到了512整数倍的报文。将其表示为L个512 位的数据块:Y0,Y1 ,YL-1。他们的长度为L512位,设N L16,那么得到了长度为N个32 位的字。M0N-1表示以字为单位的消息。3初始化MD缓冲区。一个128位MD缓冲区用以保存中间和最终散列函数的结果。它可以表示成4个32位的存放器A、B、C、D。并对其进行初始化:A 67452301B EFCDAB89C 98BADCFED 10325476存放器内容Word A : 01 23 45 67Word B: 89 ABCD EFWord C: FE DC BA 98Word D: 76 54 32 10这里采用小数在前的格式进行存储。4处理消息块。它包括4轮处理,每次处理都具有相似的结构,但每次使用不同的根本逻辑函数,记为F、G、H、I。每次使用64元素表T164四分之一。T由正弦函数构造而成。T的第i个元素表示为Ti,其值等于232abs sin i 的整数局部,其中i是弧度。T的每一个元素是一个可以表示成32位的整数。T表提供了随机化的32 位模板,消除了在输入数据中的任何规律性的特征T 表T 1 D76AA478 T 49 F4292244T 2 E8C7B756 T 50 432AFF97T 3 242070DB T 51 AB9423A7T 4 C1BDCEEE T 52 FC93A039 T 16 49b40821 T 64 EB86D391 5 输出结果。2.5.4 MD5的应用MD5码的应用,主要是在加密、解密两个方面15。在我们的解压缩文件中,有很多就是应用到了MD5码。由于它的保密工作具有一次性保密工作的特点,不仅保存了一次性口令的优点,而且克服了序列密码一次性口令系统中的小数攻击和IP地址欺骗攻击的漏洞,同时又防止了RSA算法中大整数质因数分解的计算效率问题。3过失控制编码技术开发体会3.1 算法的重要在刚开始设计这个毕设的时候,我可以说的这个课题不甚了解,有点无从下手的感觉,通过上网查询和陈老师的教导,我的课题是一个研究性的课题,所以我就要搜集好几种编码来分别进行研究,来找出它们的异同点,首先找到的是汉明码和CRC码,这两种广泛应用于数字通讯中的编码,但是我要用FPGA去实现,这种用硬件实现起来传输速度会很快,可是在这之中算法就是一个很难的问题,我只有理解了算法才能用VHDL的语言来做出来,包括我后来做的MD5编码,算法也是相当的重要的,而且我觉得很难,这些花费我很多的时间。 算法可以说是一种编码的灵魂,没有算法我是不可能实现我的研究课题的,这些涉及到很多别的问题,不是很容易明白,我就要不断地去分析和查找书籍,找出这些原理的所在,为下面的工作做准备。3.2 硬件对软件的制约影响在毕业设计的过程中,尤其到了硬件调试的时候,还有一点感受比拟深刻,那就是硬件对软件设计的影响。由于试验台硬件和小组设计试验板硬件性能不完全相同,致使软件系统从试验台到试验板的过程中遇到了很多意想不到的问题,最终还是通过修改软件来适应硬件的标准。3.3 调试的重要性程序写出来之后,需要进行大量的硬件调试工作,否那么的话,一旦出现问题,就搞不清楚问题究竟是软件设计的错误还是硬件电路板的错误,所以首先解决硬件调试是必须的。在调试的过程中,需要有清晰的逻辑思维作根底,对硬件知识有熟练的掌握和灵活的应用。4 结束语本课题的研究设计至此就根本完成了。本文研究了EDA技术的开展对电路设计方法的影响,深入讨论了用VHDL语言和复杂系统可编程逻辑器件开发的根本方法,作为应用对象,基于VHDL语言、应用FPGA开发的过失控制编码技术,系统采用了“自顶向下的设计方法,系统的顶层设计和底层设计采用原理图输入描述和VHDL语言进行描述,选用了当前流行的EDA软件平台XINLIX ISE作为开发平台,所有程序全部通过了该平台的编译和功能仿真实验,在配有SPATANIII芯片的实验台上通过了硬件测试。最后,把程序下载到一个独立的硬件系统,经过不断的调试和改良,终于完成了编码算法的硬件实现。通过上述工作,我对设计、调试过程中出现的问题进行了分析、研究、解决。通过对EDA技术的学习和对这些编码的初步尝试,对前几年的软硬件方面的知识有了进一步的了解和加深,进一步对软硬件的结合有了更深的认识。经过这个课题的研究使我们已经开始掌握了复杂可编程逻辑器件的开发流程和步骤,并可以展开进一步的提高,比方开发更为复杂的系统。我们研究的这个编码译码模块完全可以嵌入到一个更大大的通信系统内部,作为其中的子模块使用。回忆毕业设计的整个过程,感受最深的并不是自己开发的这么一个过失控制编码FPGA的实现,而是一个设计从起步到终止整个过程的整体性,连贯性;在这个过程中,初步有了系统开发的概念和经验,为以后的学习工作打下了坚实的根底;通过整个学习新知识,运用新知识的过程,锻炼了自己独立自主学习,分析解决问题等等方面的能力。总之一句话,通过毕业设计阶段的学习和锻炼,受益颇深。 参考文献1潘松,黄继业 EDA技术与VHDLM.北京:清华大学出版社, 2005-07:15-18.?2黄智伟.FPGA 系统设计与实践M.北京:电子工业出版社,20053王兴亮数字通信原理与技术西安电子科技大学出版社2000年.4R. W. Hamming.Coding 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.北京:国防工业出版社,2005.10周贤伟.过失控制编码与平安M.北京:国防工业出版社,2004.11辛英.汉明码纠错检错能力分析与应用J.盐城工学院报:自然科学版,2021,21 1 :34.12郭瑛,俞宗佐.基于FPGA 的循环冗余校验模块设计J,内蒙古大学学报自然科学版2021年第4期王新梅肖国镇纠错码-原理与方法西安电子科技大学出版社1991.14Shu Lin,Daniel J.Costello.Error Control CodingM:Fundamentals and Applications, 2nd Edition15Tsfasman MA. Moduar curves,Shimura curves and Goppa codes,better than V arshamov2Gilbert boundJ.Math N ach r,1982,104:1328.附录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- provided for instantiating Xilinx primitive components.-library UNISIM;-use UNISIM.VComponents.all;entity hammbm isport hammin:in std_logic_vector 0 to 3 ;hammout:out std_logic_vector 0 to 7 ;end hammbm;architecture lab1 of hammbm issignal p:std_logic_vector 0 to 3 ;beginp 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 ISport hamin:IN std_logic_VECTOR 0 to 7 ;dataout:OUT std_logic_VECTOR 0 to 3 ;sec,ded,ne:OUT std_logic ;END hammym;ARCHITECTURE ver1 OF hammym ISbeginPROCESS hamin variable syndrome:std_logic_VECTOR 3 DOWNTO 0 ;beginsyndrome 0 : hamin 0 XOR hamin 1 XOR hamin 2 XOR hamin 3 XOR hamin 4 XOR hamin 5 XORhamin 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 THENne 1;ded 0;sec 0;dataout 0 to 3 hamin 0 to 3 ;ELSIF syndrome 0 1 THENne 0;ded 0;sec 1;case syndrome 3 DOWNTO 1 ISwhen000|001|010|100 dataout 0 to 3 hamin 0 to 3 ;when011 dataout 0 NOT hamin 0 ; dataout 1 to 3 hamin 1 to 3 ;when101 dataout 1 NOT hamin 1 ; dataout 0 hamin 0 ; dataout 2 to 3 hamin 2 to 3 ;when110 dataout 2 NOT hamin 2 ; dataout 3 hamin 3 ; dataout 0 to 1 hamin 0 to 1 ;when111 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 3DOWNTO 1 / 000 THENne 0;ded 1;sec 0;dataout 0 to 3 0000;END IF ;END PROCESS ;END ver1 ;附 录IIICRC校验生成模块VHDL代码:library 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- 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 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 ;beginprocess 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 ; 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 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 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; - 变量转换成信号end process;datacrc input 15downto0 xor 000000000000&o ; - 输出end myarch;附 录IVCRC接收校验模块VHDL代码:entity crcjy isport clk:in std_logic; hrecv:in std_logic; datacrc:in std_logic_vector 15 downto 0 ; rdata:out std_logic_vector 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 ;beginprocess clk variable crcvar: 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
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


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

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


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