汉明码编译码CPLD实现.docx

上传人:牧羊曲112 文档编号:2067467 上传时间:2023-01-06 格式:DOCX 页数:18 大小:288.09KB
返回 下载 相关 举报
汉明码编译码CPLD实现.docx_第1页
第1页 / 共18页
汉明码编译码CPLD实现.docx_第2页
第2页 / 共18页
汉明码编译码CPLD实现.docx_第3页
第3页 / 共18页
汉明码编译码CPLD实现.docx_第4页
第4页 / 共18页
汉明码编译码CPLD实现.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《汉明码编译码CPLD实现.docx》由会员分享,可在线阅读,更多相关《汉明码编译码CPLD实现.docx(18页珍藏版)》请在三一办公上搜索。

1、西安工业大学现代通信原理实验课 程 设 计 报 告题目:(7,4)汉明码编译码系统CPLD实现系 (部): 专 业: 班 级: 姓 名: 学 号: 年 月 日课 程 设 计 目 的通过本课程设计巩固并扩展通信原理课程的基本概念、基本理论、分析方法和实现方法。结合EDA技术、数字通信技术和微电子技术,学习现代数字通信系统的建模和设计方法,使学生能有效地将理论和实际紧密结合,培养创新思维和设计能力,增强软件编程实现能力和解决实际问题的能力。课 程 设 计 要 求熟悉数字电路设计的一般方法,熟练地运用通信理论,进行数字基带信号、 数字信号频带传输系统设计,掌握对数字基带信号的处理方法,并进行通信系统

2、建模。熟悉和掌握MAXPLUS软件的使用,按设计要求进行建模;设计完成后,按学校“课程设计工作规范”中的“统一书写格式”,撰写课程设计报告一份,包括:设计题目、设计要求、逻辑分析、设计总体电路、模块设计、模块程序(含对程序的说明)、仿真波形、实验结果分析、心得体会(不少于500字)、参考文献(不少于5篇)。课 程 设 计 注 意 事 项接通电源前确保电源插座接地良好,观察设备仪器有无异常现象,正常方可实验。课程设计时要集中注意力遵守操作规则,遵守一切安全措施,验安全认真操作仔细观察,积极思考,认真设计程序并仔细调试修改程序。实验结果与设计不相符仔细检查,翻阅指导书或者教材,如有不懂请教老师,不

3、要盲目改动修改程序。课 程 设 计 内 容采用新型数字系统设计的方法实现(7,4)循环码。循环码是差错控制编码中最主要、最常用的一种。它有很强的纠错能力,所以普遍应用于各种实际的差错控制系统。要求用CPLD实现(7,4)循环码编码解码的方法,可以采用原理图或VHDL编程输入的方式。课 程 设 计 简 要 操 作 步 骤简要介绍线性分组码、循环码的基本原理的基础。分析CPLD实现(7,4)循环码编码解码的算法,建立模型,写出流程图。原理图输入或用VHDL语言编写的程序。进行编译,并进行仿真。分析仿真波形,检查所实现的编码器是否正确。进行引脚定义。进行并口下载电缆的配置。检查无误后,生成下载文件,

4、并进行可编程器件的烧写。硬件验证功能是否实现。撰写课程设计报告。课 程 设 计 心 得 体 会 通过本次课程设计,让我全面系统地掌握了通信原理了基本知识。运用通信原理知识去分析和解决具体问题,使得所学知识得到了进一步巩固、深化和发展。 通过结合课本的知识去完成课程设计也让我明白了理论与实践的相结合的重要性。虽然在设计的过程中遇到了各种各样的问题,但通过老师的指导同学的帮助和查阅大量课程设计指导书,让我得以将课程设计顺利完成。总结了课程设计中的错误,提高了自己在实验过程中的效率和准确性。并在本次课程设计中,进一步加深了自己对通信原理的认识和了解。课 程 设 计 评 语 及 成 绩评 语成 绩指导

