基于VHDL汉明码编译码器的设计与实现_第1页
基于VHDL汉明码编译码器的设计与实现_第2页
基于VHDL汉明码编译码器的设计与实现_第3页
基于VHDL汉明码编译码器的设计与实现_第4页
基于VHDL汉明码编译码器的设计与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于基于 VHDLVHDL 汉明码编译码器的设计与实现汉明码编译码器的设计与实现 目 录 摘 要.1 第一章第一章 绪论 .3 1.1 研究背景与选题意义 .3 1.2 研究目标与主要工作 .3 1.3 论文的内容安排 .4 第二章 汉明码及汉明码编译原理.4 21 纠错编码的基本原理 .4 2.1.1 分组码基本原理.4 2.1.2 分组码的码重和码距 .5 2.2 汉明码编译原理 .8 第三章 VHDL 语言与集成环境 .10 31 EDA 概念.10 3.2 MAX+PLUXII 简介.11 3.3 VHDL 语言.12 3.3.1 基本介绍 .12 3.3.2 VHDL 语言设计的特点

2、 .12 3.3.3 VHDL 语言优势 .13 第四章 汉明码编译系统模块设计与实现.14 41 汉明码编译原理设计 .14 42 系统模块设计 .14 4.2.1 16 位比特序列产生与分组模块 .14 4.2.2 编码模块.16 4.3.3 加错模块.16 4.3.4 译码与分组模块.17 第五章 系统仿真、调试和结果分析.18 5.1 16 位序列产生与分组模块仿真.18 5.1.1 仿真图 .18 5.1.2 结果分析.19 5.2 编码模块仿真 .19 5.2.1 仿真图 .19 5.2.2 结果分析.19 5.3 加错模块 .19 5.3.1 仿真图 .19 5.3.2 结果分析

3、.20 5.4 译码与分组串行模块仿真 .20 5.4.2 结果分析.20 5.5 系统仿真 .20 5.5.1 顶层图.20 5.5.3 结果分析.25 第六章 总结.25 参考文献.26 附录程序:.28 摘摘 要要 在通信系统中,要提高信息传输的有效性,我们将信源的输出经过信源 编码用较少的符号来表达信源消息,这些符号的冗余度很小,效率很高,但 对噪声干扰的抵抗能力很弱。为了提高信息传输的准确性,我们引进了差错 控制技术。而该技术采用可靠的,有效的信道编码方法来实现的。 纠错码是一种差错控制技术,目前已广泛应用于各种通信系统和计算机 系统中,纠错编码主要用于数字系统的差错控制,对于保证通

4、信、存储、媒 体播放和信息转移等数字传递过程的质量有着重要意义,是通信、信息类科 知识结构中不可缺少的一部分。 本文章主要研究了基于 VHDL 语言的(7,4)汉明码的设计。整个设计 包括四个模块: 16 位序列产生和分组模块, 编码模块, 加错模块, 译 码模块。其中加错模块是为了模拟信道干扰人为的给数据添加一位错误,然 后通过 MAX+plusII 10.2 软件进行仿真和调试,从而验证了( 7,4)汉明 码具有纠正一位错码的能力。 关键词关键词:编码 译码 MAX+plusII ABSTRACT In the communications system, to enhance the e

5、ffectiveness 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 symbols is very small, very efficient, but the noise weak resistance to interference. In order to improve the accuracy of infor

6、mation transmission, we introduce error control techniques. The technology uses a reliable and effective method of channel coding to achieve. Error- correcting code is an error control techniques have been widely used in various communications systems and computer systems, mainly used for error-corr

7、ecting coding errors in digital control systems, to ensure communication, storage, media players and digital transmission of information transfer the quality of the process of great significance, is the communications, information-type knowledge structure of subjects an indispensable part. This arti

8、cle 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 commonly used error-correcting codes and classified briefings, as well as Vc + +6.0, introduced the basic knowledge, and how Vc +

9、 + 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 Circuit HardwareDescription Language . The design of hamming code consists of four modules: the 16 Sequence generation and groupi

10、ng 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 , affer testing and simulation ,thus proving that the (7, 4)Hanmming code has the ability to correct a wrong code. Key words: e

