通信原理课程设计报告以及CPLD汉明码编译

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档