通信原理设计报告74汉明码的编解码设计.docx
《通信原理设计报告74汉明码的编解码设计.docx》由会员分享,可在线阅读,更多相关《通信原理设计报告74汉明码的编解码设计.docx(7页珍藏版)》请在冰豆网上搜索。
通信原理设计报告74汉明码的编解码设计
通信原理设计报告(7,4)汉明码的编解码设计
通信系统课程设计报告
目录
前言...............................................................1第1章设计要求..................................................3第2章QuartusⅡ软件介绍.......................................4第3章汉明码的构造原理........................................6
汉明码的构造原理...........................................6监督矩阵H与生成矩阵G..........................................7校正子...............................................8
第4章汉明码编码器的设计...............................10
汉明码的编码原理及方法....................................10汉明码编码程序的设计......................................10汉明码编码程序的编译及仿真................................11
第5章汉明码译码器的设计.............................12
汉明码的译码方法.........................................12汉明码译码程序的设计....................................13汉明码译码程序的编译及仿真..............................15
第6章汉明码编译码器的设计..........................17
汉明码编译码器的设计...................................17
通信系统课程设计报告
第3章汉明码的构造原理
汉明码的构造原理
线性分组码是一类重要的纠错码,应用很广泛。
在分组码中,若
监督码元是按线性关系模2相加而得到的,则称其为线性分组码。
现在以(7,4)分组码为例来说明线性分组码的特点。
设其码字为A=[a6。
a5,a4,a3,a2,a1,a0],前
4位是信息元,后3位是监督元,可用下列线性方程组
来描述该分组码产生监督元:
a2a6a5a4
a6a5a3a1
a6a4a30a
显然,这3个方程是线性无关的。
代入上述公式可得(7,4)码的全部码组。
如表1所示。
表1汉明码的全部码组
信息位a6a5a4a300000001001000110100010101100111监督位a2a1a0000011101110110101011000信息位a6a5a4a310001001101010111100110111101111监督位a2a1a0111100010001001010100111第6页共22页
通信系统课程设计报告
上表可知:
汉明码的最小码距d0=3,它能纠1位错或检2位错。
此可见,汉明码是能够纠正单个错误的线性分组码,其特点是:
最小码距d0=3,码长n与监督位r满足关系式:
2r1n,说明上述所说的线性分组码就是汉明码。
同时,于码率kn(nr)n1rn,故当n很大和r很小时,码率接近1,可见:
汉明码是一种高效码。
监督矩阵H和生成矩阵G●监督矩阵H
式所示的汉明码的监督方程可以改写为:
a6a5a4a20
a6a5a3a10
a6a4a3a00用矩阵的形式可以将上式表示为:
并简记为:
HAT0T或HTA0
其中,H成为监督矩阵,只要H给定,信息位和监督位的关系也就随即确定下来了。
H的行数就是监督矩阵的数目,等于监督数目r。
H序列可分为两部分:
1110100H1101010PIr1011001
第7页共22页
通信系统课程设计报告
其中P为rk阶矩阵,Ir为rr阶单位阵。
因为HTA0,所以可以用这个关系式来作为判断接收码字A是否出错的依据。
若HTA0,则说明码字A有错,反之则说明码字A无错。
●生成矩阵G
若将的监督方程补充完整并写成矩阵的形式:
即:
A=G·[a6a5a4a3]=G·M上式中
1000....1110100....110 G=0010....1010001....011G成为生成矩阵,根据式知:
G和信息码就能产生所有码字。
生成矩阵也可分为两部分,即
G=Ik,Q
上式中
111110 Q=PT
101011a 第8页共22页
Q为kr阶矩阵,Ik为k阶单位阵。
校正子S
通信系统课程设计报告
设一发送码组A=[an1,an2,...a1,a0],在传输的过程中可能发生误码。
接受码组B=[bn1,bn2,...,b1,b0],收发码组之差定义为错误图样E。
E=B-A (式)
其中,E=[en1,en2,...,e1,e0],令S=BHT,称为校正子。
SBHT(AE)HTEHT (式)可见:
校正子S与错误图样E之间确定的线性变换关系。
汉明码的校正子和错误图样之间的对应关系如表2所示。
表2(7,4)汉明码S与E对应关系
错误码位b0错误图样Ee6e5校正子Se4e3e2e1e0S2S1S0001010100011101110111000错误位置C0123456700000010000010000010000010000010000010000010000000000000b1b2b3b4b5b6无错上表可知:
当S=001时,则出错在0位,即b0出错;当S=010时,则出错在1位,即b1出错;当S=100时,则出错在2位,即b2出错;当S=011时,则出错在3位,即b3出错;当S=101时,则出错在4位,即b4出错;
第9页共22页
通信系统课程设计报告
当S=110时,则出错在5位,即b5出错;当S=111时,则出错在6位,即b6出错;当S=000时,则无错。
第4章汉明码编码器的设计
汉明码编码方法
(7,4)汉明码的编码就是将输入的4位信息码M=[a6a5a4a3]加上3位监督码b2b1b0从而编成7位汉明码[a6a5,a4,a3,a2,a1,a0],编码输出B=[a6a5a4a3a2
a1a0].式A=M·G=[a6a5a4a3]·G可知,信息码M与生成矩阵G的乘积就
是编好以后的(7,4)汉明码。
汉明码编码程序设计
根据(7,4)汉明码的编码原理,于输入的是4位的信息码M=[a3a2a1a0],输出的是7位的(7,4)汉明码B=[a6a5,a4,a3,a2,a1,a0]。
所以定义4位输入信息码a3a2a1a0的语句为:
port(datain:
instd_logic_vector(3downto0);编码输出的语句为:
port(b:
outstd_logic_vector(6downto0);
再根据(式),即可得到监督位与信息码之间的对应关系,编码输出的表示语句可写成如下形式:
b
(2)
第11页共22页
通信系统课程设计报告
从上图的波形中可以看出,datain输入4位信息码0000~1111,分别对应编码输出为b,输出了对应的7位汉明码,对照表1汉明码全部码字,可见本次汉明码编码的正确性。
第5章汉明码的译码器的设计
汉明码译码方法
(7,4)汉明码的译码器的功能就是把输入的7位汉明码B=[b6b5b4b3b2b1b0]译为4位信息码a3a2a1a0,并且根据伴随矩阵S从而纠正编码中可能出现的1位错码。
根据监督矩阵H和生成矩阵G的关系,即:
H=[PIr],其中Ir是33的单位阵,G=[IkQ],其中Ik是44的单位阵。
PQT 生成矩阵
1000....1110100....110 G=0010....1010001....0111110=I,Q 式,得P=1101k1011监督矩阵
1110H11011011100010PIr001式知SBHT(AE)HTEHT,其中E=[en1,en2,...,e1,e0]从而即可得到校正子S与汉明码各位之间的关系:
S2a6a5a4a2S1a6a5a3a1
S0a6a4a3a0
第12页共22页
通信系统课程设计报告
算出校正子S后,对照表2,即可判断出哪位出错,并纠正出错的那位,从而输出正确的码字。
汉明码译码程序的设计
根据前面分析的译码原理,于译码器的输入为7位汉明码:
B=[b6b5b4b3b2b1b0]
输出是4位信息码:
a3a2a1a0,并且同时输出校正子S与错误的码位C。
可得:
译码器的7为汉明码输入语句:
port(b:
instd_logic_vector(6downto0);译码器的信息码输出语句:
port(a:
outstd_logic_vector(3downto0);译码器的校正子输出语句:
port(s:
outstd_logic_vector(2downto0);译码器的错码位置输出语句:
port(c:
outstd_logic_vector(2downto0);译码器的校正子S与(7,4)汉明码各位之间的关系语句:
sss
(2):
=b(6)XORb(5)XORb(4)XORb
(2);sss
(1):
=b(6)XORb(5)XORb(3)XORb
(1);sss(0):
=b(6)XORb(4)XORb(3)XORb(0);
判定校正子S与0的关系,可以使用if语句。
如果S为0,则表示没有错误;如果S不为0,则表示有一位出错。
然后根据表2可以得到校正子S与错误图样E之间的关系,再使用case语句,编写如下程序:
when\when\when\when\when\when\when\
在上述程序中,bb、sss是设置的变量。
bb存放的是译码器的7位汉明码输入
b6b5b4b3b2b1b0。
当
S=\,时,表示b0出错,则只要将这一位的值取反,然后
再送给b0输出,就可以纠正错码了。
b1b2b3b4b5b6的纠错原理同b0。
第13页共22页
通信系统课程设计报告
程序最后的译码输出表示为:
a\casessis--纠1位错码
when\
第21页共22页
通信系统课程设计报告
when\when\when\when\when\when\whenothers=>null;endcase;
elseb<=a(6)&a(5)&a(4)&a(3); n<=\endif;s<=ss;
bbb<=bb(6)&bb(5)&bb(4)&bb(3);b<=bbb;endprocess;end;
第22页共22页
通信系统课程设计报告
目录
前言...............................................................1第1章设计要求..................................................3第2章QuartusⅡ软件介绍.......................................4第3章汉明码的构造原理........................................6
汉明码的构造原理...........................................6监督矩阵H与生成矩阵G..........................................7校正子...............................................8
第4章汉明码编码器的设计...............................10
汉明码的编码原理及方法....................................10汉明码编码程序的设计......................................10汉明码编码程序的编译及仿真................................11
第5章汉明码译码器的设计.............................12
汉明码的译码方法.........................................12汉明码译码程序的设计....................................13汉明码译码程序的编译及仿真..............................15
第6章汉明码编译码器的设计..........................17
汉明码编译码器的设计...................................17