11、ncode; decode; MAX+plusII 第一章第一章 绪论绪论 1.1 研究背景与选题意义 1、研究背景 移动通信的发展日新月异,其强大的魅力之所在就是它能为众提供了固话 所不及的灵活、机动、高效的通信方式,非常适合信息社会发展的需要,但同 时这也使移动通信系统的研究、开发和实现比有线通信系统更复杂、更困难。 实际上,移动无线信道是通信中最恶劣、最难预测的通信信道之一。于是促进 了信道编码技术的发展。目前信道编码已经成功地应用于各种通信系统中,并 且在计算机、磁记录与各种存储器中了得到日益广泛的应用。提高数据传输效 率,降低误码率是信道编码的任务。信道编码的本质是增加通信的可靠性。

12、但 信道编码会使有用的信息数据传输减少,信道编码的过程是在源数据码流中加 插一些码元,从而达到在接收端进行判错和纠错的目的,这就是我们常常说的 开销。这就好象我们运送一批玻璃杯一样,为了保证运送途中不出现打烂玻璃 杯的情况,我们通常都用一些泡沫或海棉等物将玻璃杯包装起来,这种包装使 玻璃杯所占的容积变大,原来一部车能装 5000 各玻璃杯的,包装后就只能装 4000 个了,显然包装的代价使运送玻璃杯的有效个数减少了。同样,在带宽固 定的信道中,总的传送码率也是固定的,由于信道编码增加了数据量,其结果 只能是以降低传送有用信息码率为代价了。将有用比特数除以总比特数就等于 编码效率了,不同的编码方

13、式,其编码效率有所不同。编码涉及到的内容也比 较广泛,前身纠错编码(FEC) 、线性分组码(汉明码、循环码) 、理德-所罗门 码(RS 码) 、FIRE 码、交织码、卷积码、TCM 编码、Turbo 码等都是差错控制编 码的研究范畴。 汉明码是由汉明于 1950 年提出的,具有纠正一位错误能力的线性分组码, 它的突出特点是:编译码电路简单,易于硬件实现;用软件实现编译码算法时, 软件效率高;而且性能比较好。 2、选题意义 汉明码的编码与译码是通信领域的一个重要的研究内容。与一般的编码相 比其具有比较高效率,同时其是分组码的典型代表,是深入研究其他分组码的 基础,也是研究其他非分组码(如循环码)

14、的基础,本课题利用 EDA 来实现, 与实际联系很大,对将来从事实际工作和相关研究具有很大帮助。 1.2 研究目标与主要工作 1、研究目标 学习 EDA 集成开发工具(MAX+plus II)相关操作。包括学习 VHDL 编程语言、 方法和仿真结果的查看、处理等。研究学习汉明码编译的原理。 2、主要工作 查阅资料,认真学习 EDA 开发工具(MAX+plus II) ,熟练掌握 VHDL 语言的 编程思路与方法。对系统的结构设计有了初步的思路以后,大体绘出系统的结 构框图。对系统进行设计,完成程序的编写。在认真学习了汉明码编译的原理 后,编写程序实现算法。对程序进行调试,对系统进行计算机仿真。

15、对已搭建 好的汉明码编译系统仿真研究,记录相应的仿真结果。 1.3 论文的内容安排 第二章将介绍汉明码及汉明码编译原理。 第三章将介绍 VHDL 语言,以及 EDA 集成开发环境 MAX+plusII。 第四章详细介绍了汉明码编译系统模块设计与实现。 第五章对系统仿真和调试以及最后对结果进行分析。 第六章对整个系统的设计进行总结与展望。 最后是致谢和参考文献。 第二章第二章 汉明码及汉明码编译原理汉明码及汉明码编译原理 21 纠错编码的基本原理 2.1.1 分组码基本原理 设有一种由 3 位二进制数字构成的码组,它共有 8 种不同的可能组合。若 将其全部用来表示天气,则可以表示 8 种不同天气

16、, 例如:“000” (晴) , “001” (云) , “010” (阴) , “011” (雨) , “100” (雪) , “101” (霜) , “110” (雾) , “111” (雹) 。 其中任一码组在传输中若发生一个或多个错码,则将变成另一个信息码组。 这时,接收端将无法发现错误。 若在上述 8 种码组中只准许使用 4 种来传送天气,例如: “000”晴 “011”云 “101”阴 “110”雨 这时,虽然只能传送 4 种不同的天气,但是接收端却有可能发现码组中的 一个错码。例如,若“000” (晴)中错了一位,则接收码组将变成“100”或 “010”或“001” 。这 3 种

