通信原理设计报告(7-4)汉明码的编解码设计_第1页
通信原理设计报告(7-4)汉明码的编解码设计_第2页
通信原理设计报告(7-4)汉明码的编解码设计_第3页
通信原理设计报告(7-4)汉明码的编解码设计_第4页
通信原理设计报告(7-4)汉明码的编解码设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信系统课程设计报告目录前言1第1章 设计要求3第2章 Quartus软件介绍4第3章 汉明码的构造原理63.1 (7,4)汉明码的构造原理63.2 监督矩阵H与生成矩阵G73.3 校正子(伴随式S)8第4章 (7,4)汉明码编码器的设计104.1 (7,4)汉明码的编码原理及方法104.2 (7,4)汉明码编码程序的设计104.3 (7,4)汉明码编码程序的编译及仿真11第5章 (7,4)汉明码译码器的设计125.1 (7,4)汉明码的译码方法125.2 (7,4)汉明码译码程序的设计135.3 (7,4)汉明码译码程序的编译及仿真15第6章 (7,4)汉明码编译码器的设计176.1 (7,4)汉明码编译码器的设计17参考文献18体会与建议19附录20前 言汉明(Hamming)码是一种能够纠正一位错码或检测两位错码的一种效率较高的线性分组码。本次课程设计的任务就是利用EDA技术在Quartus II软件下用VHDL语言实现(7,4)汉明码的编译码的设计和仿真。从而进一步加深对汉明码编译码原理的理解。EDA(Electronic Design Automation)技术是随着集成电路和计算机技术飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。目前,VHDL语言已经成为EDA的关键技术之一,VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力 ,因此在实际应用中越来越广泛。VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成,近几十年来,EDA技术获得了飞速的发展,它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译,化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作,以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点,随着EDA技术的深入发展,基于硬件描述语言的方法将由取代传统手工设计方法的趋势。第1章 设计要求1、 采用VHDL语言输入法进行设计;2、 根据(7,4)汉明码的编解码原理,确定编解码器具体设计方案;3、 画出(7,4)汉明码的编解码的程序设计流程图;4、 编写VHDL源程序、调试及仿真时序波形。第2章 Quartus软件介绍 Quartus软件 Quartus是Altera公司推出的CPLD/FPGA的开发工具,Quartus提供了完全集成且于电路结构无关的开发环境,具有数字逻辑设计的全部特性。Quartus设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。它是可编程片上系统(SOPC)设计的综合性环境,拥有FPGA和CPLD设计的所有阶段的解决方案。与其他EDA软件相比较,Quartus软件的主要特点包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件。芯片(电路)平面布局连线编辑。LogicLock增量设计方法,用户建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块、功能强大的逻辑综合工具。完备的电路功能仿真与时序逻辑分析、定时/时序分析与关键路径延时分析。可使用SignalTap逻辑分析工具进行嵌入式的逻辑分析。支持软件源文件的添加和创建,并将它们链接起来生成编程文件。使用组合编译方式可一次完成整体设计流程。自动定位编译错误、高效的器件编程与验证工具。可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件。能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。 VHDL语言VHDL语言主要用于描述数字系统的结构、行为、功能和接口,除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点如下几点:(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。 第3章 (7,4)汉明码的构造原理3.1 汉明码的构造原理 线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。=346035614562aaaaaaaaaaaa现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为A=,前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码产生监督元:(式3.1)显然,这3个方程是线性无关的。代入上述公式可得(7,4)码的全部码组,如表1所示。表1 (7,4)汉明码的全部码组信息位a6 a5 a4 a3监督位a2 a1 a0信息位a6 a5 a4 a3监督位a2 a1 a00000000100011100010111001100001010110100100011110101100101001101100001010110111010100110011111010001110001111111由上表可知:(7,4)汉明码的最小码距=3,它能纠1位错或检2位错。由此可见,汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距=3,码长n与监督位r满足关系式:,说明上述所说的(7,4)线性分组码就是汉明码。同时,由于码率,故当很大和很小时,码率接近1,可见:汉明码是一种高效码。3.2 监督矩阵H和生成矩阵G 监督矩阵H式(3.1)所示的(7,4)汉明码的监督方程可以改写为: (式3.2.1)用矩阵的形式可以将上式表示为: (式3.2.2)并简记为:或其中,H成为监督矩阵,只要H给定,信息位和监督位的关系也就随即确定下来了。H的行数就是监督矩阵的数目,等于监督数目r。H序列可分为两部分:(式3.2.3) 其中P为阶矩阵,为阶单位阵。因为,所以可以用这个关系式来作为判断接收码字A是否出错的依据。若,则说明码字A有错,反之则说明码字A无错。 生成矩阵G若将(3.2.1式)的监督方程补充完整并写成矩阵的形式:(式3.2.4)即:A=G=GM上式中 G= (式3.2.5)G成为生成矩阵,根据式3.2.4知:由G和信息码就能产生所有码字。生成矩阵也可分为两部分,即 G= (式3.2.6) 上式中 Q= (式3.2.7) Q为阶矩阵,为阶单位阵。 3.3 校正子(伴随式)S设一发送码组A=,在传输的过程中可能发生误码。接受码组B=,收发码组之差定义为错误图样E。E=B-A (式3.3.1) 其中,E=,令S=,称为校正子(伴随式)。 (式3.3.2)可见:校正子S与错误图样E之间由确定的线性变换关系。(7,4)汉明码的校正子和错误图样之间的对应关系如表2所示。表2 (7,4)汉明码S 与E 对应关系错误码位错误图样E校正子S错误位置C 0 0 0 0 0 0 10 0 100 0 0 0 0 1 00 1 010 0 0 0 1 0 01 0 020 0 0 1 0 0 00 1 130 0 1 0 0 0 01 0 140 1 0 0 0 0 01 1 051 0 0 0 0 0 01 1 16无错0 0 0 0 0 0 00 0 07由上表可知:当S=001时,则出错在0 位,即b0 出错;当S=010时,则出错在1 位,即b1 出错;当S=100时,则出错在2 位,即b2 出错;当S=011时,则出错在3 位,即b3 出错;当S=101时,则出错在4 位,即b4 出错;当S=110时,则出错在5 位,即b5 出错;当S=111时,则出错在6 位,即b6 出错;当S=000时,则无错。第4 章 (7,4)汉明码编码器的设计4.1 (7,4)汉明码编码方法(7,4)汉明码的编码就是将输入的4 位信息码M= 加上3 位监督码从而编成7位汉明码,编码输出B= .由式A = MG=G 可知,信息码M与生成矩阵G 的乘积就是编好以后的(7,4)汉明码。 4.2 (7,4)汉明码编码程序设计根据(7,4)汉明码的编码原理,由于输入的是4 位的信息码M=,输出的是7 位的(7,4)汉明码B=。所以定义4 位输入信息码 的语句为:port(datain:in std_logic_vector(3 downto 0);编码输出的语句为:port(b:out std_logic_vector(6 downto 0);再根据(式3.1),即可得到监督位与信息码之间的对应关系,编码输出的表示语句可写成如下形式: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);最后将上式计算所得的监督位和输入的信息位一起输出,则此次编码就算完成了。 (7,4)汉明码的编码源程序见下文附录。 编码流程图及打包生成的分立元件编码器分立元件:编码程序的设计流程图: 开始输入信息码a3a2a1a0编出监督位b2b1b0输出(7,4)汉明码b6b5b4b3b2b1b0结束4.3 (7,4)汉明码编码程序的编译及仿真用QuartusII进行编译仿真,在编译没有出错的的情况下选择新建波形文件,根据程序验证的需要设置波形,即设置好输入信息码的初始值,点击“波形仿真”,出现如下波形: (7,4)汉明码的编码仿真波形 从上图的波形中可以看出,datain输入4 位信息码00001111,分别对应编码输出为b,输出了对应的7 位(7,4)汉明码,对照表1 汉明码全部码字,可见本次(7,4)汉明码编码的正确性。第5 章 (7,4)汉明码的译码器的设计5.1 (7,4)汉明码译码方法(7,4)汉明码的译码器的功能就是把输入的7 位汉明码B= 译为4位信息码,并且根据伴随矩阵S 从而纠正编码中可能出现的1 位错码。根据监督矩阵H和生成矩阵G的关系,即:H = ,其中是的单位阵,G = ,其中 是的单位阵, (式5.1.1)生成矩阵 G= 由式(5.1.1),得P=监督矩阵 由式(3.3.2)知,其中E=从而即可得到校正子S与(7,4)汉明码各位之间的关系: 算出校正子S()后,对照表2,即可判断出哪位出错,并纠正出错的那位,从而输出正确的码字。5.2 (7,4)汉明码译码程序的设计根据前面分析的译码原理,由于译码器的输入为7 位汉明码:B=输出是4 位信息码:,并且同时输出校正子S与错误的码位C。可得:译码器的7为汉明码输入语句:port(b:in std_logic_vector(6 downto 0);译码器的信息码输出语句:port(a: out std_logic_vector(3 downto 0);译码器的校正子输出语句:port(s: out std_logic_vector(2 downto 0);译码器的错码位置输出语句:port(c: out std_logic_vector(2 downto 0);译码器的校正子S 与(7,4)汉明码各位之间的关系语句:sss(2):=b(6) XOR b(5) XOR b(4) XOR b(2);sss(1):=b(6) XOR b(5) XOR b(3) XOR b(1);sss(0):=b(6) XOR b(4) XOR b(3) XOR b(0);判定校正子S 与0 的关系,可以使用if 语句。如果S 为0,则表示没有错误;如果S 不为0,则表示有一位出错。然后根据表2可以得到校正子S 与错误图样E 之间的关系,再使用case 语句,编写如下程序:when 001 =bb(0):= not bb(0);cbb(1):= not bb(1);cbb(2):= not bb(2);cbb(3):= not bb(3);cbb(4):= not bb(4);cbb(5):= not bb(5);cbb(6):= not bb(6);c=110;在上述程序中,bb、sss 是设置的变量。bb 存放的是译码器的7 位汉明码输入。当S=001,时,表示出错,则只要将这一位的值取反,然后再送给输出,就可以纠正错码了。的纠错原理同。程序最后的译码输出表示为:a=bb(6)&bb(5)&bb(4)&bb(3);在程序中,C 表示错误在哪一位。若第0 位()出错,则C 输出0;若第1 位出错,则C 输出1;若无错,则C 输出7。这样译码程序就可以编出来了。译码源程序见附录。 译码流程图及打包生成的分立元件译码器分立元件:译码程序设计的流程图:开始译码输入七位码b6b5b4b3b2b1b0根据输入求出校正子校正子S=0?输出四位信息码a3a2a1a0结束根据S与E的关系纠正错码NY5.3 (7,4)汉明码译码程序的编译及仿真编好程序后,用QuartusII软件进行编译仿真,设置好输入的7位汉明码为,根据输入求出校正子S,判断S是否为零,若为0,则说明无错,直接输出;若不为0,则根据S与E的对应关系判断出出错的那位并纠正之,然后输出纠正后的码字。(7,4)汉明码的译码仿真波形在以上波形中可见,a 为译码输入,输入7 位信息码,分别对应译码输出的b输出了对应的4 位信息码,对照表1可以验证(7,4)汉明码的译码结果是否正确。并且在输入码有单个错码的情况下能纠正错码,纠错情况对应表2。如波形图中输入a 为,输出b 为0000,并且校正子s 为111,错码位置c 为6,表示错码为b6。如波形图中输入a 为,输出b为0000,并且校正子S为000,错码位置C为7,表示无错。译码器的输入输出情况如下表所示:表3 (7,4)汉明码译码输入、输出对应关系序号译码输入译码输出校正子S错误码位错码位置C00000010110001100220010000无错730011000无错740100011350101011360110100570111000无错781000000无错7910010010101010010111101110021211000113131101101414111011051511111116第6 章 (7,4)汉明码的编译码器的设计6.1 (7,4)汉明码编译码器的设计在编码程序和译码程序都验证结果正确以后,为了将编码和译码结合起来,将编码的输出结果送到译码器的输入端,然后由译码器将7 位输入的汉明码译成4 位的信息码。分别对编译码两个程序进行打包,生成编码和译码的打包分立元器件,然后进行连线,形成如下图所示的编译码顶层文件图:输入端输入的datain30,经过编码后形成(7,4)汉明码的全部码字b60;然后将b60作为译码器的输入,经译码器输出为b30、n20和s20。b30的波形结果应该和datain30的波形结果一致,则说明整个编译码过程是正确的。参考文献1 通信原理 樊昌信、曹丽娜,国防工业出版社,20062 现代通信实验系统的计算机仿真陈萍,国防工业出版社,2005体会与建议历时2周的通信系统课程设计圆满结束了,体会和收获颇多 这次课程设计我做的是(7,4)汉明码的编解码的设计,刚接到这个题目时,感觉有点迷茫和彷徨,不知道从何入手。尽管上学期刚学的通信原理中也讲过线性分组码中的(7,4)汉明码的编解码方法,但是现在课程设计需要借助Quartus II软件的VHDL语言来实现这功能,所以感觉比较麻烦,因为以前学的VHDL基本都遗忘了。然后便是查阅以前的书籍资料,对相关知识进行温习,通过反复温习,终于领会了(7,4)汉明码的编解码的原理、方法和本次课程设计需要实现的基于VHDL的汉明码的编解码方案。顿时觉得豁然开朗,脑海里也有了大致的实施方案。在本次课

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论