EDA课程设计-脉冲序列检测器的设计.doc

上传人:来看看 文档编号:3258074 上传时间:2019-08-06 格式:DOC 页数:23 大小:3.69MB
返回 下载 相关 举报
EDA课程设计-脉冲序列检测器的设计.doc_第1页
第1页 / 共23页
EDA课程设计-脉冲序列检测器的设计.doc_第2页
第2页 / 共23页
EDA课程设计-脉冲序列检测器的设计.doc_第3页
第3页 / 共23页
EDA课程设计-脉冲序列检测器的设计.doc_第4页
第4页 / 共23页
EDA课程设计-脉冲序列检测器的设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《EDA课程设计-脉冲序列检测器的设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计-脉冲序列检测器的设计.doc(23页珍藏版)》请在三一文库上搜索。

1、摘要:脉冲序列检测器广泛应用于现代数字通信系统中,随着通信技术的发展,对多路脉冲序列信号检测要求越来越高。随着器件复杂程度的提高,电路逻辑图变得过于复杂,不便于设计。VHDL(VHSIC Hardware Description Language)是随着可编程逻辑器件的发展而发展起来的一种硬件描述语言。VHDL具有极强的描述能力,能支持系统行为级、寄存器输级和门级三个不同层次的设计。本文针对传统的脉冲序列检测器方案,提出了一种基于FPGA的脉冲序列检测器设计的新方案,该方案基于当今通讯信息产业的发展,不断追求较低数据传输误码率,其中较为成熟的编码方法如汉明码、奇偶校验码、循环冗余码等编码技术,

2、被广泛应用于计算机、电子通信、控制等各个领域。其中汉明码是一种能够纠正一位错码检测两位错码且编码效率较高的线性分组码。实验模块是采用VHDL语言编写,结合EDA技术基于FPGA在数字逻辑领域的优势和软件设计来实现,本实验包含五个模块,分别为编码模块、译码模块、寄存器模块、序列检测器以及顶层模块,该序列检测器最大的特点是能够在检测传输数据的同时检测到所有一位或两位错码并纠正一位错码数据。关键词: FPGA 硬件描述语言VHDL 序列检测器 汉明码 目录1 FPGA简介 1.1 什么是FPGA(5) 1.2 FPGA由什么构成(6) 1.3 FPGA设计步骤(6) 1.4 硬件描述语言VHDL(1

3、1)2 序列检测器的设计特点及原理 2.1 实验设计的特点(13) 2.2 汉明码编码和译码原理(14)3 系统分析及总体设计 3.1 系统工作过程分析(15) 3.2 系统工作框图(15) 3.3 功能模块的功能介绍(16)4 功能分模块设计 4.1 编码模块(16) 4.2 译码模块 (17) 4.3 特殊寄存器模块 (19) 4.4 序列检测器模块 (20) 4.5 顶层模块 (21)5 硬件的制作与调试(22)6 实验总结(22)7 致谢(22)8 参考文献(23)引言:本创新题目基于当今通讯信息产业的发展,不断追求较低数据传输误码率,编码纠错技术日益成熟的背景下,随着差错控制编码技术

4、的蓬勃发展,作为信道传输过程抗干扰的有效手段,其中较为成熟的编码方法如汉明码、奇偶校验码、循环冗余码等编码技术,被广泛应用于计算机、电子通信、控制等各个领域。脉冲序列检测器在现代数字通信系统中发挥着重要的作用,通过中小规模的数字集成电路构成的传统脉冲序列检测器电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点。因此脉冲序列检测器电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高。随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,

5、尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便。随着ASIC技术、EDA技术的不断完善和发展以及VHDL、HDL等通用性好、移植性强的硬件描述语言的普及,FPGA等可编程逻辑器件必将在现代数字应用系统中得到广泛的应用,发挥越来越重要的作用。 在这种背景下,针对大规模可编程逻辑器件FPGA器件的集成度高、工作速度快、编程方便、价格较低,易于实现设备的可编程设计的特点,用硬件描述语言设计FPGA器件来实现脉冲序列检测器。应用可编程逻辑器件FPGA,来完成高速采编器的功能,具有速度更快、可靠性更高、调试方便的优点,而且电路简单,体积更小,利用VHDL开发的脉冲序列检测器,其通用