17、码组都是不准使用的,称为禁用码组。接收端在收到 禁用码组时,就认为发现了错码。当发生 3 个错码时, “000”变成了“111” , 它也是禁用码组,故这种编码也能检测 3 个错码。但是这种码不能发现一个码 组中的两个错码,因为发生两个错码后产生的是许用码组【1】。 上面这种编码只能检测错码,不能纠正错码。例如,当接收码组为禁用码 组“100”时,接收端将无法判断是哪一位码发生了错误,因为晴、阴、雨三者 错了一位都可以变成“100” 。要能够纠正错误,还要增加多余度。例如,若规 定许用码组只有两个:“000” (晴) , “111” (雨) ,其他都是禁用码组,则能够 检测两个以下错码,或能够

18、纠正一个错码。例如,当收到禁用码组“100”时, 若当作仅有一个错码,则可以判断此错码发生在“1”位,从而纠正为“000” (晴) 。因为“111” (雨)发生任何一位错码时都不会变成“100”这种形式。 但是,这时若假定错码数不超过两个,则存在两种可能性:“000”错一位和 “111”错两位都可能变成“100” ,因而只能检测出存在错码而无法纠正错码。 将信息码分组,为每组信息码附加若干监督码的编码称为分组码 。 在分组码中,监督码元仅监督本码组中的信息码元。信息位和监督位的关系举 例如表 2-1-1: 表 2-1-1 信息位与监督位的关系 信息位监督位 晴 000 云 011 阴 101

19、雨 110 分组码的一般结构如图 2-1-1: 图 2-1-1 分组的一般结构 分组码的符号:(n, k) N 码组的总位数,又称为码组的长度(码长) 。 k 码组中信息码元的数目。 n k r 码组中的监督码元数目,或称监督位数目。 2.1.2 分组码的码重和码距 码重:把码组中“1”的个数目称为码组的重量,简称码重。 码距:把两个码组中对应位上数字不同的位数称为码组的距离,简称码距。 码距又称汉明距离。例如, “000”晴, “011”云, “101”阴, “110” 雨,4 个码组之间,任意两个的距离均为 2。 最小码距:把某种编码中各个码组之间距离的最小值称为最小码距(d0)。 例如,

20、上面的编码的最小码距d0 = 2。 图 2-1-2 三维空间 对于 3 位的编码组,可以在 3 维空间中说明码距的几何意义。 每个码组的 3 个码元的值(a1, a2, a3)就是此立方体各顶点的坐标。而上述码距概念在此图 中就对应于各顶点之间沿立方体各边行走的几何距离。由图 2-1-2 可以直观看 出,上例中 4 个准用码组之间的距离均为 2。 一种编码的最小码距 d0 的大小直接关系着这种编码的检错和纠错能力,为 检测e个错码,要求最小码距d0 e + 1。2 图 2-1-3 汉明距离 【证】设一个码组 A 位于 O 点,如图 2-1-3 所示。若码组 A 中发生一个错 码,则我们可以认为

21、 A 的位置将移动至以 O 点为圆心,以 1 为半径的圆上某点, 但其位置不会超出此圆。若码组 A 中发生两位错码,则其位置不会超出以 O 点 为圆心,以 2 为半径的圆。因此,只要最小码距不小于 3,码组 A 发生两位以 下错码时,不可能变成另一个准用码组,因而能检测错码的位数等于 2。同理, 若一种编码的最小码距为d0,则将能检测(d0 - 1)个错码。反之,若要求检测 e 个错码,则最小码距d0至少应不小于( e + 1)。 为了纠正 t 个错码,要求最小码距d0 2t + 1。 图 2-1-4 汉明距离 【证】图 2-1-4 中画出码组 A 和 B 的距离为 5。码组 A 或 B 若发

