西安工业大学现代通信原理实验课程设计报告题目:(7,4)汉明码编译码系统CPLD实现系(部):专业:班级:姓名:学号:年月日课程设计目的通过本课程设计巩固并扩展通信原理课程的基本概念、基本理论、分析方法和实现方法。结合EDA技术、数字通信技术和微电子技术,学习现代数字通信系统的建模和设计方法,使学生能有效地将理论和实际紧密结合,培养创新思维和设计能力,增强软件编程实现能力和解决实际问题的能力。课程设计要求⑴熟悉数字电路设计的一般方法,熟练地运用通信理论,进行数字基带信号、数字信号频带传输系统设计,掌握对数字基带信号的处理方法,并进行通信系统建模。⑵熟悉和掌握MAXPLUSⅡ软件的使用,按设计要求进行建模;⑶设计完成后,按学校“课程设计工作规范”中的“统一书写格式”,撰写课程设计报告一份,包括:设计题目、设计要求、逻辑分析、设计总体电路、模块设计、模块程序(含对程序的说明)、仿真波形、实验结果分析、心得体会(不少于500字)、参考文献(不少于5篇)。课程设计注意事项⑴接通电源前确保电源插座接地良好,观察设备仪器有无异常现象,正常方可实验。⑵课程设计时要集中注意力遵守操作规则,遵守一切安全措施,验安全认真操作仔细观察,积极思考,认真设计程序并仔细调试修改程序。⑶实验结果与设计不相符仔细检查,翻阅指导书或者教材,如有不懂请教老师,不要盲目改动修改程序。课程设计内容采用新型数字系统设计的方法实现(7,4)循环码。循环码是差错控制编码中最主要、最常用的一种。它有很强的纠错能力,所以普遍应用于各种实际的差错控制系统。要求用CPLD实现(7,4)循环码编码解码的方法,可以采用原理图或VHDL编程输入的方式。课程设计简要操作步骤⑴简要介绍线性分组码、循环码的基本原理的基础。⑵分析CPLD实现(7,4)循环码编码解码的算法,建立模型,写出流程图。⑶原理图输入或用VHDL语言编写的程序。⑷进行编译,并进行仿真。分析仿真波形,检查所实现的编码器是否正确。⑸进行引脚定义。⑹进行并口下载电缆的配置。⑺检查无误后,生成下载文件,并进行可编程器件的烧写。⑻硬件验证功能是否实现。⑼撰写课程设计报告。课程设计心得体会通过本次课程设计,让我全面系统地掌握了通信原理了基本知识。运用通信原理知识去分析和解决具体问题,使得所学知识得到了进一步巩固、深化和发展。通过结合课本的知识去完成课程设计也让我明白了理论与实践的相结合的重要性。虽然在设计的过程中遇到了各种各样的问题,但通过老师的指导同学的帮助和查阅大量课程设计指导书,让我得以将课程设计顺利完成。总结了课程设计中的错误,提高了自己在实验过程中的效率和准确性。并在本次课程设计中,进一步加深了自己对通信原理的认识和了解。课程设计评语及成绩评语成绩指导教师(签名)2010年7月日附件:(7,4)汉明码编译码CPLD实现摘要:采用新型数字系统设计的方法实现(7,4)循环码。循环码是差错控制编码中最主要、最常用的一种。它有很强的纠错能力,所以普遍应用于各种实际的差错控制系统。要求用CPLD实现(7,4)循环码编码解码的方法,可以采用原理图或VHDL编程输入的方式。1、差错控制编码概述以及汉明码主要应用领域数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。由于乘性干扰引起的码间串扰,可以采用均衡的办法来纠正。而加性干扰的影响则需要用其他办法解决。在设计数字通信系统时,应该首先从合理选择调制制度,解调方法以及发送功率等方面考虑,使加性干扰不足以影响到误码率要求。在仍不能满足要求时,就要考虑采用差错控制措施了。从差错控制角度看,按加性干扰引起的错码分布规律不同,信道可以分为3类,即随机信道,突发信道和混合信道。在随机信道中,错码的出现是随机的,而且错码之间是统计独立的。在突发信道中,错码是成串集中出现的,而且在短促的时间段之间存在较长的无错码区间。把既存在随机错码又存在突发错码的的信道称为混合信道。对于不同类型的信道,应该采用不同的差错控制技术。1.1纠错编码原理我们把信息码分组,为每组信息码附加若干监督码的编码称为分组码(blockcode).在分组码中,监督码元仅监督本码组中的信息码元。分组码一般用符号(n,k)表示,其中n是码组的总位数,又称为码组的长度(码长),k是码组中信息码元的数目,n-k=r为码组中的监督码元的数目,或者称为监督位数目,分组码的结构如图2示,图中前k位为信息位,后面附加r个监督位。其中an-1到ar为k个信息位,ar-1到a0为r个监督位。an-1an-2………arar-1………ao图4分组码的结构在分组码中,把码组中“1”的个数称为码组的重量,简称码重。把两个码组中对应位上数字不同的位数称为码组的距离,简称为码距,码距又称为汉明距离。我们把某种编码中各个码组之间距离的最小值称为最小码距(d0)。一种编码的最小距离的大小直接关系着这种编码的检错与纠错能力:1.1.1为检测e个错码,要求最小码距d0大于等于e+1;1.1.2为了纠正t个错码,要求最小码距d0大于等于2t+1;1.1.3为纠正t个错码同时检测e个错码,要求最小码距d0大于等于e+t+1(et).1.1.3.1汉明码主要应用领域有以下三点:1.1.3.2钢丝绳张力检测系统随着现代通信技术和计算机技术的高速发展,无线数字通信的应用越来越广泛.钢丝绳张力检测系统将数字无线通信、测量和计算机技术结合在一起,其功能是将电梯、缆车或提升机钢丝绳张力检测信息转换成数字信号,通过无线方式传送给控制中心,由控制中心对原始数据进行处理、分析和计算,输出人们想要的结果,做出相应的判断与控制。因此,钢丝绳张力的检测系统对使用钢丝绳的提升设备的安全运行起着至关重要的作用。1.22数字存储系统随着PC机的日益普及,存储对象的日渐多元化,用户对存储需求不断升级,如何保证数据稳定、高速传输?RAID(”RedundantArrayofIndependentDisk”)独立冗余磁盘阵列解决了这个难题,并且成为目前存储的主流技术。RAID之所以实现数据高速、可靠的传输,一个关键的核心技术就是应用了一定的差错控制编码技术。在RAID众多系列中最复杂的RAID2中就采用了”汉明码(HammingCode)差错控制编码技术”,它在数据存储及移动过程中进行差错控制,对传输过程中出现的差错自动进行纠正,保证了数据传输的安全可靠性。1.1.3.3保密通信技术随着计算机网络的发展及应用的普及,特别是在军事指挥,情报系统,银行系统的应用,通信的可靠性及保密性要求越来越高,这就要求研制新的高可靠性及保密性通信技术。接收端不仅能从接收到的信息中检测出传输过程中的错误而且能纠正之。针对IBM-PC微计算机之间通信过程中的纠错技术提出了一种在通信计算机之间不增加任何硬件设备的情况下,仅用编写一段纠错编码(发送端)和纠错译码(接收端)的软件方法达到计算机通信纠错和保密的目的,即利用汉明码编码实现检错、纠错的具体方案,这样做的优点是:在保持一定功能和相应速度的前提下,采用软件方法,不仅可以提高通信过程的可靠性,而且还可以提高通信系统本身的可靠性。2、汉明码、汉明码编译码及其原理介绍2.1汉明码的定义:若一致监督矩阵H的列是由不全为0且互不相同的所有二进制m(m≥2的正整数)重组成,则由此H矩阵得到的线性分组码称为[2m-1,2m-1-m,3]汉明码。2.2汉明码的构造特点:2.2.1绐定一个m,我们由二进制m重组成线性分组码的监督矩阵H,由二进制m重来标定一个发生错误的位置。由此可知,二进制m重共有2种位组合,去掉一个全为0的位组合,则余下共有2m-1种位组合。故汉明码的最大码长n=2m-1。2.2.2由上面分析,我们可以知道:m即是汉明码监督位的位数。故一个汉明码中,信息位的位数k=n—m=2m-1-m2.2.3汉明码的距离为3,因此可以纠正1位错误,检出2位错误。2.3汉明码编码:Hamming码中文称作汉明码。汉明码是由汉明于1950年提出的,具有纠正一位错误能力的线性分组码它的突出特点是:编译码电路简单,易于硬件实现;用软件实现编译码算法时,软件效率高;而且性能比较好.2.3.1汉明码编码的主要算法:汉明码的编码就是如何根据信息位数k,求出纠正一个错误的监督矩阵H,然后根据H求出信息位所对应的码字。构造汉明码监督矩阵H的方法很多,这里仅介绍一种。a.根据已知的信息位数k,从汉明不等式中求出校验位数m=n-k;b.在每个码字C:(C1,C2,⋯,C2m-1)中,用c02,c12,cn-12作为监督位,剩下的位作为信息位;c.用二进制数字表示2m-1列,得到2m-1列和m行监督矩阵H;d.用3步的H形成HCT=0,从而得出m个监督方程;e.将已知的信息代入方程组,然后求出满足上述方程组的监督位c(i=0,1,⋯,m一1)。例如,用以上方法,很容易求出[7,4,3]汉明码的监督矩阵:1110100H=11010101011001及编码所对应的码字为C=011001。2.4(7,4)汉明码的编码原理2.4.1基本构造对于码组长度为n、信息码元为k位、监督码元为r=n-k位的分组码,常记作(n,k)码,如果满足2r-1≥n,则有可能构造出纠正一位或一位以上错误的线性码。下面我们通过(7,4)汉明码的例子来说明如何具体构造这种码。设分组码(n,k)中,k=4,为能纠正一位误码,要求r≥3。现取r=3,则n=k+r=7。我们用a0ala2a3a4a5a6表示这7个码元,用S1、S2、S3表示由三个监督方程式计算得到的校正子,并假设三位S1、S2、S3校正子码组与误码位置的对应关系如表1所示。S1S2S3错码位置S1S2S3错码位置001a0101a4010al110a5100a2111a6011a3000无错码表1校正子和错码位置关系由表可知,当误码位置在a2、a4、a5、a6时,校正子S1=1;否则S1=0。因此有S1=a6⊕a5⊕a4⊕a2,同理有S2=a6⊕a5⊕a3⊕a1和S3=a6⊕a4⊕a3⊕a0。在编码时a6、a5、a4、a3为信息码元,a2、a1、a0为监督码元。则监督码元可由以下监督方程唯一确定a6⊕a5⊕a4⊕a2=0a6⊕a5⊕a3⊕a1=0(1.1.1)a6⊕a4⊕a3⊕a0=0也即a2=a6⊕a5⊕a4a1=a6⊕a5⊕a3(1.1.2)a0=a6⊕a4⊕a3由上面方程可得到表2所示的16个许用码组。在接收端收到每个码组后,计算出S1、S2、S3,如果不全为0,则表示存在错误,可以由表1确定错误位置并予以纠正。举个例子,假设收到码组为0000011,可算出S1S2S3=011,由表1可知在a3上有一误码。通过观察可以看出,上述(7,2.4.2码的最小码距为dmin=3,纠正一个误码或检测两个误码。如果超出纠错能力则反而会因“乱纠”出现新的误码信息位监督位信息位监督位a6a5a4a3a2a1a0a6a5a4a3a2a1a0表2(7,4)汉明码的许用码组2.4.3监督矩阵上面有提到过,线性码是指信息位和监督位满足一组线性代数方程的码,式(1.1.1)就是这样的例子,现在将它改写成1*a6⊕1*a5⊕1*a4⊕0*a3⊕1*a2⊕0*a1⊕0*a0=01*a6⊕1*a5⊕0*a4⊕1*a3⊕0*a2⊕1*a1⊕0*a0=0(1.1.3)1*a6⊕0*a5⊕1*a4⊕1*a3⊕0*a2⊕0*a1⊕1*a0=0我们可以将式(1.1.3)表示成如下的矩阵形式a6a51110100a401101010a3=0(1.1.4)1011001a20a1a0式(1.1.4)还可以简记为H*AT=0T或A*HT=0(1.1.5)其中1110100H=1101010A=a6a5a4a3a2a1a00=0001011001上角“T”表示将矩阵转置。例如HT是H的转置,即HT的第一行为H的第一列,第二行为第二列。我们将H称为监督矩阵(parity—checkmatrix).只要监督矩阵H给定,编码时监督位和信息位的关系就完全确定了。由(1.1.4)和(1.