基于VHDL语言的汉明码编译器设计

基于VHDL语言的汉明码编译器设计

ID:38711496

大小:159.34 KB

页数:8页

时间:2019-06-18

基于VHDL语言的汉明码编译器设计_第1页
基于VHDL语言的汉明码编译器设计_第2页
基于VHDL语言的汉明码编译器设计_第3页
基于VHDL语言的汉明码编译器设计_第4页
基于VHDL语言的汉明码编译器设计_第5页
资源描述:

《基于VHDL语言的汉明码编译器设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于VHDL语言的(7,4)汉明码编译码的设计1、设计目的熟悉掌握汉明码的重要公式和基本概念。进一步掌握(7,4)汉明码的编码和译码的原理和设计步骤。学会应用流程图来表示设计实体的具体运行步骤。掌握运用VHDL语言对(7,4)汉明码的编译码的设计。2、设计要求通过应用硬件描述语言VHDL,编写出(7,4)汉明码的编码和译码的程序,并对编译码程序进行编译和仿真分析,计算出信号误码率和汉明码的编码效率。通过运用相关工具画出(7,4)汉明码的编译码流程图和仿真图,并对相关结果进行分析,得出结论。3、设计步骤3.1(7,4)汉明码的编码原理和程序设计汉明码是在原编码的基础

2、上附加一部分代码,使其满足纠错码的条件。它属于线性分组码,由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。在(n,k)汉明码中,(n-k)个附加的监督码元是由信息码元的线性运算产生的。码长为n,信息码元长度为k,2k个码组构成n维线性空间中的一个k维子空间,编码的实质就是要在n维空间中,找出一组长为n的k个线性无关的矢量,使得每个码组a都可以表示为k个矢量的线性组合,其中,ai∈{0,1},i=0,1,…,k-1。由此,[an-1an-2…a0]是带编码信息的信息组,G是一个k*n阶矩阵,G称为(n,k)汉明码的生成矩阵。当G确定以后,编码的问题也就解决

3、了。根据监督码元是有信息码元的线性运算产生的关系可知,监督码(a0,a1,a2)满足以下关系式:……(3.1.1)即可算出三位监督位,再与信息位结合,可得到(7,4)汉明码。然后根据(7,4)汉明码的编码编码原理,画出程序设计的流程图:图3.1.1编码流程图然后根据流程图进行编写程序。首先,输入信息码a6a5a4a3,即使用语句:port(a:instd_logic_vector(6downto3)就可以得到监督位与信息码之间的对应关系,使用异或运算,即:a(2)<=a(6)xora(5)xora(4);……(3.1.2)a(1)<=a(6)xora(5)xora

4、(3);……(3.1.3)a(0)<=a(6)xora(4)xora(3);……(3.1.4)最后,将算好的监督位与原来输入的信息码一起输出,这样,编码程序就完成。3.2(7,4)汉明码的译码原理和程序设计若码长为n,信息位数为k,则监督位数为r=n-k。如果希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求2r-1>=n或2r>=k+r+1。(7,4)汉明码中,n=7,k=4,为了纠错一位码。用a6、a5、a4、a3、a2、a1、a0表示要进行译码的码元,用S2、S1和S0表示监督关系式的校正子,则S0、S1和S2的值与错码对应关系可以规定

5、如表1.1所示,由表可知,当一位错码的位置在a2、a4、a5或a6时,校正子为1;否则为0,可推知,a2、a4、a5或a6,4个码元构成偶数监督关系:S2=a2xora6xora5xora4……(3.2.1)S1=a1xora6xora5xora3……(3.2.2)S0=a0xora6xora4xora3……(3.2.3)接收到每个码组之后,先按照式以上三个等式计算出S2,S1,S0,再按照表1.1判断错码情况。例如接收码组为0000011,可计算出S1=0,S2=1,S3=1。由于S1S2S3=011,可知a3位出错,只需对其取反即可。表3.2.1(7,4)码校

6、正子与错误图样的对应关系图序号错误码位ESe6e5e4e3e2e1e0S0 S1 S201234567无错码a0a1a2a3a4a5a60  0  0  0  0  0  00  0  0  0  0  0  10  0  0  0  0  1  00  0  0  0  1  0  00  0  0  1  0  0  00  0  1  0  0  0  00  1  0  0  0  0  01  0  0  0  0  0  00  0  00  0  10  1  01  0  00  1  11  0  11  1  01  1  1然后根据(7,4)

7、汉明码的译码原理,画出 程序设计的流程图: 图3.2.1译码流程图然后根据流程图编写编码程序。首先,输入7位汉明码a6a5a4a3a2a1a0,用语句来:port(a:instd_logic_vector(6downto0)来实现。然后,根据这7位码a6a5a4a3a2a1,计算校正子s1s2s3的值,可知校正子S与(7,4)汉明码各位之间的关系,即其编写的程序为:S2:=a6xora5xora4xora2;S1:=a6xora5xora3xora1;S0:=a6xora4xora3xora0;然后,要判定校正子与0的关系,使用if语句,若等于0,则表示没有错误;

8、若不为0,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。