22、生不多于 两位错码,则其位置均不会超出半径为 2 以原位置为圆心的圆。这两个圆是不 重叠的。判决规则为:若接收码组落于以 A 为圆心的圆上就判决收到的是码组 A,若落于以 B 为圆心的圆上就判决为码组 B。这样,就能够纠正两位错码。若 这种编码中除码组 A 和 B 外,还有许多种不同码组,但任两码组之间的码距均 不小于 5,则以各码组的位置为中心以 2 为半径画出之圆都不会互相重叠。这 样,每种码组如果发生不超过两位错码都将能被纠正。因此,当最小码距 d05 时,能够纠正 2 个错码,且最多能纠正 2 个。若错码达到 3 个,就将落 入另一圆上,从而发生错判。故一般说来,为纠正 t 个错码,最

23、小码距应不小 于(2t + 1)。 在解释此式之前,先来分析图 2.1.5 所示的例子。 图 2-1-5 汉明距离 图 2-1-5 中码组 A 和 B 之间距离为 5。按照检错能力公式,最多能检测 4 个错码,即 e = d0 1 = 5 1 = 4,按照纠错能力公式纠错时,能纠正 2 个错码。但是,不能同时作到两者,因为当错码位数超过纠错能力时,该码组 立即进入另一码组的圆内而被错误地“纠正”了。例如,码组 A 若错了 3 位, 就会被误认为码组 B 错了 2 位造成的结果,从而被错“纠”为 B。这就是说, 检错和纠错公式不能同时成立或同时运用。所以,为了在可以纠正 t 个错码的 同时,能够

24、检测 e 个错码,就需要像图 2-1-6 所示: 图 2-1-6 汉明距离 使某一码组(譬如码组 A)发生 e 个错误之后所处的位置,与其他码组 (譬如码组 B)的纠错圆圈至少距离等于 1,不然将落在该纠错圆上从而发生错 误地“纠正” 。因此,由图 2-1-6 可以直观看出,要求最小码距这种纠错和检错 结合的工作方式简称纠检结合。 这种工作方式是自动在纠错和检错之间转换的。当错码数量少时,系统按 前向纠错方式工作,以节省重发时间,提高传输效率;当错码数量多时,系统 按反馈重发方式纠错,以降低系统的总误码率。所以,它适用于大多数时间中 错码数量很少,少数时间中错码数量多的情况。 2.2 汉明码编

25、译原理 能够纠正 1 位错码且编码效率较高的一种线性分组码。 在偶数监督码中,由于使用了一位监督位a0,它和信息位an-1 a1一起 构成一个代数式: 在接收端解码时,实际上就是在计算 若 S = 0,就认为无错码;若 S = 1,就认为有错码。现将上式称为监督关系式, S 称为校正子。由于校正子 S 只有两种取值,故它只能代表有错和无错这两种 信息,而不能指出错码的位置。若监督位增加一位,即变成两位,则能增加一 个类似的监督关系式。由于两个校正子的可能值有 4 中组合: 00,01,10,11,故能表示 4 种不同的信息。若用其中 1 种组合表示无错,则 其余 3 种组合就有可能用来指示一个

26、错码的 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 表示这 0 021 aaa nn 021 aaaS nn 1212rkn rr 或 7 个码元,用 S1、S2 和 S3 表示

27、 3 个监督关系式中的校正子,则 S1、S2 和 S3 的值与错码位置的对应关系可以规定如表 2-1-2 所示: 表 2-1-2 校正子与错码位置的关系 S1 S2 S3 错码位置 S1 S2 S3 错码位置 0 0 1a01 0 1a4 0 1 0a11 1 0a5 1 0 0a21 1 1a6 0 1 1a30 0 0 无错码 由上表中规定可见,仅当一位错码的位置在 a3 、a4、a5 或 a6 时,校正子 S1 为 1;否则 S1 为零。这就意味着 a3 、a4、a5 和 a6 四个码元构成偶数监督 关系: 24561 aaaaS 同理, a1、a2、a5 和 a6 构成偶数监督关系:

