【摘要】本文主要介绍利用ALTERA公司的Quartus II软件实现(7,4)汉明码的编码和译码的设计,设计共分为三个模块:m序列产生与分组模块、编码模块、译码模块,实现m序列的分组输出。
在QuartusII编辑环境下用VHDL文本输入的输入方法编制程序,经编译正确后进行波形仿真,调试,从而验证设计的正确性。
关键字:汉明码,编码,译码,VHDL【Abstract】T his article propose a method for Hamming encoder and Hamming decoder which is based on the VHDL language. It introduces the theory of Hamming encoder and Hamming decoder and the source program based on VHDL, and the way simulated and checked through QuartusII.Throughout the whole design is totally divided into three modules: the m sequence generated and the Packet Module,the encoding module,the decoding Module.Keywords: Hamming, coder,encoder, decoder ,VHDL目录第1章问题的提出及方案论证 (3)1.1 问题的提出 (3)1.2 方案论证 (3)1.2.1 Quartus II和VHDL简介 (3)1.2.2 软件设计方案介绍 (6)第2章设计方案的实施 (8)2.1 m序列模块 (8)2.1.1 m序列简介 (8)2.1.2 m序列模块设计流程 (9)2.2 (7,4)汉明码知识介绍 (10)2.2.1基本概念 (10)2.2.2监督矩阵 (11)2.2.3生成矩阵 (12)2.2.4 伴随式(校正子)S (12)2.3 汉明码编码模块 (13)2.3.1汉明码编码原理 (13)2.3.2 汉明码编码程序设计流程 (14)2.4 汉明码译码模块 (15)2.4.1汉明码译码原理 (15)2.4.2汉明码译码程序设计流程 (16)第3章软件调试及遇到的问题 (19)3.1 软件调试仿真波形图 (19)3.2 软件调试过程中遇到的问题 (21)第4章总结体会 (22)附录: (23)参考文献 (30)第1章问题的提出及方案论证1.1 问题的提出在上学期的通信原理课程中,我们学习了线性码的基本理论知识。
通过学习,我们知道线性码是按照一组线性方程构成的。
汉明(Hamming)码又是一种能够纠正一位错码效率较高的线性分组码。
本次课程设计的任务就是利用EDA技术在Quartus II软件下用VHDL语言实现(7,4)汉明码的编译码设计和仿真。
从而在实践过程中,加深对汉明码编译码原理的理解。
1.2 方案论证1.2.1 Quartus II和VHDL简介1.Quartus II 软件简介QuartusⅡ是Altera公司推出的CPLD/FPGA的开发工具,Quartus Ⅱ提供了完全集成且与电路结构无关的开发环境,具有数字逻辑设计的全部特性。
Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
支持MAX7000/MAX3000等乘积项器件其中,Quartus II软件5.1支持可编程逻辑和结构化ASIC设计达到最佳效能的新特性包括:●Stratix II GX器件支持:设计人员采用Quartus II软件5.1,现在可以开始进行Stratix II GX全系列产品设计。
●PowerPlay技术包:随着PowerPlay技术包的全面推出,Quartus II软件用户现在具备了业界可编程逻辑功耗分析和优化的最高级工具。
与Quartus II软件5.0相比,5.1版的功耗优化特性平均降低了20%的动态功耗,而Altera Stratix II器件则达到了60%。
此外,5.1版包括了新的功耗优化向导,完善了Quartus II软件4.1引入的面积和性能优化向导,在优化Quartus II软件设计应用方面,为用户提供实时、循序渐进的帮助。
●渐进式设计流程:渐进式编译使设计人员能够将设计分为物理和逻辑分区,然后进行综合和适配。
5.1版引入了渐进式编译自下而上的流程,每个工程师可以独立的开发和优化功能,然后轻松将其集成在一个完整的设计中。
这种特性完善了年初引入的自上而下基于模块的流程,使设计人员在优化其他模块时,能够保留专用模块的性能不变。
●流行的IP模块:Altera订购包现在含有对部分流行MegaCore功能的全面许可,帮助设计人员缩短设计时间。
此外, Quartus II 软件网络版和订购版现在均包括一套嵌入式外设——已经同Nios II嵌入式处理器一起,分别进行了许可。
外部逻辑分析仪接口:Quartus II设计人员不但可以使用SignalTap® II嵌入式逻辑分析仪特性,还可以使用新的逻辑分析仪接口功能,在利用逻辑分析仪进行板级调试时,能够掌握内部FPGA节点的情况。
2. VHDL语言简介VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,被IEEE和美国国防部确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口,除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点如下几点:(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
1.2.2 软件设计方案介绍软件设计方案流程如下图所示图1-1 软件设计流程图4级m序列的最长周期为15,而(7,4)汉明码所需的数据位是4位,当一个周期的m序列一位一位移出,放入一个长度为4的数组,要分四次组,但还缺少一个数据,使得分组没有周期性,故在程序设计中进行第四次分组时,在数组的最低位补0,使其在一个m 序列周期内正好分为4组。
这样循环移位输出的m序列满足周期性,在观察波形时易于发现误码的现象,一目了然。
分组后的一串数据即数组就进入下一级作为(7,4)编码器的信息位进行编码。
在编码过程中加入监督位。
这样,信息位和监督位就组成了七位码。
经译码后便可输出汉明码的数据位以及译码的m序列。
第2章设计方案的实施2.1 m序列模块2.1.1 m序列简介m序列是最长线性反馈移位寄存器序列的简称,它是由线性反馈的移存器产生的周期最长的序列。
一般说来,一个n级反馈移位寄存器可能产生的最大周期等于(2n-1).现在我们引入m序列的本原多项式的概念。
若一个n次多项式f(x)满足以下条件(1)f(x)为既约的;(2)f(x)可整除(x m+1),m=2n-1;(3)f(x)除不尽(x q+1),q<m 。
则f(x)为本原多项式。
m序列通过线形反馈移位寄存器产生如图:图 2-1 m序列产生原理框图设n级移位寄存器的初始状态:a-1 ,a-2,a-3,a-4,...a-n经过一次移位后,状态变为a0,a1,...a-n+1,经过n次移位以后状态变为a-n-1,a-n-2, (1)a0。
当n=4时,产生的m序列的长度为m=2n-1=15。
我们可以取x4++x+1为本原多项式。
2.1.2 m 序列模块设计流程m 序列流程图:图2-2 m 序列设计流程图在时钟信号触发下,4级m 序列一位一位地移出,因为m 序列的周期长度为15,(7,4)汉明码要求的信息位为4位,周期长度不能整除4,因而在m 序列移出15位后在数组a 中的最后一位添加一CLK`EVENT AND CLK = 1个“0”。
这样一个周期的m 序列就可以周期性的分成4组,易于观察分组码是否正确或波形图是否吻合。
2.2 (7,4)汉明码知识介绍2.2.1基本概念线性分组码是一类重要的纠错码,应用很广泛。
在(n ,k )分组码中,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。
现在以(7,4)分组码为例来说明线性分组码的特点。
设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息码元,后3位是监督码元,可用下列线性方程组来描述该分组码产生监督元:显然,这3个方程是线性无关的。
根据公式2-1可得(7,4)码的全部码组,如表1所示。
表 2-1(7,4)汉明码的全部码组⎪⎩⎪⎨⎧⊕⊕=⊕⊕=⊕⊕=346035614562a a a a a a a a a a a a根据线性码封闭性,再由表1可知(7,4)码的最小码距d0=3,它能纠1个错或检测2个错。
汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距d0=3,码长n 与监督位满足n<=2r -1的关系,说明上述的(7,4)线性分组码就是一个汉明码。