(7,4)汉明码编解码器的设计

上传人:细水****9 文档编号:62810219 上传时间:2022-03-16 格式:DOC 页数:15 大小:186.51KB
收藏 版权申诉 举报 下载
(7,4)汉明码编解码器的设计_第1页
第1页 / 共15页
(7,4)汉明码编解码器的设计_第2页
第2页 / 共15页
(7,4)汉明码编解码器的设计_第3页
第3页 / 共15页
资源描述:

《(7,4)汉明码编解码器的设计》由会员分享,可在线阅读,更多相关《(7,4)汉明码编解码器的设计(15页珍藏版)》请在装配图网上搜索。

1、(7,4)汉明码编解码器的设计序言VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。近几十年来,EDA技术获得了飞速发展。它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。随着EDA技术的深入发展基于硬件描述语言的方法将有取代传统手工设计方法的趋势。EDA ( Elect ronics Design Automation) 技术是随

2、着集成电路和计算机技术飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。目前,VHDL语言已经成为EDA的关键技术之一,VHDL 是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。它属于线性分组码,由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。本文用VHDL语言实现了(7,4)汉明码的编码和译码,并通过实例来说明利用VHDL语言实现数字系统的过程。在介绍(7,

3、4)汉明码编码和译码原理的基础上,设计出了(7,4)汉明码的编码器和译码器,写出了基于VHDL实现的源程序,并通过QUARTUS软件进行仿真验证。第1章 Quartus与VHDL简介1.1 Quartus软件简介Quartus是Altera公司推出的CPLD/FPGA的开发工具,Quartus提供了完全集成且与电路结构无关的开发环境,具有数字逻辑设计的全部特性。?/P Quartus 设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。它是可编程片上系统(SOPC)设计的综合性环境,拥有FPGA 和CPLD设计的所有阶段的解决方案。与其它EDA软件相比较Quartus软件的特点主

4、要包括:1、可利用原理图、结构框图、Verilog HDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件。2、芯片(电路)平面布局连线编辑。3、LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块。4、功能强大的逻辑综合工具。5、完备的电路功能仿真与时序逻辑分析。6、定时/时序分析与关键路径延时分析。7、可使用SignalTap 逻辑分析工具进行嵌入式的逻辑分析。8、支持软件源文件的添加和创建,并将它们链接起来生成编程文件。9、使用组合编译方式可一次完成整体设计流程。10、自动定位编译错误。11、高效的期间编程与验证工具。12、可

5、读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件。13、能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。1.2 VHDL简介“VHDL设计”作为信息类专业新开出的一门重要的专业课,相对于传统课程具有内容新、发展快、应用性强等特点。在硬件电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一。VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。近几十年来,EDA技术获得了飞速发展。它以计算机为平台,根据硬件描述语言

6、VHDL,自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。随着EDA技术的深入发展基于硬件描述语言的方法将有取代传统手工设计方法的趋势。第2章 (7,4)汉明码的原理2.1 基本概念线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若督元是按线性关系相加而得到的,则称其为线性分组码。现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为A=a6,a5,a4,a3,a2,a1,a0,其中前4位是信息元,后3位是监督元,可用下列线性方程组来描述该

7、分组码,产生监督元: a2 = a6 + a5 + a4 a1 = a6 + a5 + a3 (2.1.1) a0 = a6 + a4 + a3显然,这3个方程是线性无关的。经计算可得(7,4)码的全部码字,如表2-1所示。表2-1 (7,4)码的全部码字?/P序号码 字序号码 字信 息码元监 督 元信 息码元监 督 元0000000081000111100010119100110020010101101010010300111101110110014010011012 11000015010110113 11010106011001114 11101007011100015 1111111不

8、难看出,上述(7,4)码的最小码距d0=3,它能纠1个错或检2个错。汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距d0=3,码长n与监督位满足n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。2.2 监督矩阵H式(2.1.1)所示(7,4)汉明码的3个监督方程改写后可用矩阵形式表示为 a6 a5 1 1 1 0 1 0 0 a4 0 1 1 0 1 0 1 0 a3 = 0 (2.2.1) 1 0 1 1 0 0 1 a2 0 a1 a0并简记为 HAT=0T 或 AHT=0 (2.2.2)H称为监督矩阵,一旦H给定,信息位和监督位之间的关系也就确定了。H矩阵可以分成2部