28、13562 aaaaS 以及 a0、a2、a4 和 a6 构成偶数监督关系 03463 aaaaS 在发送端编码时,信息位 a6、a5、a4 和 a3 的值决定于输入信号,因此它 们是随机的。监督位 a2、a1 和 a0 应根据信息位的取值按监督关系来确定,即 监督位应使上三式中 S1、S2 和 S3 的值为 0(表示编成的码组中应无错码): 上式经过移项运算,解出监督位 给定信息位后,可以直接按上式算出监督位, 结果见表 2-1-3: 0 0 0 0346 1356 2456 aaaa aaaa aaaa 3460 3561 4562 aaaa aaaa aaaa 表 2-1-3 与信息位对

29、应的监督位 信息位 a6 a5 a4 a3 监督位 a2 a1 a0信息位 a6 a5 a4 a3 监督位 a2 a1 a0 00000001000111 00010111001100 00101011010010 00111101011001 01001101100001 01011011101010 01100111110100 01110001111111 接收端收到每个码组后,先计算出 S1、S2 和 S3,再查表判断错码情况。 例如,若接收码组为,按上述公式计算可得:S1 = 0,S2 = 1,S3 = 1。由于 S1 S2 S3 等于 011,故查表可知在 a3 位有 1 错码。

30、按照上述方法构造的码称为汉明码。表中所列的(7, 4)汉明码的最小码距 d0 = 3。因此,这种码能够纠正 1 个错码或检测 2 个错码。由于码率 k/n = (n - r) /n =1 r/n,故当 n 很大和 r 很小时,码率接近 1。可见,汉明码是一 种高效码。 第三章第三章 VHDL 语言与集成环境语言与集成环境 31 EDA 概念 20 世纪 90 年代,国际上电子和计算机技术较先进的国家,一直在积极探 索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取 得了巨大成功。在电子技术设计领域,可编程逻辑器件(如 CPLD、FPGA)的应 用,已得到广泛的普及,这些器件为

31、数字系统的设计带来了极大的灵活性。这 些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件 的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统 设计方法、 设计过程和设计观念,促进了 EDA 技术的迅速发展。 【4】 EDA 技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语 言 VHDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、 优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编 程下载等工作。EDA 技术的出现,极大地提高了电路设计的效率和可操作性, 减轻了设计者的劳动强度。 利用 EDA 工具,电

32、子设计师可以从概念、算法、协议等开始设计电子系统, 大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设 计出 IC 版图或 PCB 版图的整个过程的计算机上自动处理完成。 现在对 EDA 的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、 化工、矿产、生物、医学、军事等各个领域,都有 EDA 的应用。目前 EDA 技术 已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中, 从设计、性能测试及特性分析直到飞行模拟,都可能涉及到 EDA 技术。 【3】 3.2 Max+pluxII 简介 Max+plus是 Altera 公司提供的 FPGA/CPLD 开

33、发集成环境,Altera 是世 界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被 誉为业界最易用易学的 EDA 软件。在 Max+plus上可以完成设计输入、元件适 配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设 计环境,是设计者能方便地进行设计输入、快速处理和器件编程。 【5】 Max+plus开发系统的特点 1、开放的界面 Max+plus支持与 Cadence,Exemplarlogic,Mentor Graphics,Synplicty, Viewlogic 和其它公司所提供的 EDA 工具接口。 2、与结构无关 Max+plus系统的核

34、心 Complier 支持 Altera 公司的 FLEX10K、FLEX8000、 FLEX6000、MAX9000、MAX7000、MAX5000 和 Classic 可编程逻辑器件,提供了 世界上唯一真正与结构无关的可编程逻辑设计环境。 3、完全集成化 Max+plus的设计输入、处理与较验功能全部集成在统一的开发环境下, 这 样可以加快动态调试、缩短开发周期。 4、丰富的设计库 Max+plus提供丰富的库单元供设计者调用,其中包括 74 系列的全部器件 和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage- Function) 。 5、模块化工具 设

35、计人员可以从各种设计输入、处理和较验选项中进行选择从而使设计环 境 用户化。 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 年底,VH

36、DL 被 IEEE 和 美国国防部确认为标准硬件描述语言。自 IEEE 公布了 VHDL 的标准版本,IEEE- 1076(简称 87 版)之后,各 EDA 公司相继推出了自己的 VHDL 设计环境,或宣布 自己的设计工具可以和 VHDL 接口。此后 VHDL 在电子设计领域得到了广泛的认 可,并逐步取代了原有的非标准的硬件描述语言。1993 年,IEEE 对 VHDL 进行 了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,公布了新版本 的 VHDL,即 IEEE 标准的 1076-1993 版本, (简称 93 版) 。现在,VHDL 和 Verilog 作为 IEEE 的工