6、性和基于模块的设计方法可以节省大量的人力,大大地缩短设计周期,在工程应用中已经取得了显著的效果。可见,基于FPGA的脉冲序列检测器的设计是现代数字通信的发展要求,从而使得其具有更好的发展前景和使用价值。1、FPGA简介1.1 什么是FPGAFPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以

7、经过简 单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。 FPGA一般来说比ASIC(专用集成芯片)的速度要

8、慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。它的特点有:(1)采用FPGA设计ASIC电路(特定用途集成电路),用户不需要投片生产,就能得到合用的芯片。 (2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 (3)FPGA内部有丰富的触发器和IO引脚。 (4)FPGA是ASIC电路中设

9、计周期最短、开发费用最低、风险最小的器件之一。 (5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。1.2 FPGA由什么构成通常FPGA由布线资源分隔的可编程逻辑单元构成陈列,又由可编程I/O单元围绕陈列构成整个芯片,排成陈列的逻辑单元由布线通道中的可编程内敛线连接起来实现一定逻辑的功能。FPGA 的内部结构大致分为5 个部分: 均匀分布的逻辑块组成的逻辑阵列, 输入I/O输出块( I/O块) , 连线资源,全局网络, 嵌入式资源。FPGA 器件的组合逻辑块是查找表结构。I/O 块可以配置成各种输入、输出模式。连线资源用于将不同的逻辑块连接起来。全局网络是连线资源

10、中的特殊连线, 其性能比普通连线要好得多, 它延伸到器件内所有的资源位置。全局网络一般分配给时钟信号, 构成时钟树。有时也可以分配给复位信号、使能信号或者其他特殊信号。目前我们使用的的可编程逻辑单元一般由查找表和触发器构成。下图所示即为Cyclone系列的FPGA芯片的逻辑单元(LE)组成.图1.1 FPGA芯片的逻辑单元图1.3 FPGA设计步骤FPGA 设计流程包括系统设计和设计实现, 系统方案完成之后即进入设计实现阶段的工作, 它以系统方案为输入, 进行RTL 级描述、功能仿真(RTL 级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、

11、系统验证一系列流程的处理才能完成FPGA芯片的设计, 其设计流程如下图 所示。需要说明的是, 如果仿真验证不对或者到走某一步有错, 就要返回修改。有必要检查和修改的地方有RTL 级描述、系统方案、约束和测试激励等。一般情况下, 对RTL 级的描述即原理图或者HDL 设计代码的修改最多也最有效。修改后要重新走一遍流程。有时要反复修改, 经过多次这样的迭代才能完成最后的设计。图1.2 FPGA设计流程图在理论上, 把VLSI (Ultra Large Scale Integration, 超大规模集成电路) 的设计描述为6 个层次 , 即系统级(系统功能、参数定义)、算法级(描述系统功能行为)、R

12、TL 级、门级(逻辑门)、电路级(晶体管)、版图级(物理工艺)。每一级又都分3 个侧面来描述: 行为域描述、结构域描述、物理域描述。但在实际情况中往往把算法级行为域描述或者RTL 级行为域描述都称为行为级描述。对于FPGA 的设计而言, 我们不需要关心电路级和版图级, 只考虑系统级、算法级、RTL 级、门级4 个层次的行为域描述和结构域描述即可。本文上述的FPGA 系统设计中的系统实际上是指系统级和算法级, 而“RTL 级描述”主要是指RTL级行为域的描述。在门级, 由综合工具产生的门级网表来描述。FPGA 的设计流程和相关概念说明如下:库: 指FPGA 器件厂家提供的工艺库和EDA 工具提供

13、的标准通用库(如IEEE 库等)。工艺库中有各种宏功能模块和基本功能单元, 含有它们的行为级模型、门级模型、布线模型等信息。需要说明的是, 系统行为仿真和RTL 级功能仿真有时要用到某种功能模块, 例如RAM 模型。对于RAM 模型的控制信号, 不同的厂家其规定不一定相同, 如写使能信号, 有的厂家规定高电平有效, 有的厂家规定低电平有效。其实, 在厂家提供的工艺库中, RAM 模型有行为级模型、门级模型、版图级模型等。而行为级模型只是规定其功能, 无延时信息, 跟工艺无关, 但门级模型和版图级模型跟工艺密切相关。解决的方法是系统行为仿真时可以使用高级语言自己建立一个模型或者调用厂家库中提供的

14、行为级模型, 功能仿真时调用行为级模型, 时序仿真时调用门级模型。测试激励: 指测试文件, 它调用FPGA 设计的顶层模块,同时产生顶层模块需要的输入信号, 称之为激励信号, 使用行为描述即可, 不要求可综合。仿真时它作为最顶层的文件, 从而可以观察FPGA 的输出是否正确。所有的仿真都可使用同一个测试激励。约束: 指对逻辑综合和布局布线时的约束。包括器件型号、速度、面积、功耗、引脚分配、时钟网络资源的分配、模块在器件中的定位等约束。一部分在软件中设置, 一部分以约束文件的形式存在。(1) 系统行为描述: 是指使用硬件描述语言HDL (Hardware Description Language

15、) 语句的全集来描述算法, 模拟系统的行为和功能, 不要求所有的语句都能够综合成电路。事实上, 有的语句是专为描述行为而创建的, 不能综合(即不能用电路来实现其功能)。也可以使用高级语言如C 来进行描述,此时往往要配合专用的系统设计工具来进行描述与仿真, 如SPW 等。这种系统算法级行为域的描述可以尽量使用最简洁的语句而不必过多地考虑其硬件实现的诸因素, 所以能较快建立系统行为模型, 进行行为仿真。(2) 系统行为仿真: 主要用来验证系统方案是否正确、是否有缺陷, 并可根据仿真的结果来优化系统方案和算法。它使用系统行为描述代码、测试激励、行为级模型库等为输入, 利用专用的仿真工具或者系统设计软

16、件来进行功能仿真和优化。(3) RTL 级描述: 指原理图(结构描述) 或者使用可综合的HDL 语句来描述的设计(一般是行为描述)。EDA 综合软件只能将RTL 级描述综合成逻辑电路。利用综合软件可以检查出所写的代码是否是RTL 级代码。对简单的设计而言, 可以直接从RTL 级开始设计, 但对大规模的设计, 最好先写系统行为级代码进行行为仿真。如果系统行为仿真正确, 就可以将行为级代码转化为RTL 级代码。这种转化称之为高层次综合或者行为级综合。转化的方法有2 种: 一是使用高层次综合工具自动转化, 例如SYNO PSYS 公司的Behavior Compiler3 ; 二是使用手工方法转化。

17、手工方法使用很普遍, 原因是目前高层次综合的理论和方法还不成熟, 其工具难求或者其性能没有手工方法好。(4) 功能仿真: 也叫RTL 级仿真, 是指不考虑延时信息的一种仿真, 只能验证RTL 级的行为描述是否能达到所要求的功能。功能仿真需要的输入是RTL 级代码、测试激励和库(有时要调用工艺库中宏功能单元的行为级模型)。可利用专用的仿真工具进行仿真, 如ModelSim,VCS 等工具。如果仿真不对, 则需要检查和修改RTL 级代码或者测试激励甚至系统方案。仿真的过程是先对源代码进行编译, 检查是否有语法错误。如果没有错误, 就将源代码转换为一种中间格式, 便于仿真工具的内部运算。编译的结果自

18、动存放在一个指定的工作目录中, 仿真的结果主要以波形文件的形式存放。(5) 逻辑综合: 逻辑综合是将RTL 级的行为描述转化为使用门级单元的结构描述。门级的结构描述称之为网表。网表文件主要记录的是所用工艺库门级单元之间的互连关系(即门级结构)。综合的输入需要RTL 级描述、约束和工艺库。综合时所加的约束一般比较简单, 如时钟频率、器件型号和其他综合设置等。综合的过程是translate (转换) + map (映射) +optimize (优化)。转换是将RTL 级行为描述转化为RTL 级结构描述(使用与工艺无关的通用逻辑门符号表示)。映射是将转换后的结果使用工艺库门级单元的连接关系来表示,

19、并根据需要进行优化, 形成网表文件。映射是对某种目标器件而言的一种资源分配和优化操作。一般综合工具能将转换后的结果显示为RTL 级原理图, 也能将网表显示为门级原理图。网表文件中含门级单元的延时信息, 对连线延时有预估值或者为零, 不同的软件处理的方法可能不同, 暂称之为网表文件1。网表文件的格式可以表示成标准格式(edif) , 也可以表示成VHDL 或者Verilog_ HDL 格式(在综合工具中设置)。综合报告文件中含所用逻辑资源、预估出的时钟最高频率、关键路径(延时最长的路径, 可在软件中显示) 等信息。(6) 布线前门级仿真: 是门级功能仿真, 一般不考虑延时。该仿真的输入需要综合后

20、的门级网表、工艺库和测试激励。有的EDA 工具不提供此仿真功能, 可以不做。(7) 适配(布局布线) : 适配就是将网表文件映射到目标器件中的一种操作, 是对目标器件的第二次映射(第一次映射是综合)。即对网表中的每一个门级单元在器件中定位(布局) ,并使用器件内的连线资源按照网表中的连接关系连接起来(布线) 同时要满足引脚分配、时钟线的分配等约束条件。适配的输入需要网表文件1、工艺库(要使用其中的布线模型等信息) 和约束。适配所加的约束比较多, 如引脚分配、时钟树的分配、模块在器件中的定位等。适配后产生的文件有网表文件2、反标文件和编程文件等。根据适配工具和适配设置的不同, 产生的网表文件2

21、可以具有不同的格式并可以设置为包含延时信息(包括门延时和线延时)。反标文件含延时信息, 使用标准格式(SDF 格式) 表示。编程文件用于对器件编程下载。(8) 时序仿真: 是最接近真实情况的一种仿真, 因为该仿真含所有的延时信息和约束信息(约束信息包含在网表文件2中)。时序仿真的输入需要测试激励、工艺库门级单元模型、网表文件2 和反标文件。如果网表文件2 中含有延时信息, 则不需要反标文件。时序仿真的结果跟延时关系极大。延时跟工艺有关, 特别是深亚微米工艺, 线延时大大超过门延时, 所以总延时跟布局布线关系极大。如果仿真结果不对, 要从约束、综合、布局布线、RTL 级代码等环节上找原因, 也可

22、以借助时序分析工具找原因。(9) 时序分析: 使用EDA 软件的时序分析功能能够分析所有时钟的频率、周期、关键路径和其他所有时钟路径上的延时信息, 进行建立时间和保持时间分析和输入到输出、输入到寄存器、寄存器到输出的延时分析等, 从而可以找出不满足时序关系的原因所在。时序分析是一个辅助功能, 有时可以不做。(10) 器件编程: 指将适配后产生的编程文件下载到FPGA/PLD 器件中。下载的过程就是一个改写器件内逻辑结构的过程, 故称之为编程。下载使用专用的编程器或者下载电缆。器件的编程接口一般使用10 针JTA G 插座。习惯上, 对CPLD 器件的下载叫编程, 对FPGA 器件的下载叫配置。

23、CPLD 器件基于EEPROM 工艺或者FLA SH 工艺, 掉电后信息不丢失。而FGA P 器件基于SRAM 查找表工艺, 掉电后编程信息会丢失, 在下次上电后需要重新加载编程文件。配置方式有多种模式, 较常用的是PS 模式(调试时用) 和使用配置器件模式(产品中使用) , 它是使用一个EPROM 型的配置芯片, 先将编程数据烧写到配置芯片中, 配置芯片跟FPGA 使用专用接口引脚相连。这样, 上电后配置芯片自动给FPGA 加载编程数据。也可使用单片机进行配置。 (11) 系统验证: 先将FPGA 芯片在测试板上进行功能验证, 然后再到实际系统中验证。系统验证通过后就可以在产品中使用。至此,

24、 FPGA 芯片设计完成。1.4、硬件描述语言VHDLVHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Description Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC.VHDL主要

25、用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 底层嵌入功能单元:底层嵌入功能单元是指那些通用程度较高的嵌入式功能模块,比如PLL(phase Locked Lo

26、op)、 DLL(Delay Locked Loop)、DSP、CPU等。本设计中用到了PLL嵌入式单元,该模块单元是通过开发平台的IP核生成器自动生成的(内嵌专用硬核里的内嵌专用硬核是有别于底层嵌入功能单元的,主要是指那些通用性相对较弱、不是所有FPGA器件都包括的硬核)。与其他硬件描述语言相比,VHDL具有以下特点: (1)功能强大、设计灵活VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既

27、支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。 (2)支持广泛、易于修改由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。 (3)强大的系统硬件描述能力VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电

28、路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。 (4)独立于器件的设计、与工艺无关设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。 (5)很强的移植能力VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。 (6)易于共享和复用VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就

29、可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。2、序列检测器的设计特点及原理2.1实验设计的特点 (1)采用FPGA技术实现, 本创新型实验使用现在先进的热门的FPGA技术作为设计和实现手段。FPGA作为新兴的现代技术,在性能、速度、集成度,应用灵活性等方面都远远优越于Asics,内部资源丰富,从某种意义上说,新的电子系统运转的物理机制又将回到原来的纯数字电路结构,但却是一种更高层次的循环,它在更高层次上容纳了过去数字技术的优秀部分,对(Micro Chip Unit) MCU系统是一种扬弃,并兼有串、并行工作方式,高速、高可靠性以及宽口径适用性等诸

30、多方面的特点。 (2)实现汉明码编码器和译码器的集成化芯片化,本设计将汉明码的编码功能模块和译码功能模块集成于一体,实现功能的集成化,这为编码译码功能的使用提供了方便。同时,实现了设计成品的芯片化,将其功能集成在芯片之上,摆脱了过去用实际逻辑和模拟电路来实现设计的传统约束,功能的集成也提高了芯片资源的利用率。2.2汉明码编码和译码原理(1)本实验采用(8,4)编码即扩展汉明码,扩展汉明码实质上是在原汉明码,即(7,4)码的基础上,在每个码组后面增加1位偶监督码元,原汉明码中码重W=3的码字,扩展后变成码重W=4的码字,故最小码距也将由d0=3变为d0=4。编码方式如下表所示: 表2.1 (8,

31、4)编码方案位信息数据位12345678代码P1P2D8P3D4D2D1O说明第1个汉明码第2个汉明码第1个数据码第3个汉明码第2个数据码第3个数据码第4个数据码偶监督元注:P 代表校验位;D 代表数据位;O代表偶监督元 (2)汉明码编码原理:(8,4)增余汉明码全码码元数n=8,其中信息码元数k=4.监督码元数d=4,其监督矩阵为: 图2.1 监督矩阵 对于任何给定的信息码组,都可以由下式求出相应的监督码元,即: 图2.2 编码监督码元矩阵乘法 若用方程式来表示,则上式可写成:X5=X2+X3+X4;X6=X1+X3+X4 ;X7=X1+X2+X4; X8=X1+X2+X3(注:这里+代表异

32、或),从而形成的全码X1,X2,X3,X4,X5,X6,X7,X8,这就是(8,4)增余汉明码的编码过程。 (3)汉明码译码原理:译码矩阵应满足如下要求: 图2.3 译码监督码元矩阵乘法 可得:S1=X22+X33+X44+X55 S2=X11+X33+X44+X66 S3=X11+X22+X44+X77 S4=X11+X22+X33+X44+X55+X66+X77+X88(S1,S2,S3,S4)为(8,4)增余汉明码的校验子。当(S1,S2,S3,S4)=0000时,传送无误;当S1S2S3S4为偶数时,可判接收到的全码中有两位错误,但不能判断那两位错,可要求发送方重新发送全码;当S1S2

33、S3S4为奇数时,可根据表1判断哪一位错,然后通过纠错模块来纠错,完成译码过程。 表 2.2 (8,4)汉明码校验参数错位S1S2S3S4错位S1S2S3S410111510012101160101311017001141111800013 系统分析及总体设计3.1系统工作过程分析 根据编码和译码的需要,选择编码模块和译码模块,编码时,将要编码的数据(4位二进制)输入到编码模块的输入端,使能端置于有效位,则在编码模块的输出端即可得到编译码(8位二进制)。译码时同样可得,将要译的码(8位二进制)输入到译码模块的输入端,使能有效,则当码字正确无错误时,输出译码(4为二进制),无措输出端置有效电平;

34、当码字有一位码发生错误时,译码模块中的纠错环节自动纠正,同时,无措输出端报错,一位错输出端置有效电平;当码字有两位以上错误时,重传置位端置有效电平,要求输入端重发数据。3.2 系统工作框图 图 3.1 系统工作框图 3.3 功能模块的功能介绍 1.编码模块: 完成对输入4位预编码数据的编码过程,产生对应的8位汉明码; 2.译码核心模块: 完成对输入8位待校验数据的译码过程,产生对应的4位信息源码,并给出错位指示;3.顶层模块:对整体系统的编码、译码、读编码数据、读译码数据的功能的整体设计;4.功能分模块设计4.1编码模块(主要程序)ARCHITECTURE ver2 OF hamenc IS

35、SIGNAL p0, p1, p2, p3 : std_logic; BEGIN process(clk,en,datain)begin if(en=1) then p0 = datain(0) XOR datain(1) XOR datain(2); p1 = datain(0) XOR datain(1) XOR datain(3); p2 = datain(0) XOR datain(2) XOR datain(3); p3 = datain(1) XOR datain(2) XOR datain(3); if(clkevent and clk=1) then H(3 DOWNTO 0)

36、 = (p3, p2, p1, p0); L(3 DOWNTO 0) = datain(3 DOWNTO 0); end if; else L=ZZZZ;H=ZZZZ;end if; end process;end ver2;图4.1 编码波形图对波形图说明4.2译码模块(主要程序) ARCHITECTURE ver1 OF hamdec IS signal ne1:std_logic; signal one1:std_logic; signal req1:std_logic; signal dat:std_logic_vector(3 DOWNTO 0); BEGIN PROCESS(clk

37、,en,hamin) VARIABLE syndrome : std_logic_VECTOR(3 DOWNTO 0); BEGIN if (en=1) then syndrome(0) := hamin(0) XOR hamin(1) XOR hamin(2) XOR hamin(3) XOR hamin(4) XOR hamin(5) XOR hamin(6) XOR hamin(7); syndrome(1) := hamin(0) XOR hamin(1) XOR hamin(3) XOR hamin(5); syndrome(2) := hamin(0) XOR hamin(2) X

38、OR hamin(3) XOR hamin(6); syndrome(3) := hamin(1) XOR hamin(2) XOR hamin(3) XOR hamin(7); IF (syndrome = 0000) THEN -no errors ne1 = 1; one1 = 0; req1 = 0; dat(3 DOWNTO 0) = hamin(3 DOWNTO 0); ELSIF (syndrome(0) = 1) THEN -single bit error ne1 = 0; one1= 1; req1 dat(3 DOWNTO 0) dat(0) = NOT hamin(0)

39、; dat(3 DOWNTO 1) dat(1) = NOT hamin(1); dat(0) = hamin(0); dat(3 DOWNTO 2) dat(2) = NOT hamin(2); dat(3) = hamin(3); dat(1 DOWNTO 0) dat(3) = NOT hamin(3); dat(2 DOWNTO 0) = hamin(2 DOWNTO 0); END CASE; ELSIF (syndrome(0) = 0) AND (syndrome(3 DOWNTO 1) /= 000) THEN ne1 = 0; one1 = 0; req1 = 1; dat(3 DOWNTO 0) = 0000; END IF; if(clkevent and clk=1)then ne=ne1; one=one1; req=req1; dataout(3 DOWNTO 0)=dat(3 DOWNTO 0); end if; else dataout=ZZZZ; ne=Z; one=Z; req=Z; end if; END PROCESS;END ver1; 图4.2 译码波形图说明:输入为clk、datain、dec_en输出为dec_out、chongfa、onef和right,通过dec_en来控制译码器译码4.3特殊寄存器模块

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

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1