9、分 1 1 1 0 1 0 0 H = 1 1 0 1 0 1 0 =P Ir (2.2.3) 1 0 1 1 0 0 1 HAT=0T,可以用来作为判断接收码字A是否出错的依据。2.3 生成矩阵G把监督方程补充完整并改写为矩阵形式a6 1 0 0 0a5 0 1 0 0a4 0 0 1 0 a6a3= 0 0 0 1 a5 (2.3.1)a2 1 1 1 0 a4a1 1 1 0 1 a3a0 1 0 1 1 A = a6 a5 a4 a3 G (2.3.2)其中 1 0 0 01 1 1 0 1 0 01 1 0 G = 0 0 1 01 0 1 (2.3.3) 0 0 0 10 1 1G

10、称为生成矩阵,由G和信息组就可以产生全部码字。生成矩阵也可以分成2部分,即 G = IkQ (2.3.4)其中 1 1 1 Q =1 1 0= PT (2.3.5) 1 0 1 0 1 12.4 伴随式(校正子)S 设发送码组A= an1,an2,a1,a0 ,在传输过程中可能发生误码。接收码组B= bn1,bn2,b1,b0,收发码组之差定义为错误图样E,即 E = B - A (2.4.1)令S = BHT,称为伴随式或校正子。S = BHT =(A + E)HT= EHT (2.4.2)上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。表2-2(7,4)汉明码S与E的对应关