37、业标准硬件描述语言,又得到众多 EDA 公司的支持,在 电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪 中,VHDL 与 Verilog 语言将承担起大部分的数字系统设计任务。 【6】 VHDL 语言是一种用于电路设计的高级语言。它在 80 年代的后期出现。最 初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一 种使用范围较小的设计语言 。 VHDL 的英文全写是:VHSIC(Very High Speed Integrated Circuit) Hardware DescriptionLanguage.翻译成中文就是超高速集成电路硬件描述语言。 因此它

38、的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是 用在 FPGA/CPLD/EPLD 的设计中。当然在一些实力较为雄厚的单位,它也被用来 设计 ASIC。 VHDL 主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具 有硬件特征的语句外,VHDL 的语言形式、描述风格以及语法是十分类似于一般 的计算机高级语言。VHDL 的程序结构特点是将一项工程设计,或称设计实体 (可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端 口)和内部(或称不可视部分) ,既涉及实体的内部功能和算法完成部分。在对 一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计

39、就可以 直接调用这个实体。这种将设计实体分成内外部分的概念是 VHDL 系统设计的基 本点。 3.3.2 VHDL 语言设计的特点 与其他硬件描述语言相比,VHDL 具有以下特点: (1)功能强大、设计灵活 VHDL 具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻 辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描 述。VHDL 支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言 所不能比拟的。VHDL 还支持各种设计方法,既支持自底向上的设计,又支持自 顶向下的设计;既支持模块化设计,又支持层次化设计。 (2)支持广泛、易于修改 由于 VHDL 已经

40、成为 IEEE 标准所规范的硬件描述语言,目前大多数 EDA 工 具几乎都支持 VHDL,这为 VHDL 的进一步推广和广泛应用奠定了基础。在硬件 电路设计过程中,主要的设计文件是用 VHDL 编写的源代码,因为 VHDL 易读和 结构化,所以易于修改设计。 (3)强大的系统硬件描述能力 VHDL 具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电 路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三 者混合的混合级描述。另外,VHDL 支持惯性延迟和传输延迟,还可以准确地建 立硬件电路模型。VHDL 支持预定义的和自定义的数据类型,给硬件描述带来较 大的自由度,

41、使设计人员能够方便地创建。 【7】 (4)高层次的系统模型。 独立于器件的设计、与工艺无关设计人员用 VHDL 进行设计时,不需要首先 考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成 后,可以用多种不同的器件结构来实现其功能。 (5)很强的移植能力 VHDL 是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所 支持,使得设计描述的移植成为可能。 (6)易于共享和复用 VHDL 采用基于库(Library)的设计方法,可以建立各种可再次利用的模 块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到 库中,就可以在以后的设计中进行复用,可以使设计成果

42、在设计人员之间进行 交流和共享,减少硬件电路设计。 3.3.3 VHDL 语言优势 (1)与其他的硬件描述语言相比,VHDL 具有更强的行为描述能力,从而 决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开 具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能 查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3)VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计 的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完 成必须有多人甚至多个代发组共同并行工作才

43、能实现。 (4)对于用 VHDL 完成的一个确定的设计,可以利用 EDA 工具进行逻辑综 合和优化,并自动的把 VHDL 描述设计转变成门级网表。 (5)VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构, 也不必管理最终设计实现的目标器件是什么,而进行独立的设计。 【8】 第四章第四章 汉明码编译系统模块设计与实现汉明码编译系统模块设计与实现 41 汉明码编译原理设计 原理图如图 4-1 所示: 图 4-1 原理图 该系统一共有四大模块: (1)16 位序列产生与分组模块 (2)编码模块 (3)加错模块 (4)译码与分组串行 42 系统模块设计 4.2.1 16 位比特序列产生与

44、分组模块 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 管脚实现了分组功能,即每四位分为一组。这样 16 位数据分成了 四组。 【9】 3、用 VHDL 语言

45、实现 首先选择一个计数变量,每当计数一次就输出一个 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; when 1=a(2):=Z;temp:=2; when 2=