5、教师(签 名)2010年7月 日附件: (7,4)汉明码编译码CPLD实现摘要:采用新型数字系统设计的方法实现(7,4)循环码。循环码是差错控制编码中最主要、最常用的一种。它有很强的纠错能力,所以普遍应用于各种实际的差错控制系统。要求用CPLD实现(7,4)循环码编码解码的方法,可以采用原理图或VHDL编程输入的方式。1、差错控制编码概述以及汉明码主要应用领域数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。由于乘性干扰引起的码间串扰,可以采用均衡的办法来纠正。而加性干扰的影响则需要用其他办法解决。在设计数字通信系统时,应该首先从合理选择调制制度,解调方法

6、以及发送功率等方面考虑,使加性干扰不足以影响到误码率要求。在仍不能满足要求时,就要考虑采用差错控制措施了。从差错控制角度看,按加性干扰引起的错码分布规律不同,信道可以分为3类,即随机信道,突发信道和混合信道。在随机信道中,错码的出现是随机的,而且错码之间是统计独立的。在突发信道中,错码是成串集中出现的,而且在短促的时间段之间存在较长的无错码区间。把既存在随机错码又存在突发错码的的信道称为混合信道。对于不同类型的信道,应该采用不同的差错控制技术。1.1纠错编码原理我们把信息码分组,为每组信息码附加若干监督码的编码称为分组码(block code).在分组码中,监督码元仅监督本码组中的信息码元。分

7、组码一般用符号(n,k)表示,其中n是码组的总位数,又称为码组的长度(码长),k是码组中信息码元的数目,n-k=r为码组中的监督码元的数目,或者称为监督位数目,分组码的结构如图2示,图中前k位为信息位,后面附加r个监督位。其中an-1到ar为k个信息位,ar-1到a0为r个监督位。 an-1an-2arar-1ao图4 分组码的结构 在分组码中,把码组中“1”的个数称为码组的重量,简称码重。把两个码组中对应位上数字不同的位数称为码组的距离,简称为码距,码距又称为汉明距离。我们把某种编码中各个码组之间距离的最小值称为最小码距(d0)。一种编码的最小距离的大小直接关系着这种编码的检错与纠错能力:1

8、.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钢丝绳张力检测系统随着现代通信技术和计算机技术的高速发展,无线数字通信的应用越来越广泛.钢丝绳张力检测系统将数字无线通信、测量和计算机技术结合在一起,其功能是将电梯、缆车或提升机钢丝绳张力检测信息转换成数字信号,通过无线方式传送给控制中心,由控制中心对原始数据进行处理、分析和计算,输出人们想要的结果,做出相应的判断与控制。因此,钢

9、丝绳张力的检测系统对使用钢丝绳的提升设备的安全运行起着至关重要的作用。1.22数字存储系统 随着PC机的日益普及,存储对象的日渐多元化,用户对存储需求不断升级,如何保证数据稳定、高速传输?RAID (”Redundant Array of Independent Disk”)独立冗余磁盘阵列解决了这个难题,并且成为目前存储的主流技术。RAID之所以 实现数据高速、可靠的传输,一个关键的核心技术就是应用了一定的差错控制编码技术。在RAID 众多系列中最复杂的RAID 2中就采用了”汉明码(Hamming Code)差错控制编码技术”,它在数据存储及移动过程中进行差错控制,对传输过程中出现的差错自

10、动进行纠正,保证了数据传输的安全可靠性。1.1.3.3保密通信技术 随着计算机网络的发展及应用的普及,特别是在军事指挥,情报系统,银行系统的应用,通信的可靠性及保密性要求越来越高,这就要求研制新的高可靠性及保密性通信技术。接收端不仅能从接收到的信息中检测出传输过程中的错误而且能纠正之。针对IBM-PC微计算机之间通信过程中的纠错技术提出了一种在通信计算机之间不增加任何硬件设备的情况下,仅用编写一段纠错编码(发送端)和纠错译码(接收端)的软件方法达到计算机通信纠错和保密的目的,即利用汉明码编码实现检错、纠错的具体方案,这样做的优点是:在保持一定功能和相应速度的前提下,采用软件方法,不仅可以提高通

