1、1.2 VHDL简介“VHDL设计”作为信息类专业新开出的一门重要的专业课,相对于传统课程具有内容新、发展快、应用性强等特点。在硬件电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一。第2章 (7,4)汉明码的原理2.1 基本概念线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若督元是按线性关系相加而得到的,则称其为线性分组码。现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为A=a6,a5,a4,a3,a2,a1,a0,其中前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码,产生监督元: a2
2、= a6 + a5 + a4 a1 = a6 + a5+ a3(2.1.1) a0 = a6+ a4 + a3显然,这3个方程是线性无关的。经计算可得(7,4)码的全部码字,如表2-1所示。表2-1 (7,4)码的全部码字序号码字信 息码元监 督 元08119210311412513614715不难看出,上述(7,4)码的最小码距d0=3,它能纠1个错或检2个错。汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距d0=3,码长n与监督位满足n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。2.2 监督矩阵H式(2.1.1)所示(7,4)汉明码的3个监督方程改写后可用矩阵形式表
3、示为a6 a5 1 1 1 0 1 0 0a4 0 1 1 0 1 0 1 0 a3= (2.2.1) 1 0 1 1 0 0 1a2 a1 a0并简记为 HAT=0T 或 AHT=0(2.2.2)H称为监督矩阵,一旦H给定,信息位和监督位之间的关系也就确定了。H矩阵可以分成2部分 1 1 1 01 0 0 H =1 1 0 10 1 0=P Ir(2.2.3) 1 0 1 10 0 1AT=0T,可以用来作为判断接收码字A是否出错的依据。2.3 生成矩阵G把监督方程补充完整并改写为矩阵形式a61 0 0 0a50 1 0 00 0 1 0a30 0 0 1 a5(2.3.1)1 1 1 0a
4、4a1a3a01 0 1 1A = a6 a5 a4 a3 G(2.3.2)其中 1 0 0 01 1 1 0 1 0 01 1 0 G =1 0 1 (2.3.3) 0 0 0 10 1 1G称为生成矩阵,由G和信息组就可以产生全部码字。生成矩阵也可以分成2部分,即 G = IkQ(2.3.4)其中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,称为伴随式
5、或校正子。S = BHT =(A + E)HT= EHT(2.4.2)上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。表2-2(7,4)汉明码S与E的对应关系错误码位ESe6 e5 e4 e3 e2 e1 e0s2s1s0/ 0b0 1b1 1b2b3b4b5b6第3章 (7,4)汉明码编解码器的设计 3.1(7,4)汉明码的编码思路及程序设计 3.1.1 (7,4)汉明码的编码思路 (7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。根据式(2.3.2)A = a6 a5 a4 a3 G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,
6、而生成矩阵G又是已知的,由式(2.3.3)得 (3.1.1)所以,可以得出如下方程组a6 = a6a5 =a5a4 =a3 =(3.1.2)a2 = a6 + a5 + a4a1 = a6 + a5+ a3a0 = a6根据式(3.1.2)就可以编出编码程序了。3.1.2 (7,4)汉明码的编码程序设计 根据(7,4)汉明码的编码原理,首先画出程序设计的流程图:图3.1 编码流程图输入信息码a3a2a1a0,输出(7,4)汉明码b6b5b4b3b2b1b0。首先,输入信息码a3a2a1a0,即使用以下语句:port(a:in std_logic_vector(3 downto 0);然后,根据
7、式(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);c语句即可。改正上述错误,就可以对其进行波形仿真了。4.2.2 (7,4)汉明码的译码程序的仿真分析 建好波形文件,设置好输入(7,4)汉明码a6a5a4a3a2a1a0的初始值,点击,进行波形仿真, 出现如下波形:图4.2(7,4)汉明码的译码仿真波形1由于设置的分别是a0、a1、a2、a3、a4、a5、a6出错,从波形上就可以清楚的看出该程序存在一定的问题,虽然
8、没有语法错误,但存在着逻辑错误。由波形可知:a0出错时的校正子S为100,a1出错时的校正子S为010,a2出错时的校正子S为001,a3出错时的校正子S为110,a4出错时的校正子S为101,a5出错时的校正子S为011,a6出错时的校正子S为111。而根据表2-2可知:a2出错时的校正子S为100,a3出错时的校正子S为011,a4出错时的校正子S为101,a5出错时的校正子S为110,由此可以推断是校正子S的高低位搞错了,仔细查看程序,发现的确是这个问题,改正后,编译仿真的以下波形:图4.3(7,4)汉明码的译码仿真波形2对照表2-2,仔细观察波形,可以确定波形没有问题,这样,(7,4)
9、汉明码的译码程序就完全正确了,译码成功。参考文献 1 辛春艳.VHDL硬件描述语言M.北京:国防工业出版社,20022 侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计M.西安:西安电子科技大学出版社,2002。3 金西VHDL与复杂数字系统设计M西安:西安电子科技大学出版社,2003.体会与建议 为期一周的课程设计就这么结束了,忙碌而又辛劳,但是却让我学到了许多东西,为不久的将来走上工作岗位打下了一定的基础。一开始老师给我们布置了题目(7,4)汉明码的编解码器的设计。拿到题目,我们非常着急,以为这个题目很难,象一只没头的苍蝇,我们开始乱钻,最后,一头扎进了图书馆,借了好几本书。来仔细的翻看了通信原理的书和笔记,对(7,4)汉明码的一些基本概念有了进一步的会议。突然发现
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1