《汉明码编译码系统CPLD实现.doc》由会员分享,可在线阅读,更多相关《汉明码编译码系统CPLD实现.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课 程 设 计 报 告题目:(7,4)汉明码编译码系统CPLD实现 系 (部): 专 业: 班 级: 姓 名: 年 月 日 (7,4)汉明码编译码系统CPLD实现一 设计目的通过本课程设计巩固并扩展通信原理课程的基本概念、基本理论、分析方法和实现方法。结合EDA技术、数字通信技术和微电子技术,学习现代数字通信系统的建模和设计方法,使学生能有效地将理论和实际紧密结合,培养创新思维和设计能力,增强软件编程实现能力和解决实际问题的能力。二 设计要求 熟悉数字电路设计的一般方法,熟练地运用通信理论,进行数字基带信号、 数字信号频带传输系统设计,掌握对数字基带信号的处理方法,并进行通信系统建模。 熟悉和
2、掌握MAXPLUS软件的使用,按设计要求进行建模; 设计完成后,按学校规范统一书写格式撰写课程设计报告一份,包括:设计目的、设计要求、逻辑分析、设计总体电路、模块设计、模块程序(含对程序的说明)、仿真波形、实验结果分析、心得体会(不少于500字)、参考文献(不少于5篇)等。三 逻辑分析 线性分组码是一种很重要的纠错码,应用很广泛。在(n,k)分组码种,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。循环码是采用循环移位特性界定的一类线性分组码。如果一个线性分组码的任意一个码字都是另外一个码字的循环移位,那么称此线性分组码为一个循环码。 而本次课程设计要求采用新型数字系统设计的方法实
3、现(7,4)汉明码。汉明码是差错控制编码中最主要、最常用的一种。它有很强的纠错能力,所以普遍应用于各种实际的差错控制系统。要求用CPLD实现(7,4)汉明码编码解码的方法,可以采用原理图或VHDL编程输入的方式。 (7,4)汉明码的编码就是将输入的4位信息码加上3位监督码从而编成7位汉明码输出。监督位的生成如下: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)汉明码的译码就是将输入的7位汉明码译为4位信息码,并且根据得到的校正子纠正编码过程中可能出现的1位错码。校正
4、子的算法如下:s(2):=a(6) xor a(5) xor a(4) xor a(2);s(1):=a(6) xor a(5) xor a(3) xor a(1);s(0):=a(6) xor a(4) xor a(3) xor a(0);校正子以及对应的错码位置:S0S1S2错码位置S0S1S2 错码位置 001 a0 101 a4 010 al 110 a5 100 a2 111 a6 011 a3 000 无错码四.设计总体电路 在实际应用中,(7,4)汉明码的编码部分位于信源端,译码部分位于信宿端。数字信号在信道传输时可能发生误码,为了减小误差,信道编码器对传输的信息码元进行汉明编码
5、加入保护成分。接收端的信道译码器对接收到的码元进行汉明译码,从中发现并纠正错误,增强了数字信号的抗干扰能力,提高了通信系统可靠性。五.模块设计(1).(7,4)汉明码的编码过程(7,4)汉明码的编码就是将输入的4位信息码加上3位监督码从而编成7位汉明码输出。编码流程图如下: (2).(7,4)汉明码译码过程(7,4)汉明码的译码就是将输入的7位汉明码译为4位信息码,并且根据得到的校正子纠正编码过程中可能出现的1位错码。译码流程图如下图所示: 六.模块程序编码部分程序:library ieee;use ieee.std_logic_1164.all;entity bianma isport( a
6、:in std_logic_vector(3 downto 0); b:out std_logic_vector(6 downto 0) );end bianma;architecture arc of bianma issignal p:std_logic_vector(2 downto 0);begin p(2)=a(3) xor a(2) xor a(1); p(1)=a(3) xor a(2) xor a(0); p(0)=a(3) xor a(1) xor a(0); b=a&p;end arc;译码部分程序:library ieee;use ieee.std_logic_1164.
7、all;entity yima is port( a:in std_logic_vector(6 downto 0); b:out std_logic_vector(3 downto 0) );end yima;architecture arc of yima issignal s:std_logic_vector(2 downto 0);begins(2)=a(6) xor a(5) xor a(4) xor a(2);s(1)=a(6) xor a(5) xor a(3) xor a(1);s(0)m(0):=not m(0); when 010=m(1):=not m(1); when
8、100=m(2):=not m(2); when 011=m(3):=not m(3); when 101=m(4):=not m(4); when 110=m(5):=not m(5); when 111=m(6):=not m(6); when others=null; end case;b=m(6)&m(5)&m(4)&m(3);end process;end ;七.仿真波形四位二进制码共可组成16个不同代码,每个代码编码前后波形如下图所示:假设发送的源代码为1010,则经过汉明编码后为。若经过信道后:b6位发生错误,即误传为0010 010。将接受到的代码(0010 010)输入译码器
9、,则经过译码后可纠正d6位错误。如图0-100ns所示。b5位发生错误,即误传为1110 010,译码前后波形如图100-200ns所示;b4为发生错误,即误传为1001 010,译码前后波形如图200-300ns所示;b3位发生错误,即误传为1011 010,译码前后波形如图300-400ns所示;b2位发生错误,即误传为1010 110,译码前后波形如图400-500ns所示;b1位发生错误,即误传为1010 000,译码前后波形如图500-600ns所示;b0位发生错误,即误传为1010 011,译码前后波形如图600-700ns所示;若没有发生错误,译码前后波形如图700-800ns所
10、示。从仿真波形可以观察到,无论接收到的汉明码哪一位发生误码,经译码后都可恢复出正确的源代码。八.实验结果分析 (7,4)汉明码编码系统可将4位信息码编码为7位汉明码,在7位汉明码中,前4位为原信息码,后三位为系统生成的监督码。b2=a(3)a(2)a(1)b2=a(3)a(2)a(0)b1=a(3)a(1)a(0) 源码经过汉明编码后,在经过信道传输由信宿接收,信宿再对其译码,还原出源代码。在译码过程中系统会生成校正子,校正子可以检查码元是否发生错误,及发生错误的位置。在本次仿真中,假设源代码为1010,则其监督位为b2=101=0b1=100=1b0=110=0所以所生成7位汉明码为。 系统
11、根据所收到的码元,按照一定算法可得到校正子,根据校正子可判断是否发生错误及错误位置,若发现错误则将错误位置的码元取反,即得到正确的源代码。 如仿真波形图所示,采用(7,4)汉明编码,在传输过程中无论信息位还是监督发生错误,只要发生错位不超过一位,经汉明译码后都可恢复出正确的源代码1010。九心得体会本次课程设计我们小组四个人共同完成了关于(7,4)汉明码编码和译码的整个过程,收获颇多。刚看到题目的时候,我们非常着急,以为这个题目很难,但老师关于这次设计给我们做了详细的讲解,将设计的大致思路告诉了我们。接下来就靠我们自己了。数字信号在信道传输时受到噪声等影响后将会引起差错,为了减小差错,信道编码
12、器对传输的信息码元按一定规则加入加入保护成分。接收端的信道译码器按相应的规则进行解码,从中发现并纠正错误,增强数字信号的抗干扰能力,提高通信系统可靠性。汉明编码即为一种信道编码,通过本次设计,我们将深刻体会到信道编码在提高通信系统可靠性中的作用。通过翻阅相关书本和资料我知道了(7,4)汉明码是一种线性分组码,然后对线性分组码和循环码的原理又做了一些了解,但重要还是掌握了(n,k)分组码的构成。掌握了(7,4)汉明码的构成之后,又认真学习了其编码和译码的基本原理,然后开始利用VHDL语言编写相应的编码和译码程序,并进行了软件仿真,得到了波形仿真图,通过波形仿真图直观地看到(7,4)汉明码的编码译码结果,并且对理论做了验证。在整个设计过程中,我们不仅对相关内容的理论知识做了又一次的复习,而且对VHDL语言又做了一次熟悉,更清楚地认识到VHDL语言的强大功能,还提高了独立思考的能力。但是在设计的过程中也有一些错误出现,原因就是自己的不认真,很快也得到了改正。这次课程设计是我们几个人分工合作的,因此完成的也比较快,也让我看到了团结的力量之大。十.参考文献通信原理樊昌信、曹丽娜 国防出版社信息论与编码陈云 电子工业出版社数字信号处理张学智 兵器工业出版社CPLD技术及其应用宋万杰 西安电子科技大学出版社可编程逻辑器件原理、开发与应用赵曙光 西安电子科技大学出版社