11、信过程的可靠性,而且还可以提高通信系统本身的可靠性。2、汉明码、汉明码编译码及其原理介绍2.1汉明码的定义:若一致监督矩阵H 的列是由不全为0且互不相同的所有二进制m(m2的正整数)重组成,则由此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 即是汉明码监督位的位数。故一个汉明码中,信息位的位

12、数k=nm=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)中

13、,用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汉明码的监督矩阵:1 1 1 0 1 0 0 H= 1 1 0 1 0 1 0 1 0 1 1 0 0 1及编码所对应的码字为C=011001。2.4(7,4)汉明码的编码原理2.4.1 基本构造对于码组长度为n、信息码元为k位、监督码元为rnk位的分组码,常记作(n,k)码,如果满足

14、2r1n,则有可能构造出纠正一位或一位以上错误的线性码。下面我们通过(7,4)汉明码的例子来说明如何具体构造这种码。设分组码(n,k)中,k = 4,为能纠正一位误码,要求r3。现取r3,则nkr7。我们用a0ala2a3a4a5a6表示这7个码元,用S1、S2、S3表示由三个监督方程式计算得到的校正子,并假设三位S1、S2、S3校正子码组与误码位置的对应关系如表1所示。S1S2S3错码位置S1S2S3 错码位置 001 a0 101 a4 010 al 110 a5 100 a2 111 a6 011 a3 000 无错码 表1 校正子和错码位置关系由表可知,当误码位置在a2、a4、a5、a

15、6时,校正子S11;否则S10。因此有S1a6a5a4a2,同理有S2a6a5a3a1和S3a6a4a3a0。在编码时a6、a5、a4、a3为信息码元,a2、a1、a0为监督码元。则监督码元可由以下监督方程唯一确定 a6a5a4a2 = 0 a6a5a3a1 = 0 (1.1.1) a6a4a3a0 = 0 也即a2a6a5a4 a1a6a5a3 ( 1.1.2)a0 = a6a4a3由上面方程可得到表2所示的16个许用码组。在接收端收到每个码组后,计算出S1、S2、S3,如果不全为0,则表示存在错误,可以由表1确定错误位置并予以纠正。举个例子,假设收到码组为0000011,可算出S1S2S3