11、系序号错误码位ESe6 e5 e4 e3 e2 e1 e0s2 s1 s00/0 0 0 0 0 0 00 0 01b00 0 0 0 0 0 10 0 12b10 0 0 0 0 1 00 1 03b20 0 0 0 1 0 01 0 04b30 0 0 1 0 0 00 1 15b40 0 1 0 0 0 01 0 16b50 1 0 0 0 0 01 1 07b61 0 0 0 0 0 01 1 1第3章 (7,4)汉明码编解码器的设计 3.1(7,4)汉明码的编码思路及程序设计 3.1.1 (7,4)汉明码的编码思路 (7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入

12、三位监督位。根据式(2.3.2)A = a6 a5 a4 a3 G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,由式(2.3.3)得 1 0 0 01 1 1 0 1 0 01 1 0 G = 0 0 1 01 0 1 (3.1.1) 0 0 0 10 1 1所以,可以得出如下方程组 a6 = a6 a5 = a5 a4 = a4 a3 = a3 (3.1.2) a2 = a6 + a5 + a4 a1 = a6 + a5 + a3 a0 = a6 + a4 + a3根据式(3.1.2)就可以编出编码程序了。3.1.2 (7,4)汉明码的编码程序设计 根

13、据(7,4)汉明码的编码原理,首先画出程序设计的流程图:图3.1 编码流程图输入信息码a3a2a1a0,输出(7,4)汉明码b6b5b4b3b2b1b0。首先,输入信息码a3a2a1a0,即使用以下语句:port(a:in std_logic_vector(3 downto 0);然后,根据式(3.1.2),就可以得到监督位与信息码之间的对应关系,使用异或运算,即:b(2)=a(3) xor a(2) xor a(1);b(1)=a(3) xor a(2) xor a(0);b(0)bb(0):= not bb(0);cbb(1):= not bb(1);cbb(2):=not bb(2);c

14、bb(3):=not bb(3);cbb(4):=not bb(4);cbb(5):=not bb(5);cbb(6):=not bb(6);c语句即可。改正上述错误,就可以对其进行波形仿真了。4.2.2 (7,4)汉明码的译码程序的仿真分析 建好波形文件,设置好输入(7,4)汉明码a6a5a4a3a2a1a0的初始值,点击,进行波形仿真, 出现如下波形:图4.2(7,4)汉明码的译码仿真波形1由于设置的分别是a0、a1、a2、a3、a4、a5、a6出错,从波形上就可以清楚的看出该程序存在一定的问题,虽然没有语法错误,但存在着逻辑错误。由波形可知:a0出错时的校正子S为100,a1出错时的校正

15、子S为010,a2出错时的校正子S为001,a3出错时的校正子S为110,a4出错时的校正子S为101,a5出错时的校正子S为011,a6出错时的校正子S为111。而根据表2-2可知:a0出错时的校正子S为100,a1出错时的校正子S为010,a2出错时的校正子S为100,a3出错时的校正子S为011,a4出错时的校正子S为101,a5出错时的校正子S为110,a6出错时的校正子S为111。由此可以推断是校正子S的高低位搞错了,仔细查看程序,发现的确是这个问题,改正后,编译仿真的以下波形:图4.3(7,4)汉明码的译码仿真波形2对照表2-2,仔细观察波形,可以确定波形没有问题,这样,(7,4)

16、汉明码的译码程序就完全正确了,译码成功。参考文献 1 辛春艳.VHDL硬件描述语言M.北京:国防工业出版社,20022 侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计M.西安:西安电子科技大学出版社,2002。3 金西VHDL与复杂数字系统设计M西安:西安电子科技大学出版社,2003. 体会与建议 为期一周的课程设计就这么结束了,忙碌而又辛劳,但是却让我学到了许多东西,为不久的将来走上工作岗位打下了一定的基础。一开始老师给我们布置了题目(7,4)汉明码的编解码器的设计。拿到题目,我们非常着急,以为这个题目很难,象一只没头的苍蝇,我们开始乱钻,最后,一头扎进了图书馆,借了好几本书。来仔细的

17、翻看了通信原理的书和笔记,对(7,4)汉明码的一些基本概念有了进一步的会议。突然发现这个课题其实一点也不难,一点技术含量都没有,似乎一个人也可以完成的。仔细阅读了(7,4)汉明码的原理以后,我就开始构思程序的编写,准备画流程图。其实编译码的思路非常清晰,流程图很快就画好了。接下来就是程序的编写,由于好久没有使用VHDL语言,有好多语句都遗忘了,于是翻出以前EDA的书和笔记,认真的看了几遍,对一些语句的用法和使用时的注意事项有了一个大概的了解。然后就开始编程序。编码程序比较简单,只有十几行,仅半个小时,编码程序就编好了,并且运行正确了,是心里就踏实了很多。接下来的译码程序也比较简单,半小时就编好

18、了程序,但是却遇到了一个问题编译没有错误,但是仿真波形却不对,很郁闷,很疑惑,找了半天也没有发现问题。后来仔细的观察了仿真波形,才发现问题所在校正子的高低位弄错了。一周的课程设计结束了,让我收益颇丰。通过这次的课程设计,我对VHDL语言有了新的认识,掌握了用VHDL语言编程的方法,并且能够熟练的运用它去编写各种各样的程序,它为以后能够从事这方面的工作提供了一定的基础。在掌握VHDL语言的基础上,进一步理解了(7,4)汉明码的编解码原理以及一些重要的公式。最后,我想提一点建议,希望老师以后可以尽可能的让我们一人一组。题目虽然有些难度,但是可以更好的锻炼自己,充分发挥个人潜能,同时也杜绝了一些同学

19、光看别人做,等着别人的成果,到时再熟悉程序就可以蒙混过关的现象。附录 (7,4)汉明码的编码程序:library ieee;use ieee.std_logic_1164.all;entity bm isport(a:in std_logic_vector(3 downto 0); but std_logic_vector(6 downto 0);end ;architecture one of bm isbeginb(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) 000 thencase ss iswhen 001 =bb(0):= not bb(0);cbb(1):= not bb(1);cbb(2):=not bb(2);cbb(3):=not bb(3);cbb(4):=not bb(4);cbb(5):=not bb(5);cbb(6):=not bb(6);c null;c=111;end case;else b= a(6)&a(5)&a(4)&a(3);end if;s=ss;b=bb(6)&bb(5)&bb(4)&bb(3);end process;end;

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