通信原理课程设计报告以及CPLD汉明码编译
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
课程名称通信原理课程设计
系别:
专业班级:
学号:
姓名:
课程题目:汉明码编译码CPLD实现
完成日期:
指导老师:
附件:
汉明码编译码CPLD 实现
摘要:通过利用CPLD实现对汉明码进行编译。利用ALTERA公司的FLEX10K系列芯片设计和实现了汉明码的编译码,详细地阐述了设计的方法和实现的过程。首先进行电路设计,然后在MAX+PLUSII编辑环境下,采用自顶向下的层次设计方法,以及VHDL文本输入的输入方法编制程序,经编译正确后进行波形仿真,经过仿真、调试,验证了功能和时序正确性后,将编辑的程序烧写到CPLD。
关键词:CPLD 汉明码编译MAX+PLUSII
正文
一.汉明码理论:
汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。
汉明码的编译码原理:汉明码的编码是对信源端发出的原始码字上加入一些监督码,得到新的码字,这的码字增加了信息的冗余,但保证了传输的质量,设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,使信息码元与监督码元通过线性方程式联系起来,可用下列线性方程组来描述该分组码,产生监督元:发送端计算监督位 a n = a n-1 ⊕a n-2⊕…. ⊕a 0=0 ,接收端解码计算S = a n-1 ⊕a n-2 ⊕…. ⊕a n-2⊕a0 ,校正子S =0则无错、S=1则有错,该式为监督关系式;S称为校正子。由于校正子S只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。一般来说,若码长为n,信息位数为k,则监督位数r=n-k。用r个监督位构造出r个监督关系式来指示1位错码的n种可能位置,则2r -1 ≥ n 即2r ≥ k+r+1满足此汉明不定式。(7, 4)汉明码,为了纠正1位错码,由上式可知,要求监督位数r≥ 3。若r = 3,则n = k + r = 7。我们用a6 a5⋯a0表示这7个码元,用S1、S2和S3表示3个监督关系式中的校正子,则S1、S2和S3的值与错码位置的对应关系可以规定
如下:
表格一:
S2= a6 ⊕a5 ⊕a3 ⊕a1
S3 = a6⊕a4 ⊕a3 ⊕a0
错码位置a0 a1 a2 a3 a4 a5 a6 无错码
仅当一位错码的位置在a2 、a4、a5或a6时,校正子S1为1;否则S1为零。这就意味
着a2 、a4、a5和a6四个码元构成偶数监督关系;同理,a1、a3、a5和a6构成偶数监督关
系;以及a0、a3、a4和a6构成偶数监督关系。
在发送端编码时,信息位a6、a5、a4和a3的值决定于输入信号,因此它们是随机的。监
督位a2、a1和a0应根据信息位的取值按监督关系来确定,即监督位应使上3式中S1、S2和
S3的值为0(表示编成的码组中应无错码):
a6 ⊕ a5⊕ a4⊕a2=0 a2=a6⊕ a5⊕ a4
a6 ⊕a5 ⊕a3 ⊕a1=0 移项运算,解出监督位a1= a6 ⊕a5 ⊕a3
a6⊕a4 ⊕a3 ⊕a0=0 a0= a6⊕a4 ⊕a3
根据上面三个表达式,可以得到16个许用码组如下表
许用码组表
表格二:
(7,4)码的三个监督方程式可以重新改写为如下形式:
可以用矩阵形式来表示:
记作:或,其中
通常H称为监督矩阵,A称为信道编码得到的码字。在这个例子中H为r×n阶矩阵,P为r×k 阶矩阵,Ir为r×r(3x3)阶单位矩阵,具有这种特性的H矩阵称为典型监督矩阵,这是一种较为简单的信道编译码方式。典型形式的监督矩阵各行是线性无关的。
接收端收到每个码组后,先计算出S1、S2和S3,再查表判断错码情况。例如,若接收码组为0000011,按上述公式计算可得:S1 = 0,S2 = 1,S3 = 1。由于S1 S2 S3 等于011,故查表可知在a3位有1错码。
按照上述方法构造的码称为汉明码。表中所列的(7, 4)汉明码的最小码距d0 = 3。因此,这种码能够纠正1个错码或检测2个错码。由于码率k/n = (n - r) /n =1 –r/n,故当n很大和r很小时,码率接近1。可见,汉明码是一种高效码。
二.软件部分:
1、(7,4)汉明码的编码、程序流程图
汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。因为A = [a6 a5 a4 a3] ·G,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,可得
1 0 0 0 1 1 1
0 1 0 0 1 1 0
G =0 0 1 0 1 0
1
0 0 0 10 1 1
所以,可以得出如下方程组
a6 = a6
a5 =a5
a4 =a4
a3
=a3(方程组2)
a2 = a6 + a5 + a4
a1 = a6 + a5+ a3
a0 = a6+ a4 + a3
根据上式就可以完成设计编码程序。
编码流程图如下图:
(7,4)汉明码的编码仿真图
2、(7,4)汉明码的译码、程序流程图及仿真
(7,4)汉明码的译码思路:
(7,4)汉明码的译码就是将输入的七位汉明码翻译成四位的信息码,并且纠正其中可能出现的一
个错误。
由于生成矩阵G是已知的,由G = [I k Q] ,(其中Ik是4x4阶单位阵)可以得到矩阵Q的值
1 1 1
Q = 1 1 0=
P T(3.2.1)
1 0 1
0 1 1