16、=011,由表1可知在a3上有一误码。通过观察可以看出,上述(7,2.4.2 码的最小码距为dmin3,纠正一个误码或检测两个误码。如果超出纠错能力则反而会因“乱纠”出现新的误码 信息位 监督位 信息位 监督位 a6a5a4a3 a2a1a0 a6a5a4a3 a2a1a0 表2 (7,4)汉明码的许用码组2.4.3监督矩阵 上面有提到过,线性码是指信息位和监督位满足一组线性代数方程的码,式(1.1.1)就是这样的例子,现在将它改写成 1*a61*a51*a40*a31*a20*a10*a0=0 1*a61*a50*a41*a30*a21*a10*a0=0 (1.1.3) 1*a60*a51*

17、a41*a30*a20*a11*a0=0 我们可以将式(1.1.3)表示成如下的矩阵形式 a6 a5 1 1 1 0 1 0 0 a4 0 1 1 0 1 0 1 0 a3 = 0 (1.1.4) 1 0 1 1 0 0 1 a2 0 a1 a0 式(1.1.4)还可以简记为 H*AT=0T 或 A*HT=0 (1.1.5) 其中1 1 1 0 1 0 0 H= 1 1 0 1 0 1 0 A= a6a5a4a3a2a1a0 0= 000 1 0 1 1 0 0 1上角“T”表示将矩阵转置。例如HT是H的转置,即HT的第一行为H的第一列,第二行为第二列。 我们将H称为监督矩阵(paritych

18、eck matrix).只要监督矩阵H给定,编码时监督位和信息位的关系就完全确定了。由(1.1.4)和(1.1.5)都可以看出,H的行数就是监督关系式的数目r,H的每一行中的“1”的位置表示相应码元之间存在的监督关系。式(1.1.4)中的H矩阵可以分为两部分。 1 1 1 0 1 0 0 H= 1 1 0 1 0 1 0 = PIr (1.1.6) 1 0 1 1 0 0 1式中:P为r*k阶矩阵;Ir为r*r阶单位方阵。2.4.3生成矩阵 由代数理论可知,H矩阵的的各行应该是线性无关的,否则将得不到r个线性无关的监督关系式,从而也得不到r个独立的监督位。若一矩阵可以写成PIr的矩阵形式,则其

19、各行一定是线性无关的。因为容易验证Ir的各行是线性无关的,故PIr的各行也是线性无关的。 类似于(1.1.1)改成(1.1.4)那样,(1.1.2)可以改写成 a6a2 1 1 1 0 a5 a1 = 1 1 0 1 a4 (1.1.7) a0 1 0 1 1 a3或者 1 1 1 a2a1a0 = a6a5a4a3 1 1 0 = a6a5a4a3 Q (1.1.8) 1 0 10 1 1其中,Q为一个k*r阶矩阵,它为P的转置,即 Q=PT式(1.1.8)表示,在信息位给定后,用信息位的行矩阵乘矩阵Q就产生出监督位。我们将Q的左边加上一个k*k阶单位方阵,就构成一个矩阵G 1 0 0 0

20、1 1 1 G= IKQ = 0 1 0 0 1 1 0 0 0 0 1 0 1 1G称为生成矩阵(generator matrix),因为由它可产生整个码组,即有 a6a5a4a3a2a1a0 = a6a5a4a3 G= A (2.2.0)3、(7,4)汉明编译码的设计与仿真3.1(7,4)汉明码的编码思路(7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。根据式(2.2.0)A = a6 a5 a4 a3 G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,由式(1.1.9)得1 0 0 0 1 1 1 G = 0 1 0 0

21、 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1所以,可以得出如下方程组 a6 = a6 a5 = a5 a4 = a4 a3 = a3 (2.2.1) a2 = a6 + a5 + a4 a1 = a6 + a5 + a3 a0 = a6 + a4 + a3根据式(2.2.1)就可以编出编码程序了。3.2(7,4)汉明码的编码程序设计根据(7,4)汉明码的编码原理,首先画出程序设计的流程图: 图 6 编码流程图输入信息码a3a2a1a0,输出(7,4)汉明码b6b5b4b3b2b1b0。首先,输入信息码a3a2a1a0,即使用以下语句:port(a:in std_logi

22、c_vector(3 downto 0);然后,根据式(2.2.1),就可以得到监督位与信息码之间的对应关系,使用异或运算,即:b(6)=a(3); b(5)=a(2); b(4)=a(1); b(3)=a(0);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);最后,将算好的监督位与原来输入的信息一起输出,就是编码结束了。3.3(7,4)汉明码的编码程序的编译3.3.1在max+plus 中采用原理图输入如下所示: 步骤一:指定设计项目名字 步骤二:建立一个新的图形文件 步骤

23、三:输入图元和功能符号 步骤四:命名引脚和链接逻辑符号编译结果如下:3.3.2在在max+plus 采用文本输入法:(7,4)汉明码的编码程序如下library ieee;use ieee.std_logic_1164.all;entity bm is port(a:in std_logic_vector(3 downto 0); b:out std_logic_vector(6 downto 0);end bm;architecture strc of bm isbegin b(6)=a(3); b(5)=a(2); b(4)=a(1); b(3)=a(0); b(2)=a(3) xor a

24、(2) xor a(1); b(1)=a(3) xor a(2) xor a(0); b(0)=a(3) xor a(1) xor a(0);end strc;文本编辑如下: 编译结果:3.3.3 (7,4)汉明码的编码程序的仿真在max+plus 采用波形编辑器:先建立一个仿真通道文件bmscf,如下图示:编辑的wdf文件如图所示:编译结果如下:3.3.4(7,4)汉明码的编码程序的编译和仿真分析 按照上述编码程序的编写思路,编写好程序,点击,进行编译,出现一些错误,列举如下:Error 1表明在使用std_logic_vector时,没有打开可以使用这个函数的库,应该在程序的最前面加上如下

25、语句:library ieee;use ieee.std_logic_1164.all;Error 2: vhdl syntax error:the ending simple name “bm” must match the entity identifier “ym”.Error 2表明程序中的文件名与保存时的文件名不一 致,两者应该相同。排除上述错误后,就可以进行波形仿真了。如bm.wdf所示,当a3a2a1a0 为0101时,b2b1b0为101,则整个输出码组为0101101。对照表2,故编码正确。3.3.5 (7,4)汉明码的译码程序的编程与仿真从编码输出之后是7位码元进入译码模块

26、命名为ym,则其程序流程图如下 图4.10 译码程序流程图这里要特别提出的是要加一个错码发生器,然后来实现译码。错码发生器的源代码如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY ERROR ISPORT(A:IN STD_LOGIC_VECTOR(6 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END;ARCHITECTURE ONE OF ERROR ISBEGIN b(6)=not a(6);b(5)= a(5);b(4)=a(4);b(3)=a(3);b(2)=a(2);b(1)=a(

27、1);b(0)=a(0);end one ;得到的译码仿真图为: 图4.11 译码模块仿真图 由图可以看出,当错码位置C=6时,即a(6)有错码,校正子S正好为7,当S=0时无错。当错码位置在C=5时,即a(5)有错码,校正子S正好为6.由此说明译码仿真正确。4、软件的调试与优化 编译码系统模块的链接在编码和译码程序都验证结束后,为了将编码和译码结合起来,就可以将编码的输出结果送到译码器的输入端,然后译码器将7位输入的汉明码译成4位的信息码,顶层文件如图所示: 图5.1 编译码系统原理图仿真结果如下: 图5.2 编译系统仿真图 由仿真图可以看出:B3.0的输出和datain3.0输入的一样,则

28、此编译系统仿真正确。5、结束语本文从差错控制编码理论的基本思想出发,在简要介绍汉明码编译原理的基础上,采用线性代数的方法,以矩阵为基本分析与设计工具,重点探讨了汉明码编码电路的实现,并使用VHDL语言编制了程序,验证了算法的可行性,从而达到理论与实践的相融合。随着计算机技术的发展和VHDL的出现,硬件设计和软件设计的界限已经被打破。本设计是利用VHDL实现高性能可编程采集系统设计的方法。通过仿真结果表明,应用可编程逻辑器件,具有速度更快、可靠性更高、调试更方便的优点。差错控制编码,不仅能检测出单个码组中任意一位的错误,还能对错码进行纠正,并能检测出多位错码。但是从对汉明码的分析过程看,传输的准

29、确性是靠牺牲速度来换取的,因为数据在传输过程中被分成了几次进行,且数码的位数越多,速度就越慢。但其编译码方案都是由软件实现的,所以完全可以满足应用系统对速度的要求。从分析过程以及仿真结果看,用硬件可编程语言VHDL进行数字系统的设计,可以提高数字系统的工作效率,降低消耗,保证系统的稳定性和可靠性。6、谢辞在本次课程设计中,感谢老师给我的帮助与指导,使我进一步了解了理论与实践相结合的重要性,这对我以后的学习和工作都是一种巨大的帮助。通过老师的帮助,使我看到了自己的缺点并及时的改正错误,使自己获得了很多而对技巧和经验。更好的培养了我的理论分析能力和动手能力。在这里再次的感谢老师的指导和帮助!7、参考文献1 南利平等. 通信原理简明教程. 第二版. 北京:清华大学出版社2 樊昌信等. 通信原理. 北京:国防工业出版社,20063 曹志刚等. 现代通信原理. 北京:清华大学出版社,19924 王兴亮. 通信系统原理教程. 西安:西安电子科技大学出版社,20075 曹志刚. 现代通信原理与技术. 北京:清华大学出版社,2001

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号