46、a(1):=Z;temp:=3; when 3=a(0):=Z;temp:=0;temp1:=temp1+1; dataout16=a(3) 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,前四位为信息位,后三位 为监督位。 2、功能 将四位信息码,根据汉明

47、码原理,加上 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 S(4):=NOT DATAIN(4);DATAOUT S(5):=NOT DATAI

48、N(5);DATAOUT S(6):=NOT DATAIN(6);DATAOUT dataoutbb(0):= not bb(0);nbb(1):= not bb(1);nbb(2):=not bb(2);nbb(3):=not bb(5);nbb(4):=not bb(4);nbb(5):=not bb(5);nbb(6):=not bb(6);n null;n=000; end case; s=n(2) bbb=bb(6) b=bbb; 其中 ss 为校正子,通过查表的形式来确定输入的七位比特是否发生错误, 如果错误了是哪一位发生错误了。由于校正子 ss 与错误位置并不对应,所以引 入一个

49、信号 n,来校正这种对应关系。当 n=001,就表示从右边数第一位发生了 错误。10 然后是将输出的分组进行串行输出: if clr1=1 then m10000) then if temp1s4=bbb(3);temp:=1;m1s4=bbb(2);temp:=2;m1s4=bbb(1);temp:=3;m1s4=bbb(0);temp:=0;m1=s4;temp1:=temp1+1; end case; end if; end if; end if; 与编码原理正好相反,其中变量 temp1 表示数组的个数,变量 temp 表示数 组中第几位。12 第五章第五章 系统仿真、调试和结果分析系

50、统仿真、调试和结果分析 5.1 16 位序列产生与分组模块仿真 5.1.1 仿真图 图 5-1-1 16 位序列产生与分组仿真 5.1.2 结果分析 由图 5-1-1 可知,每经过一个 Clk 时钟,就 ZO 输出一个比特,每经过四个 Clk 时钟,DATAOUT16 就输出四位二进制,即为一个矢量数组。并且每四个数组 为一个循环。 5.2 编码模块仿真 5.2.1 仿真图 图 5-2-1 编码模块仿真 5.2.2 结果分析 由图 5-2-1 可知,每输入四位数据就输出六位输出,输出的六位前四位是 信息位,与输入的数据相同,后三位为监督位,输出结果与经过公式编码输出 的结果一样。 5.3 加错

51、模块 5.3.1 仿真图 图 5-3-1 加错模块仿真 5.3.2 结果分析 为了更好测试该系统的纠错能力,人为的增加一个控制变量 C,如果 C 为 001 则控制输入的第一位(从右边数)发生错误,如果是 010 则是第二位发生 错误,依次类推,但当 C 为 000 时,表示没有发生错误。图 5.3.1 是 C=001, 表示控制第一位发生错误,将 datain 与 dataout 相比,很容易看出 dataout 中 第一位均发生错误,从而实现错位控制的作用。 5.4 译码与分组串行模块仿真 5.4.1 仿真图 图 5-4-1 译码与分组串行模块仿真 5.4.2 结果分析 a 是输入数据,此

52、数据是经过加错处理后的数据,原始数据是,控制第五 位发生错误,输出,即是 a,经过译码输出 b=0110,可见已经将错位纠正,输出 s 指示出纠正了哪一位,正好与控制位相同,输出 m1 是将数组 b 进行串行输出。 由此可知该模块实现指定的功能。 5.5 系统仿真 5.5.1 顶层图 图 5-5-1 顶层图 5.5.2 仿真图 当错位控制 C=001,即使第 1 位(从右边数)发生错误。 图 5-5-2-1 C=001 时的仿真结果 当错位控制 C=010,即使第 2 位(从右边数)发生错误。 图 5-5-2-2 C=010 时的仿真结果 当错位控制 C=011,即使第 3 位(从右边数)发生

53、错误。 图 5-5-2-3 C=011 时的仿真结果 当错位控制 C=100,即使第 4 位(从右边数)发生错误。 图 5-5-2-4 C=100 时的仿真结果 当错位控制 C=101,即使第 5 位(从右边数)发生错误。 图 5-5-2-5 C=101 时的仿真结果 当错位控制 C=110,即使第 6 位(从右边数)发生错误。 图 5-5-2-6 C=110 时的仿真结果 当错位控制 C=111,即使第 7 位(从右边数)发生错误。 图 5-5-2-7 C=111 时的仿真结果 当错位控制 C=000,此时没有发生错误。 图 5-5-2-8 C=000 时的仿真结果 5.5.3 结果分析 以

