基于vhdl语言的汉明码编译码的设计内容摘要:

( 7, 4)汉明码知识介绍 基本概念 线性分组码是一类重要的纠错码,应用很广泛。 在( n, k)分组码中,若监督码元是按线性关系模 2 相加而得到的,则称其为线性分组码。 现在以 (7,4)分组码为例来说明线性分组码的特点。 设其码字为A=[a6, a5, a4, a3, a2, a1, a0],其中前 4 位是信息码元,后 3 位是监督码元,可用下列线性方程组来描述该分组码产生监督元: 显然,这 3 个方程是线性无关的。 根据公式 21 可得 (7,4)码的全部码组,如表 1 所示。 表 21( 7, 4)汉明码的全部码组 111 1111 000 0111 100 1110 011 0110010 1101 101 0101 001 1100 110 0100 001 1011 110 0011 010 1010 101 0010 100 1001 011 0001 111 1000 000 0000 监督位 a2 a1 a0 信息位 a6 a5 a4 a3 监督位 a2 a1 a0 信息位 a6 a5 a4 a3 346035614562aaaaaaaaaaaa (21) 通信原理课程设计 基于 VHDL 语言的( 7, 4)汉明码编译码的设计 第 页 共 30 页 11 根据线性码封闭性,再由 表 1 可知 (7,4)码的最小码距 d0=3,它能纠 1个错或检 测 2个错。 汉 明码是能够纠正单个错误的线性分组码,其特点是:最小码距 d0=3,码长 n 与监督位满足 n=2r1 的关系, 说明 上述的 (7,4)线性分组码就是一个汉明码。 由于码率 k/n = (n r) /n =1 – r/n,故当 n 很大和 r 很小时,码率接近 1。 【 1】 可见,汉明码是一种高效码。 式( 21)所示 (7,4)汉明码的 3 个监督方程改写后可用矩阵形式表示为 简记为 H AT=0T 或 A HT=0 H 称为监督矩阵,只要监督矩 阵 H 给定,编码时信息位和监督位之间的关系就完全确定了。 H 的行数就是监督矩阵的数目,等于监督数目r。 H 序列可分为 2 部分: )(模 20001011001110101011101000123456aaaaaaa通信原理课程设计 基于 VHDL 语言的( 7, 4)汉明码编译码的设计 第 页 共 30 页 12 H AT=0T,可以用来作为判断接收码字 A 是否出错的依据。 把监督方程补充完整并改写为矩阵形式 上式表示,在信息位给定后,用信息位的行矩阵乘矩阵 Q 就产生出监督位。 Q 的左边加上 1 个 k  k 阶单位方阵,就构成 1 个生成矩阵 G。 而且可由 G 和信息组产生对应的全部码组。 在得出的码组中,信息位的位置不变,监督位附加于其后。 其中, Q= PT。 伴随式(校正子) S 设发送码组 A= [an1,an2,„,a1,a0 ], 在传输过程中可能发生误码。 接收码组 B=[ bn1,bn2,„,b1,b0 ],则发送码组和接收码组之差为 错误图样 E: B – A = E (模 2) 令 S = BHT,称为伴随式或校正子。 S = BHT =( A + E) HT = EHT ,用来指示错码的位置。 (7,4)汉明码的伴随式与错误图样的对应关系如表 2 所示。 汉明码 S 与 E 的对应关系  rPIH 001101101011011001110     Q34563456012011101110111aaaaaaaaaaa     G 34560123456 aaaaaaaaaaa通信原理课程设计 基于 VHDL 语言的( 7, 4)汉明码编译码的设计 第 页 共 30 页 13 表 22 汉明码 S与 E的对 应关系 S1 S2 S3 错码位置 S1 S2 S3 错码位置 001 a0 101 a4 010 a1 110 a5 100 a2 111 a6 011 a3 000 无错码 汉明码编码模块 汉明码编码原理 汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。 它属于线性分组码,由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。 在 (n, k)汉明码中, (nk)个附加的监督码元是由信息码元的线性运算产生的。 码长为 n,信息码元长度为 k, 2k个码组构成 n 维线性空间中 的一个 k 维子空间,编码的实质就是要在 n 维空间中,找出一组长为 n 的 k 个线性无关的矢量 g1⋯g k1 ,使得每个码组 a 都可以表示为 k 个矢量的线性组合,即 a=[an1 an2 ⋯ a0]= ak1 g0+ ak2 g1+ ⋯ a0g k1 其中, a i∈ {0, 1}, i=0, 1, ⋯ , k1。 将上式写成矩阵形式得 aa =K 1aK 2. . . .a01g. . . .0gK 1g=a aK 2. . . .aK 1 0 由此, [an1 an2 ⋯ a0]是带编码信息的信息组, G是一个 k*n阶矩阵,G称为 (n,k)汉明码的生成矩阵。 当 G确定 以后,编码的问题也就解决了。 根据监督码元是有信息码元的线性运算产生的关系可知,监督通信原理课程设计 基于 VHDL 语言的( 7, 4)汉明码编译码的设计 第 页 共 30 页 14 码( a0,a1,a2)满足以下关系式: 即可算出三位监督位,再与信息位结合,可得到( 7, 4)汉明码 汉明码编码程序设计流程 汉明码编码设计流程图 图 23 编码设计流程图 输入信息码 a3a2a1a0,输出 (7,4)汉明码 b6b5b4b3b2b1b0。 首先,输入信息码 a3a2a1a0,即使用以下语句: port(a:in std_logic_vector(3 downto 0)。 346035614562aaaaaaaaaaaa通信原理课程设计 基于 VHDL 语言的( 7, 4)汉明码编译码的设计 第 页 共 30 页 15 就可以得到监督位与信息码之间的对应关系,使用异或运算,即: b(2)=a(3) xor a(2) xor a(1)。 b(1)=a(3) xor a(2) xor a(0)。 b(0)=a(3) xor a(1) xor a(0)。 最后,将算好的监督位与原来输入的信息 码一起输出,这样,编码程序就算完成了。 汉明码译码模块 汉明码译码原理 一般来说,若码长为 n,信息位数为 k,则监督位数为 r=nk。 如果希望用 r 个监督位构造出 r 个监督关系式来指示一位错码的 n 种可能位置,则要求 2 r1=n 或 2 r=k+r+1 ( 21) 设( 7, 4)汉明码中, n=7, k=4,为了纠错一位码,由表达式21 可知,要求监督位数 r=3。 用 a6a5 ⋯a0表示要进行译码的码元,用 S S1 和 S0 表示监督关系式的校正子,则 S0、 S1 和 S2 的值与错 码对应关系可以规定如表 23 所示,由表可知,当一位错码的位置在 a a a5 或 a6 时,校正子为 1;否则为 0,可推知, a2, a4, a5或 a6 4 个码元构成偶数监督关系 S2=a6⊕ a5。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。