《毕业设计(论文)基于VHDL汉明码编译码器的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于VHDL汉明码编译码器的设计与实现.doc(36页珍藏版)》请在三一办公上搜索。
1、基于VHDL汉明码编译码器的设计与实现目 录摘 要1第一章 绪论31.1研究背景与选题意义31.2研究目标与主要工作31.3论文的内容安排4第二章 汉明码及汉明码编译原理421 纠错编码的基本原理42.1.1 分组码基本原理42.1.2分组码的码重和码距52.2 汉明码编译原理8第三章 VHDL语言与集成环境1031 EDA概念103.2 Max+pluxII简介113.3 VHDL语言123.3.1基本介绍123.3.2 VHDL语言设计的特点123.3.3 VHDL语言优势13第四章 汉明码编译系统模块设计与实现1441 汉明码编译原理设计1442 系统模块设计144.2.1 16位比特序
2、列产生与分组模块144.2.2 编码模块164.3.3 加错模块164.3.4 译码与分组模块17第五章 系统仿真、调试和结果分析185.1 16位序列产生与分组模块仿真185.1.1仿真图185.1.2 结果分析195.2 编码模块仿真195.2.1仿真图195.2.2 结果分析195.3 加错模块195.3.1仿真图195.3.2 结果分析205.4 译码与分组串行模块仿真205.4.2 结果分析205.5 系统仿真205.5.1 顶层图205.5.3 结果分析25第六章 总结25参考文献26附录程序:28摘 要在通信系统中,要提高信息传输的有效性,我们将信源的输出经过信源编码用较少的符号
3、来表达信源消息,这些符号的冗余度很小,效率很高,但对噪声干扰的抵抗能力很弱。为了提高信息传输的准确性,我们引进了差错控制技术。而该技术采用可靠的,有效的信道编码方法来实现的。纠错码是一种差错控制技术,目前已广泛应用于各种通信系统和计算机系统中,纠错编码主要用于数字系统的差错控制,对于保证通信、存储、媒体播放和信息转移等数字传递过程的质量有着重要意义,是通信、信息类科知识结构中不可缺少的一部分。本文章主要研究了基于VHDL语言的(7,4)汉明码的设计。整个设计包括四个模块:16位序列产生和分组模块, 编码模块, 加错模块, 译码模块。其中加错模块是为了模拟信道干扰人为的给数据添加一位错误,然后通
4、过MAX+plusII 10.2软件进行仿真和调试,从而验证了(7,4)汉明码具有纠正一位错码的能力。 关键词:编码 译码 MAX+plusIIABSTRACTIn the communications system, to enhance the effectiveness of information transmission, we will source the output after source coding with fewer symbols to express the source of the news letter, the redundancy of these s
5、ymbols is very small, very efficient, but the noise weak resistance to interference. In order to improve the accuracy of information transmission, we introduce error control techniques. The technology uses a reliable and effective method of channel coding to achieve. Error-correcting code is an erro
6、r control techniques have been widely used in various communications systems and computer systems, mainly used for error-correcting coding errors in digital control systems, to ensure communication, storage, media players and digital transmission of information transfer the quality of the process of
7、 great significance, is the communications, information-type knowledge structure of subjects an indispensable part. This article introduces a systematic error-correcting codes in digital systems in the use and development, as well as the basic principles of error-correcting codes and meaning of comm
8、only used error-correcting codes and classified briefings, as well as Vc + +6.0, introduced the basic knowledge, and how Vc + + to achieve the application of hamming code encoder and decoder. This article mainly study the design of the (7, 4) Hamming Code based on the Very-High-Speed Integrated Circ
9、uit HardwareDescription Language . The design of hamming code consists of four modules: the 16 Sequence generation and grouping module, the encoding module, the adding one bit error module, and the decoding module. the design of the adding one bit error module is to simulate channels interference ,
10、affer testing and simulation ,thus proving that the (7, 4)Hanmming code has the ability to correct a wrong code. Key words: encode; decode; MAX+plusII第一章 绪论1.1研究背景与选题意义1、研究背景移动通信的发展日新月异,其强大的魅力之所在就是它能为众提供了固话所不及的灵活、机动、高效的通信方式,非常适合信息社会发展的需要,但同时这也使移动通信系统的研究、开发和实现比有线通信系统更复杂、更困难。实际上,移动无线信道是通信中最恶劣、最难预测的通信信
11、道之一。于是促进了信道编码技术的发展。目前信道编码已经成功地应用于各种通信系统中,并且在计算机、磁记录与各种存储器中了得到日益广泛的应用。提高数据传输效率,降低误码率是信道编码的任务。信道编码的本质是增加通信的可靠性。但信道编码会使有用的信息数据传输减少,信道编码的过程是在源数据码流中加插一些码元,从而达到在接收端进行判错和纠错的目的,这就是我们常常说的开销。这就好象我们运送一批玻璃杯一样,为了保证运送途中不出现打烂玻璃杯的情况,我们通常都用一些泡沫或海棉等物将玻璃杯包装起来,这种包装使玻璃杯所占的容积变大,原来一部车能装5000各玻璃杯的,包装后就只能装4000个了,显然包装的代价使运送玻璃
12、杯的有效个数减少了。同样,在带宽固定的信道中,总的传送码率也是固定的,由于信道编码增加了数据量,其结果只能是以降低传送有用信息码率为代价了。将有用比特数除以总比特数就等于编码效率了,不同的编码方式,其编码效率有所不同。编码涉及到的内容也比较广泛,前身纠错编码(FEC)、线性分组码(汉明码、循环码)、理德-所罗门码(RS码)、FIRE码、交织码、卷积码、TCM编码、Turbo码等都是差错控制编码的研究范畴。汉明码是由汉明于1950年提出的,具有纠正一位错误能力的线性分组码,它的突出特点是:编译码电路简单,易于硬件实现;用软件实现编译码算法时,软件效率高;而且性能比较好。2、选题意义汉明码的编码与
13、译码是通信领域的一个重要的研究内容。与一般的编码相比其具有比较高效率,同时其是分组码的典型代表,是深入研究其他分组码的基础,也是研究其他非分组码(如循环码)的基础,本课题利用EDA来实现,与实际联系很大,对将来从事实际工作和相关研究具有很大帮助。1.2研究目标与主要工作1、研究目标学习EDA集成开发工具(MAX+plus II)相关操作。包括学习VHDL编程语言、方法和仿真结果的查看、处理等。研究学习汉明码编译的原理。2、主要工作查阅资料,认真学习EDA开发工具(MAX+plus II),熟练掌握VHDL语言的编程思路与方法。对系统的结构设计有了初步的思路以后,大体绘出系统的结构框图。对系统进
14、行设计,完成程序的编写。在认真学习了汉明码编译的原理后,编写程序实现算法。对程序进行调试,对系统进行计算机仿真。对已搭建好的汉明码编译系统仿真研究,记录相应的仿真结果。1.3论文的内容安排第二章将介绍汉明码及汉明码编译原理。第三章将介绍VHDL语言,以及EDA集成开发环境MAX+plusII。第四章详细介绍了汉明码编译系统模块设计与实现。第五章对系统仿真和调试以及最后对结果进行分析。第六章对整个系统的设计进行总结与展望。最后是致谢和参考文献。第二章 汉明码及汉明码编译原理21 纠错编码的基本原理2.1.1 分组码基本原理设有一种由3位二进制数字构成的码组,它共有8种不同的可能组合。若将其全部用
15、来表示天气,则可以表示8种不同天气,例如:“000”(晴),“001”(云),“010”(阴),“011”(雨),“100”(雪),“101”(霜),“110”(雾),“111”(雹)。其中任一码组在传输中若发生一个或多个错码,则将变成另一个信息码组。这时,接收端将无法发现错误。若在上述8种码组中只准许使用4种来传送天气,例如:“000”晴 “011”云 “101”阴 “110”雨这时,虽然只能传送4种不同的天气,但是接收端却有可能发现码组中的一个错码。例如,若“000”(晴)中错了一位,则接收码组将变成“100”或“010”或“001”。这3种码组都是不准使用的,称为禁用码组。接收端在收到禁
16、用码组时,就认为发现了错码。当发生3个错码时,“000”变成了“111”,它也是禁用码组,故这种编码也能检测3个错码。但是这种码不能发现一个码组中的两个错码,因为发生两个错码后产生的是许用码组【1】。上面这种编码只能检测错码,不能纠正错码。例如,当接收码组为禁用码组“100”时,接收端将无法判断是哪一位码发生了错误,因为晴、阴、雨三者错了一位都可以变成“100”。要能够纠正错误,还要增加多余度。例如,若规定许用码组只有两个:“000”(晴),“111”(雨),其他都是禁用码组,则能够检测两个以下错码,或能够纠正一个错码。例如,当收到禁用码组“100”时,若当作仅有一个错码,则可以判断此错码发生
17、在“1”位,从而纠正为“000”(晴)。因为“111”(雨)发生任何一位错码时都不会变成“100”这种形式。但是,这时若假定错码数不超过两个,则存在两种可能性:“000”错一位和“111”错两位都可能变成“100”,因而只能检测出存在错码而无法纠正错码。将信息码分组,为每组信息码附加若干监督码的编码称为分组码 。在分组码中,监督码元仅监督本码组中的信息码元。信息位和监督位的关系举例如表2-1-1:表2-1-1 信息位与监督位的关系 信息位监督位晴000云011阴101雨110分组码的一般结构如图2-1-1:图2-1-1 分组的一般结构分组码的符号:(n, k)N 码组的总位数,又称为码组的长度
18、(码长)。k 码组中信息码元的数目。n k r 码组中的监督码元数目,或称监督位数目。 2.1.2分组码的码重和码距码重:把码组中“1”的个数目称为码组的重量,简称码重。码距:把两个码组中对应位上数字不同的位数称为码组的距离,简称码距。码距又称汉明距离。例如,“000”晴,“011”云,“101”阴,“110”雨,4个码组之间,任意两个的距离均为2。最小码距:把某种编码中各个码组之间距离的最小值称为最小码距(d0)。例如,上面的编码的最小码距d0 = 2。图2-1-2 三维空间对于3位的编码组,可以在3维空间中说明码距的几何意义。 每个码组的3个码元的值(a1, a2, a3)就是此立方体各顶
19、点的坐标。而上述码距概念在此图中就对应于各顶点之间沿立方体各边行走的几何距离。由图2-1-2可以直观看出,上例中4个准用码组之间的距离均为2。一种编码的最小码距d0的大小直接关系着这种编码的检错和纠错能力,为检测e个错码,要求最小码距d0 e + 1。2图2-1-3 汉明距离【证】设一个码组A位于O点,如图2-1-3所示。若码组A中发生一个错码,则我们可以认为A的位置将移动至以O点为圆心,以1为半径的圆上某点,但其位置不会超出此圆。若码组A中发生两位错码,则其位置不会超出以O点为圆心,以2为半径的圆。因此,只要最小码距不小于3,码组A发生两位以下错码时,不可能变成另一个准用码组,因而能检测错码
20、的位数等于2。同理,若一种编码的最小码距为d0,则将能检测(d0 - 1)个错码。反之,若要求检测e个错码,则最小码距d0至少应不小于( e + 1)。为了纠正t个错码,要求最小码距d0 2t + 1。图2-1-4 汉明距离【证】图2-1-4中画出码组A和B的距离为5。码组A或B若发生不多于两位错码,则其位置均不会超出半径为2以原位置为圆心的圆。这两个圆是不重叠的。判决规则为:若接收码组落于以A为圆心的圆上就判决收到的是码组A,若落于以B为圆心的圆上就判决为码组B。这样,就能够纠正两位错码。若这种编码中除码组A和B外,还有许多种不同码组,但任两码组之间的码距均不小于5,则以各码组的位置为中心以
21、2为半径画出之圆都不会互相重叠。这样,每种码组如果发生不超过两位错码都将能被纠正。因此,当最小码距d05时,能够纠正2个错码,且最多能纠正2个。若错码达到3个,就将落入另一圆上,从而发生错判。故一般说来,为纠正t个错码,最小码距应不小于(2t + 1)。在解释此式之前,先来分析图2.1.5所示的例子。图2-1-5 汉明距离图2-1-5中码组A和B之间距离为5。按照检错能力公式,最多能检测4个错码,即e = d0 1 = 5 1 = 4,按照纠错能力公式纠错时,能纠正2个错码。但是,不能同时作到两者,因为当错码位数超过纠错能力时,该码组立即进入另一码组的圆内而被错误地“纠正”了。例如,码组A若错
22、了3位,就会被误认为码组B错了2位造成的结果,从而被错“纠”为B。这就是说,检错和纠错公式不能同时成立或同时运用。所以,为了在可以纠正t个错码的同时,能够检测e个错码,就需要像图2-1-6所示: 图2-1-6 汉明距离使某一码组(譬如码组A)发生e个错误之后所处的位置,与其他码组(譬如码组B)的纠错圆圈至少距离等于1,不然将落在该纠错圆上从而发生错误地“纠正”。因此,由图2-1-6可以直观看出,要求最小码距这种纠错和检错结合的工作方式简称纠检结合。这种工作方式是自动在纠错和检错之间转换的。当错码数量少时,系统按前向纠错方式工作,以节省重发时间,提高传输效率;当错码数量多时,系统按反馈重发方式纠
23、错,以降低系统的总误码率。所以,它适用于大多数时间中错码数量很少,少数时间中错码数量多的情况。2.2 汉明码编译原理能够纠正1位错码且编码效率较高的一种线性分组码。在偶数监督码中,由于使用了一位监督位a0,它和信息位an-1 a1一起构成一个代数式:在接收端解码时,实际上就是在计算若S = 0,就认为无错码;若S = 1,就认为有错码。现将上式称为监督关系式,S称为校正子。由于校正子S只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。若监督位增加一位,即变成两位,则能增加一个类似的监督关系式。由于两个校正子的可能值有4中组合: 00,01,10,11,故能表示4种不同的信息
24、。若用其中1种组合表示无错,则其余3种组合就有可能用来指示一个错码的3种不同位置。同理,r个监督关系式能指示1位错码的(2r 1)个可能位置。一般来说,若码长为n,信息位数为k,则监督位数rnk。如果希望用r个监督位构造出r个监督关系式来指示1位错码的n种可能位置,则要求下面通过一个例子来说明如何具体构造这些监督关系式。例:设分组码(n, k)中k = 4,为了纠正1位错码,由上式可知,要求监督位数 r 3。若取 r = 3,则n = k + r = 7。我们用a6 a5 a0表示这7个码元,用S1、S2和S3表示3个监督关系式中的校正子,则S1、S2和S3的值与错码位置的对应关系可以规定如表
25、2-1-2所示:表2-1-2 校正子与错码位置的关系S1 S2 S3错码位置S1 S2 S3错码位置0 0 1a01 0 1a40 1 0a11 1 0a51 0 0a21 1 1a60 1 1a30 0 0无错码由上表中规定可见,仅当一位错码的位置在a3 、a4、a5或a6时,校正子S1为1;否则S1为零。这就意味着a3 、a4、a5和a6四个码元构成偶数监督关系: 同理, a1、a2、a5和a6构成偶数监督关系:以及a0、a2、a4 和a6构成偶数监督关系 在发送端编码时,信息位a6、a5、a4和a3的值决定于输入信号,因此它们是随机的。监督位a2、a1和a0应根据信息位的取值按监督关系来
26、确定,即监督位应使上三式中S1、S2和S3的值为0(表示编成的码组中应无错码):上式经过移项运算,解出监督位给定信息位后,可以直接按上式算出监督位, 结果见表2-1-3:表2-1-3 与信息位对应的监督位信息位a6 a5 a4 a3监督位a2 a1 a0信息位a6 a5 a4 a3监督位a2 a1 a00000000100011100010111001100001010110100100011110101100101001101100001010110111010100110011111010001110001111111接收端收到每个码组后,先计算出S1、S2和S3,再查表判断错码情况。例如
27、,若接收码组为0000011,按上述公式计算可得:S1 = 0,S2 = 1,S3 = 1。由于S1 S2 S3 等于011,故查表可知在a3位有1错码。 按照上述方法构造的码称为汉明码。表中所列的(7, 4)汉明码的最小码距d0 = 3。因此,这种码能够纠正1个错码或检测2个错码。由于码率k/n = (n - r) /n =1 r/n,故当n很大和r很小时,码率接近1。可见,汉明码是一种高效码。 第三章 VHDL语言与集成环境31 EDA概念20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电
28、子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、 设计过程和设计观念,促进了EDA技术的迅速发展。【4】 EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和
29、可操作性,减轻了设计者的劳动强度。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。【3】3.2 Max+pluxII简介Max+plus是Altera公司提供的FPGA/CPL
30、D开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。【5】Max+plus开发系统的特点1、 开放的界面 Max+plus支持与Cadence,Exemplarlogic,Mentor Graphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口。 2、 与结构无关 Max+plus系统的核心Complier支持A
31、ltera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。 3、 完全集成化Max+plus的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。 4、 丰富的设计库 Max+plus提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function)。 5、 模块化工具 设计人员可以从各种设计输入、处理和较验选项中进行选择从而
32、使设计环境用户化。 6、 硬件描述语言(HDL) Max+plus软件支持各种HDL设计输入选项,包括VHDL、Verilog HDL和Altera自己的硬件描述语言AHDL。 7、 Opencore特征 Max+plus软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。3.3 VHDL语言3.3.1基本介绍VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE
33、-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的认可,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL与Verilog语言将承担起大部分的数字系统设计任
34、务。【6】 VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。 VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware DescriptionLanguage.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。 VHDL主要用于描述数字系统的结构,行为,功能和接口
35、。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。3.3.2 VHDL语言设计的特点与其他硬件描述语言相比,VHDL具有以下特点:(1)功能强大、设计灵活VHDL具有功能强大的语言结构,可以用简洁明确的源代
36、码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。(2)支持广泛、易于修改由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。(3)强大的系统硬件描述能力VHDL具有多层次的设计
37、描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建。【7】(4)高层次的系统模型。独立于器件的设计、与工艺无关设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。(5)很强的移植能力VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,
38、使得设计描述的移植成为可能。(6)易于共享和复用VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。3.3.3 VHDL语言优势(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的
39、功能可行性,随时可对设计进行仿真模拟。 (3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。 (4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。 (5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。【8】第四章 汉明码编译系统模块设计与实现41 汉明码编译原理设计原理图如图4-1所示: 图4-1 原理图该系统一共有四大模
40、块:(1)16位序列产生与分组模块(2)编码模块(3)加错模块(4)译码与分组串行42 系统模块设计4.2.1 16位比特序列产生与分组模块1、管脚说明 CLK:输入的时钟,std_logic数据类型,上升沿有效。CLR:输入清零信号,高电平有效。ZO:输出的序列,std_logic数据类型。dataout16:每4个bit输出一次,std_logic_vector(3 downto 0)数据类型。2、功能该序列可以固定的输出0110 1111 0010 1101 16位二进制数,并且能够每16位循环一次。ZO输出管脚是直接输出的串行数据,并没有进行分组处理,而dataout16管脚实现了分组
41、功能,即每四位分为一组。这样16位数据分成了四组。【9】3、用VHDL语言实现首先选择一个计数变量,每当计数一次就输出一个bit。IF(CLR=1)THEN COUNT=0000; ELSE IF(CLK=1AND CLKEVENT)THEN IF(COUNT=1111)THEN COUNT=0000; ELSE COUNTZZZZZZZZZZZZZZZZ=1; END CASE;然后将输出存入一个矢量数据dataout16中:if clr=1 then dataout16=0000; elsif rising_edge(clk) then if temp1a(3):=Z;temp:=1; w
42、hen 1=a(2):=Z;temp:=2; when 2=a(1):=Z;temp:=3; when 3=a(0):=Z;temp:=0;temp1:=temp1+1;dataout16=a(3)&a(2)&a(1)&a(0); end case; end if; end if;其中变量temp1是数组个数,按照每16分四个组则可分四个数组,所以其值是从0到3四个整数,temp变量标志一个数组中的第几位,如果temp=0,则是相应数据中的第一个比特。4.2.2 编码模块1、管脚说明a: 输入要编码的数据,共有四位。b: 输出已经编码的码,b6,b5,b4,b3,b2,b1,b0,前四位为信息
43、位,后三位为监督位。2、功能将四位信息码,根据汉明码原理,加上3位监督位,输出六位二进制码。3、用VHDL语言实现b(6)=a(3);b(5)=a(2);b(4)=a(1);b(3)=a(0);b(2)=a(3) xor a(2) xor a(1);b(1)=a(3) xor a(2) xor a(0);b(0) S(0):=NOT DATAIN(0);DATAOUT S(1):=NOT DATAIN(1);DATAOUT S(2):=NOT DATAIN(2);DATAOUT S(3):=NOT DATAIN(3);DATAOUT=DATAIN(6 DOWNTO 4)& S(3)&DATAIN(2 DO