54、上共有八个仿真图,分别是当错位控制 C 为 001、010、011、100、101、110、111、000,即使第一位、第二位依次发 生错误和没有发生错误这八种情况下的仿真图。可以看出错位控制与译码输出 的错位指示数据相同,说明译码正确,另外从原始数据 sin 与最终输出数据 sout 相比也可以看出。如果从上往下依次看下去,即: sin3.0 aedcod6.0 add1err6.0 Adecod3.0 sout 可以清晰的了解各个模块实现的功能,以及整个系统的功能。 第六章第六章 总结总结 本文阐述了汉明码编译原理及用 VHDL 语言进行实现的方法,并且最后在 EDA 集成开发环境 MAX

55、+plusII 软件中通过了仿真和调试,从仿真图可以清晰地 看出具体的实现流程及各模块的具体的功能。整个系统实现(7,4)汉明码的 编码与译码,并且可以纠正一位错码。当然本系统并非完美的,其缺点是,如 果发生两位错码或更多的错码将无法识别和纠正。可以增加一位组成(8, 4) 汉明码,增加一位可用于奇偶校验,根据(7, 4)汉明码的译码情况与对整个 码进行的奇偶校验可以判断是否发生两位错码。如果使汉明码可以纠正或识别 更多的码,将会使系统可靠性增加,但有效性降低,并且现在的传输带宽并非 无限,所以在可靠性与有效性之间应该根据实际情况折中选择。 参考文献参考文献 1 樊昌信,曹丽娜,通信原理.北京

56、:国防工业出版社. 2007 2 曹雪虹,张宗橙,信息论与编码.北京:清华大学出版社.2009 3 谭会生,张昌凡,EDA 技术及应用.西安:西安电子科技大学出版社.2007 5 褚振勇,翁木云,FPGA 设计用应用M .西安:西安电子科技大学出版社. 2002 6 潘松,王国栋,VHDL 实用教程M .成都:电子科技大学出版社.2000 7 辛春艳,VHDL 硬件描述语言M .北京:国防工业出版社.2002 8 侯伯亨,顾新,VHDL 硬件描述语言与数字逻辑电路设计M .西安:西安电子科技大 学出版社.2004 9 Sun M icro system s.java 2 Platform M

57、icro Edition Technology for Creating Mobile Devices .http:/, May 19, 2000 10 姜丹,信息论与编码.合肥:中国科技技术大学出版社.2009 11 普罗科斯,数字通信.北京:电子工业出版社.2006 12 ShuLin,Daniel J.Costello,Jr,差错控制编码.北京:机械工业出版社.2007 致 谢 毕业设计从开始准备到最后上交前前后后有两个多月,在这两个多月里, 我碰到了许许多多的问题,这些问题虽然给我制造了不少的麻烦,但是也正是 这些问题,让我在解决他们的同时,使自己的能力得到了提高,让自己得到了 锻炼。

58、当然,这些问题的解决,离不开张老师和同学们的帮助。张老师兢兢业 业的工作态度令我尊敬,循循善诱的教学方法令我大受裨益,无论何时,只要 碰到问题,张老师总会非常耐心的帮我解决。我周围的同学们也让我感受到了 集体的温暖,几个同学为在一起热烈的讨论问题,解决问题的氛围,让我无法 不更加努力的学习。在我们一起讨论的同时,也让我们的能力得到了共同的提 高。 大学四年的时光马上就要过去了,每当想起大学里的往事,无论是喜还是 悲,总会感觉自己是幸福的,我要感谢陪我度过这段美好时光的所有的老师、 同学和朋友。在今后的人生道路上,我会牢记老师们的教导和同学们的帮助, 面对困难,要保持冷静,敢于面对,因为我不是一个人。 最后我再一次感谢在大学这四年里曾经帮助过我的人,谢谢! 附录程序:附录程序: (1)SENQ16GEN.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARI

温馨提示

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

评论

0/150

提交评论