EDA课程设计脉冲序列检测器的设计.docx
《EDA课程设计脉冲序列检测器的设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计脉冲序列检测器的设计.docx(25页珍藏版)》请在冰豆网上搜索。
EDA课程设计脉冲序列检测器的设计
摘要:
脉冲序列检测器广泛应用于现代数字通信系统中,随着通信技术的发展,对多路脉冲序列信号检测要求越来越高。
随着器件复杂程度的提高,电路逻辑图变得过于复杂,不便于设计。
VHDL(VHSICHardwareDescriptionLanguage)是随着可编程逻辑器件的发展而发展起来的一种硬件描述语言。
VHDL具有极强的描述能力,能支持系统行为级、寄存器输级和门级三个不同层次的设计。
本文针对传统的脉冲序列检测器方案,提出了一种基于FPGA的脉冲序列检测器设计的新方案,该方案基于当今通讯信息产业的发展,不断追求较低数据传输误码率,其中较为成熟的编码方法如汉明码、奇偶校验码、循环冗余码等编码技术,被广泛应用于计算机、电子通信、控制等各个领域。
其中汉明码是一种能够纠正一位错码检测两位错码且编码效率较高的线性分组码。
实验模块是采用VHDL语言编写,结合EDA技术基于FPGA在数字逻辑领域的优势和软件设计来实现,本实验包含五个模块,分别为编码模块、译码模块、寄存器模块、序列检测器以及顶层模块,该序列检测器最大的特点是能够在检测传输数据的同时检测到所有一位或两位错码并纠正一位错码数据。
关键词:
FPGA硬件描述语言VHDL序列检测器汉明码
1FPGA简介
什么是FPGA………………………………………………………………(5)
1.2FPGA由什么构成…………………………………………………………(6)
1.3FPGA设计步骤……………………………………………………………(6)
1.4硬件描述语言VHDL………………………………………………………(11)
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)
引言:
本创新题目基于当今通讯信息产业的发展,不断追求较低数据传输误码率,编码纠错技术日益成熟的背景下,随着差错控制编码技术的蓬勃发展,作为信道传输过程抗干扰的有效手段,其中较为成熟的编码方法如汉明码、奇偶校验码、循环冗余码等编码技术,被广泛应用于计算机、电子通信、控制等各个领域。
脉冲序列检测器在现代数字通信系统中发挥着重要的作用,通过中小规模的数字集成电路构成的传统脉冲序列检测器电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点。
因此脉冲序列检测器电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高。
随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便。
随着ASIC技术、EDA技术的不断完善和发展以及VHDL、HDL等通用性好、移植性强的硬件描述语言的普及,FPGA等可编程逻辑器件必将在现代数字应用系统中得到广泛的应用,发挥越来越重要的作用。
在这种背景下,针对大规模可编程逻辑器件FPGA器件的集成度高、工作速度快、编程方便、价格较低,易于实现设备的可编程设计的特点,用硬件描述语言设计FPGA器件来实现脉冲序列检测器。
应用可编程逻辑器件FPGA,来完成高速采编器的功能,具有速度更快、可靠性更高、调试方便的优点,而且电路简单,体积更小,利用VHDL开发的脉冲序列检测器,其通用性和基于模块的设计方法可以节省大量的人力,大大地缩短设计周期,在工程应用中已经取得了显著的效果。
可见,基于FPGA的脉冲序列检测器的设计是现代数字通信的发展要求,从而使得其具有更好的发展前景和使用价值。
1、FPGA简介
1.1什么是FPGA
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)。
它的特点有:
(1)采用FPGA设计ASIC电路(特定用途集成电路),用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
1.2FPGA由什么构成
通常FPGA由布线资源分隔的可编程逻辑单元构成陈列,又由可编程I/O单元围绕陈列构成整个芯片,排成陈列的逻辑单元由布线通道中的可编程内敛线连接起来实现一定逻辑的功能。
FPGA的内部结构大致分为5个部分:
均匀分布的逻辑块组成的逻辑阵列,输入I/O输出块(I/O块),连线资源,全局网络,嵌入式资源。
FPGA器件的组合逻辑块是查找表结构。
I/O块可以配置成各种输入、输出模式。
连线资源用于将不同的逻辑块连接起来。
全局网络是连线资源中的特殊连线,其性能比普通连线要好得多,它延伸到器件内所有的资源位置。
全局网络一般分配给时钟信号,构成时钟树。
有时也可以分配给复位信号、使能信号或者其他特殊信号。
目前我们使用的的可编程逻辑单元一般由查找表和触发器构成。
下图所示即为Cyclone系列的FPGA芯片的逻辑单元(LE)组成.
图1.1FPGA芯片的逻辑单元图
1.3FPGA设计步骤
FPGA设计流程包括系统设计和设计实现,系统方案完成之后即进入设计实现阶段的工作,它以系统方案为输入,进行RTL级描述、功能仿真(RTL级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、系统验证一系列流程的处理才能完成FPGA芯片的设计,其设计流程如下图所示。
需要说明的是,如果仿真验证不对或者到走某一步有错,就要返回修改。
有必要检查和修改的地方有RTL级描述、系统方案、约束和测试激励等。
一般情况下,对RTL级的描述即原理图或者HDL设计代码的修改最多也最有效。
修改后要重新走一遍流程。
有时要反复修改,经过多次这样的迭代才能完成最后的设计。
图1.2FPGA设计流程图
在理论上,把VLSI(UltraLargeScaleIntegration,超大规模集成电路)的设计描述为6个层次,即系统级(系统功能、参数定义)、算法级(描述系统功能行为)、RTL级、门级(逻辑门)、电路级(晶体管)、版图级(物理工艺)。
每一级又都分3个侧面来描述:
行为域描述、结构域描述、物理域描述。
但在实际情况中往往把算法级行为域描述或者RTL级行为域描述都称为行为级描述。
对于FPGA的设计而言,我们不需要关心电路级和版图级,只考虑系统级、算法级、RTL级、门级4个层次的行为域描述和结构域描述即可。
本文上述的FPGA系统设计中的系统实际上是指系统级和算法级,而“RTL级描述”主要是指RTL级行为域的描述。
在门级,由综合工具产生的门级网表来描述。
FPGA的设计流程和相关概念说明如下:
库:
指FPGA器件厂家提供的工艺库和EDA工具提供的标准通用库(如IEEE库等)。
工艺库中有各种宏功能模块和基本功能单元,含有它们的行为级模型、门级模型、布线模型等信息。
需要说明的是,系统行为仿真和RTL级功能仿真有时要用到某种功能模块,例如RAM模型。
对于RAM模型的控制信号,不同的厂家其规定不一定相同,如写使能信号,有的厂家规定高电平有效,有的厂家规定低电平有效。
其实,在厂家提供的工艺库中,RAM模型有行为级模型、门级模型、版图级模型等。
而行为级模型只是规定其功能,无延时信息,跟工艺无关,但门级模型和版图级模型跟工艺密切相关。
解决的方法
是系统行为仿真时可以使用高级语言自己建立一个模型或者调用厂家库中提供的行为级模型,功能仿真时调用行为级模型,时序仿真时调用门级模型。
测试激励:
指测试文件,它调用FPGA设计的顶层模块,同时产生顶层模块需要的输入信号,称之为激励信号,使用行为描述即可,不要求可综合。
仿真时它作为最顶层的文件,从而可以观察FPGA的输出是否正确。
所有的仿真都可使用同一个测试激励。
约束:
指对逻辑综合和布局布线时的约束。
包括器件型号、速度、面积、功耗、引脚分配、时钟网络资源的分配、模块在器件中的定位等约束。
一部分在软件中设置,一部分以约束文件的形式存在。
(1)系统行为描述:
是指使用硬件描述语言HDL(HardwareDescriptionLanguage)语句的全集来描述算法,模拟系统的行为和功能,不要求所有的语句都能够综合成电路。
事实上,有的语句是专为描述行为而创建的,不能综合(即不能用电路来实现其功能)。
也可以使用高级语言如C来进行描述,此时往往要配合专用的系统设计工具来进行描述与仿真,如SPW等。
这种系统算法级行为域的描述可以尽量使用最简洁的语句而不必过多地考虑其硬件实现的诸因素,所以能较快建立系统行为模型,进行行为仿真。
(2)系统行为仿真:
主要用来验证系统方案是否正确、是否有缺陷,并可根据仿真的结果来优化系统方案和算法。
它使用系统行为描述代码、测试激励、行为级模型库等为输入,利用专用的仿真工具或者系统设计软件来进行功能仿真和优化。
(3)RTL级描述:
指原理图(结构描述)或者使用可综合的HDL语句来描述的设计(一般是行为描述)。
EDA综合软件只能将RTL级描述综合成逻辑电路。
利用综合软件可以检查出所写的代码是否是RTL级代码。
对简单的设计而言,可以直接从RTL级开始设计,但对大规模的设计,最好先写系统行为级代码进行行为仿真。
如果系统行为仿真正确,就可以将行为级代码转化为RTL级代码。
这种转化称之为高层次综合或者行为级综合。
转化的方法有2种:
一是使用高层次综合工具自动转化,例如SYNOPSYS公司的BehaviorCompiler[3];二是使用手工方法转化。
手工方法使用很普遍,原因是目前高层次综合的理论和方法还不成熟,其工具难求或者其性能没有手工方法好。
(4)功能仿真:
也叫RTL级仿真,是指不考虑延时信息的一种仿真,只能验证RTL级的行为描述是否能达到所要求的功能。
功能仿真需要的输入是RTL级代码、测试激励和库(有时要调用工艺库中宏功能单元的行为级模型)。
可利用专用的仿真工具进行仿真,如ModelSim,VCS等工具。
如果仿真不
对,则需要检查和修改RTL级代码或者测试激励甚至系统方案。
仿真的过程是先对源代码进行编译,检查是否有语法错误。
如果没有错误,就将源代码转换为一种中间格式,便于仿真工具的内部运算。
编译的结果自动存放在一个指定的工作目录中,仿真的结果主要以波形文件的形式存放。
(5)逻辑综合:
逻辑综合是将RTL级的行为描述转化为使用门级单元的结构描述。
门级的结构描述称之为网表。
网表文件主要记录的是所用工艺库门级单元之间的互连关系(即门级结构)。
综合的输入需要RTL级描述、约束和工艺库。
综合时所加的约束一般比较简单,如时钟频率、器件型号和其他综合设置等。
综合的过程是translate(转换)+map(映射)+optimize(优化)。
转换是将RTL级行为描述转化为RTL级结构描述(使用与工艺无关的通用逻辑门符号表示)。
映射是将转换后的结果使用工艺库门级单元的连接关系来表示,并根据需要进行优化,形成网表文件。
映射是对某种目标器件而言的一种资源分配和优化操作。
一般综合工具能将转换后的结果显示为RTL级原理图,也能将网表显示为门级原理图。
网表文件中含门级单元的延时信息,对连线延时有预估值或者为零,不同的软件处理的方法可能不同,暂称之为网表文件1。
网表文件的格式可以表示成标准格式(edif),也可以表示成VHDL或者Verilog_HDL格式(在综合工具中设置)。
综合报告文件中含所用逻辑资源、预估出的时钟最高频率、关键路径(延时最长的路径,可在软件中显示)等信息。
(6)布线前门级仿真:
是门级功能仿真,一般不考虑延时。
该仿真的输入需要综合后的门级网表、工艺库和测试激励。
有的EDA工具不提供此仿真功能,可以不做。
(7)适配(布局布线):
适配就是将网表文件映射到目标器件中的一种操作,是对目标器件的第二次映射(第一次映射是综合)。
即对网表中的每一个门级单元在器件中定位(布局),并使用器件内的连线资源按照网表中的连接关系连接起来(布线)同时要满足引脚分配、时钟线的分配等约束条件。
适配的输入需要网表文件1、工艺库(要使用其中的布线模型等信息)和约束。
适配所加的约束比较多,如引脚分配、时钟树的分配、模块在器件中的定位等。
适配后产生的文件有网表文件2、反标文件和编程文件等。
根据适配工具和适配设置的不同,产生的网表文件2可以具有不同的格式并可以设置为包含延时信息(包括门延时和线延时)。
反标文件含延时信息,使用标准格式(SDF格式)表示。
编程文件用于对器件编程下载。
(8)时序仿真:
是最接近真实情况的一种仿真,因为该仿真含所有的延时信息和约束信息(约束信息包含在网表文件2中)。
时序仿真的输入需要测试激励、工艺库门级单元模型、网表文件2和反标文件。
如果网表文件2中含有延时信息,则不需要反标文件。
时序仿真的结果跟延时关系极大。
延时跟工艺有关,特别是深亚微米工艺,线延时大大超过门延时,所以总延时跟布局布线关系极大。
如果仿真结果不对,要从约束、综合、布局布线、RTL级代码等环节上找原因,也可以借助时序分析工具找原因。
(9)时序分析:
使用EDA软件的时序分析功能能够分析所有时钟的频率、周期、关键路径和其他所有时钟路径上的延时信息,进行建立时间和保持时间分析和输入到输出、输入到寄存器、寄存器到输出的延时分析等,从而可以找出不满足时序关系的原因所在。
时序分析是一个辅助功能,有时可以不做。
(10)器件编程:
指将适配后产生的编程文件下载到FPGA/PLD器件中。
下载的过程就是一个改写器件内逻辑结构的过程,故称之为编程。
下载使用专用的编程器或者下载电缆。
器件的编程接口一般使用10针JTAG插座。
习惯上,对CPLD器件的下载叫编程,对FPGA器件的下载叫配置。
CPLD器件基于EEPROM工艺或者FLASH工艺,掉电后信息不丢失。
而FGAP器件基于SRAM查找表工艺,掉电后编程信息会丢失,在下次上电后需要重新加载编程文件。
配置方式有多种模式,较常用的是PS模式(调试时用)和使用配置器件模式(产品中使用),它是使用一个EPROM型的配置芯片,先将编程数据烧写到配置芯片中,配置芯片跟FPGA使用专用接口引脚相连。
这样,上电后配置芯片自动给FPGA加载编程数据。
也可使用单片机进行配置。
(11)系统验证:
先将FPGA芯片在测试板上进行功能验证,然后再到实际系统中验证。
系统验证通过后就可以在产品中使用。
至此,FPGA芯片设计完成。
1.4、硬件描述语言VHDL
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
VHDL的英文全写是:
VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage.翻译成中文就是超高速集成电路硬件描述语言。
因此它的应用主要是应用在数字电路的设计中。
目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。
当然在一些实力较为雄厚的单位,它也被用来设计ASIC.VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
底层嵌入功能单元:
底层嵌入功能单元是指那些通用程度较高的嵌入式功能模块,比如PLL(phaseLockedLoop)、DLL(DelayLockedLoop)、DSP、CPU等。
本设计中用到了PLL嵌入式单元,该模块单元是通过开发平台的IP核生成器自动生成的(内嵌专用硬核里的内嵌专用硬核是有别于底层嵌入功能单元的,主要是指那些通用性相对较弱、不是所有FPGA器件都包括的硬核)。
与其他硬件描述语言相比,VHDL具有以下特点:
(1)功能强大、设计灵活
VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。
它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。
VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。
VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。
(2)支持广泛、易于修改
由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。
在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。
(3)强大的系统硬件描述能力
VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。
而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。
另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。
VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。
(4)独立于器件的设计、与工艺无关
设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。
当设计描述完成后,可以用多种不同的器件结构来实现其功能。
(5)很强的移植能力
VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。
(6)易于共享和复用
VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。
这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。
2、序列检测器的设计特点及原理
(1)采用FPGA技术实现,本创新型实验使用现在先进的热门的FPGA技术作为设计和实现手段。
FPGA作为新兴的现代技术,在性能、速度、集成度,应用灵活性等方面都远远优越于Asics,内部资源丰富,从某种意义上说,新的电子系统运转的物理机制又将回到原来的纯数字电路结构,但却是一种更高层次的循环,它在更高层次上容纳了过去数字技术的优秀部分,对(MicroChipUnit)MCU系统是一种扬弃,并兼有串、并行工作方式,高速、高可靠性以及宽口径适用性等诸多方面的特点。
(2)实现汉明码编码器和译码器的集成化芯片化,本设计将汉明码的编码功能模块和译码功能模块集成于一体,实现功能的集成化,这为编码译码功能的使用提供了方便。
同时,实现了设计成品的芯片化,将其功能集成在芯片之上,摆脱了过去用实际逻辑和模拟电路来实现设计的传统约束,功能的集成也提高了芯片资源的利用率。
(1)本实验采用(8,4)编码即扩展汉明码,扩展汉明码实质上是在原汉明码,即(7,4)码的基础上,在每个码组后面增加1位偶监督码元,原汉明码中码重W=3的码字,扩展后变成码重W=4的码字,故最小码距也将由d0=3变为d0=4。
编码方式如下表所示:
表2.1(8,4)编码方案位信息
数据位
1
2
3
4
5
6
7
8
代码
P1
P2
D8
P3
D4
D2
D1
O
说明
第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+