毕业设计论文基于fpga的序列检测器的设计管理资料.docx
《毕业设计论文基于fpga的序列检测器的设计管理资料.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于fpga的序列检测器的设计管理资料.docx(45页珍藏版)》请在冰豆网上搜索。
毕业设计论文基于fpga的序列检测器的设计管理资料
1绪论
序列检测是指将一个指定的序列从数字流中识别出来或在主串中查询相应子串,脉冲序列检测器广泛应用于现代数字通信系统中,在数字通信时,为了保证信息的可靠传输,一般需要在发送端加入固定的同步码组,而在接收端则需要检测该同步码组,保证信息的可靠接收。
接收端的同步码检测器就是用来检测同步码组的电路,中间用到的码型检测电路部分实际上就是一个脉冲序列信号检测器。
序列检测器广泛应用于数据通讯、雷达和遥测等领域。
传统的脉冲序列检测器,它的实现方法是把一个算法转化为一个实际数字逻辑电路的过程。
在这个过程中,我们所得到的结果大概一致,但是在具体设计方法和性价比上存在着一定的差异,存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点。
而利用FPGA作为硬件电路,采用VHDL等硬件描述语言对硬件的功能进行编程,加快了系统的研发进程,采用数字化的控制方式,大幅度提高了逻辑控制的精确度,实时控制效果好,实践证明,FPGA芯片可以代替传统的复杂的电路,而且可以大比例地缩小了电路的硬件规模,提高了集成度,降低开发成本,提高系统的可靠性,为脉冲序列检测器电路的设计开辟了新的天地。
脉冲序列检测器在现代数字通信系统中发挥着重要的作用,通过中小规模的数字集成电路构成的传统脉冲序列检测器电路往往存在电路设计复杂、体积大、抗干扰能力差以及设计困难、设计周期长等缺点。
因此脉冲序列检测器电路的模块化、、重量减轻且功耗降低,同时可使系统的可靠性大大提高。
随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具[1]给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便。
随着ASIC技术、EDA技术的不断完善和发展以及VHDL、HDL等通用性好、移植性强的硬件描述语言的普及,FPGA等可编程逻辑器件必将在现代数字应用系统中得到广泛的应用,发挥越来越重要的作用。
在这种背景下,针对大规模可编程逻辑器件FPGA器件的集成度高、工作速度快、编程方便、价格较低,易于实现设备的可编程设计的特点,用硬件描述语言设计FPGA器件来实现脉冲序列检测器。
利用VHDL开发的脉冲序列检测器,其通用性和基于模块的设计方法可以节省大量的人力,大大地缩短设计周期,在工程应用中已经取得了显著的效果。
可见,基于FPGA的脉冲序列检测器的设计是现代数字通信的发展要求,从而使得其具有更好的发展前景和使用价值。
2设计基础
FPGA简介
FPGA(Field-ProgrammableGateArray)[2],即现场可编程门阵列,它是在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电平兼容。
FPGA的结构与组成[3]
通常FPGA由布线资源分隔的可编程逻辑单元构成陈列,又由可编程I/O单元围绕陈列构成整个芯片,排成陈列的逻辑单元由布线通道中的可编程内敛线连接起来实现一定逻辑的功能。
FPGA的内部结构大致分为5个部分:
均匀分布的逻辑块组成的逻辑阵列,输入I/O输出块(I/O块),连线资源,全局网络,嵌入式资源。
FPGA器件的组合逻辑块是查找表结构。
I/O块可以配置成各种输入、输出模式。
连线资源用于将不同的逻辑块连接起来。
全局网络是连线资源中的特殊连线,其性能比普通连线要好得多,它延伸到器件内所有的资源位置。
全局网络一般分配给时钟信号,构成时钟树。
有时也可以分配给复位信号、使能信号或者其他特殊信号。
目前我们使用的的可编程逻辑单元一般由查找表和触发器构成。
(LE)组成.
图Cyclone系列FPGA芯片的逻辑单元(LE)组成
FPGA的设计流程
FPGA设计流程包括系统设计和设计实现,系统方案完成之后即进入设计实现阶段的工作,它以系统方案为输入,进行RTL级描述、功能仿真(RTL级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、系统验证一系列流程的处理才能完成FPGA芯片的设计,所示。
需要说明的是,如果仿真验证不对或者到走某一步有错,就要返回修改。
有必要检查和修改的地方有RTL级描述、系统方案、约束和测试激励等。
一般情况下,对RTL级的描述即原理图或者HDL设计代码的修改最多也最有效。
修改后要重新走一遍流程。
有时要反复修改,经过多次这样的迭代才能完成最后的设计。
系统设计
系统方案
RTL级描述
功能仿真
逻辑综合
网表文件1
布线前门及仿真
适配(布局布线)
反标文件网表文件2
时序仿真
时序分析
器件编程
系统验证
完成
库
测试激励
约束
FPGA设计流程
在理论上,把VLSI(UltraLargeScaleIntegration,超大规模集成电路)的设计描述为6个层次,即系统级(系统功能、参数定义)、算法级(描述系统功能行为)、RTL级、门级(逻辑门)、电路级(晶体管)、版图级(物理工艺)。
每一级又都分3个侧面来描述:
行为域描述、结构域描述、物理域描述。
但在实际情况中往往把算法级行为域描述或者RTL级行为域描述都称为行为级描述。
对于FPGA的设计而言,我们不需要关心电路级和版图级,只考虑系统级、算法级、RTL级、门级4个层次的行为域描述和结构域描述即可。
本文上述的FPGA系统设计中的系统实际上是指系统级和算法级,而“RTL级描述”主要是指RTL级行为域的描述。
在门级,由综合工具产生的门级网表来描述。
FPGA的设计流程和相关概念说明如下:
库:
指FPGA器件厂家提供的工艺库和EDA工具提供的标准通用库(如IEEE库等)。
工艺库中有各种宏功能模块和基本功能单元,含有它们的行为级模型、门级模型、布线模型等信息。
需要说明的是,系统行为仿真和RTL级功能仿真有时要用到某种功能模块,例如RAM模型。
对于RAM模型的控制信号,不同的厂家其规定不一定相同,如写使能信号,有的厂家规定高电平有效,有的厂家规定低电平有效。
其实,在厂家提供的工艺库中,RAM模型有行为级模型、门级模型、版图级模型等。
而行为级模型只是规定其功能,无延时信息,跟工艺无关,但门级模型和版图级模型跟工艺密切相关。
解决的方法是系统行为仿真时可以使用高级语言自己建立一个模型或者调用厂家库中提供的行为级模型,功能仿真时调用行为级模型,时序仿真时调用门级模型。
测试激励:
指测试文件,它调用FPGA设计的顶层模块,同时产生顶层模块需要的输入信号,称之为激励信号,使用行为描述即可,不要求可综合。
仿真时它作为最顶层的文件,从而可以观察FPGA的输出是否正确。
所有的仿真都可使用同一个测试激励。
约束:
指对逻辑综合和布局布线时的约束。
包括器件型号、速度、面积、功耗、引脚分配、时钟网络资源的分配、模块在器件中的定位等约束。
一部分在软件中设置,一部分以约束文件的形式存在。
1)系统行为描述:
是指使用硬件描述语言HDL(Hard2waredescriptionLanguage)语句的全集来描述算法,模拟系统的行为和功能,不要求所有的语句都能够综合成电路。
事实上,有的语句是专为描述行为而创建的,不能综合(即不能用电路来实现其功能)。
也可以使用高级语言如C来进行描述,此时往往要配合专用的系统设计工具来进行描述与仿真,如SPW等。
这种系统算法级行为域的描述可以尽量使用最简洁的语句而不必过多地考虑其硬件实现的诸因素,所以能较快建立系统行为模型,进行行为仿真。
2)系统行为仿真:
主要用来验证系统方案是否正确、是否有缺陷,并可根据仿真的结果来优化系统方案和算法。
它使用系统行为描述代码、测试激励、行为级模型库等为输入,利用专用的仿真工具或者系统设计软件来进行功能仿真和优化。
3)RTL级描述:
指原理图(结构描述)或者使用可综合的VHDL语句来描述的设计(一般是行为描述)。
EDA综合软件只能将RTL级描述综合成逻辑电路。
利用综合软件可以检查出所写的代码是否是RTL级代码。
对简单的设计而言,可以直接从RTL级开始设计,但对大规模的设计,最好先写系统行为级代码进行行为仿真。
如果系统行为仿真正确,就可以将行为级代码转化为RTL级代码。
这种转化称之为高层次综合或者行为级综合。
转化的方法有2种:
一是使用高层次综合工具自动转化,例如SYNOPSYS公司的BehaviorCompiler;二是使用手工方法转化。
手工方法使用很普遍,原因是目前高层次综合的理论和方法还不成熟,其工具难求或者其性能没有手工方法好。
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、反标文件和编程文件等。
根据适配工具和适配设置的不同,产生的网表文件可以具有不同的格式并可以设置为包含延时信息(包括门延时和线延时)。
反标文件含延时信息,使用标准格式(SDF格式)表示。
编程文件用于对器件编程下载。
8)时序仿真:
是最接近真实情况的一种仿真,因为该仿真含所有的延时信息和约束信息。
时序仿真的输入需要测试激励、工艺库门级单元模型、网表文件2和反标文件。
如果网表文件2中含有延时信息,则不需要反标文件。
时序仿真的结果跟延时关系极大。
延时跟工艺有关,特别是深亚微米工艺,线延时大大超过门延时,所以总延时跟布局布线关系极大。
如果仿真结果不对,要从约束、综合、布局布线、RTL级代码等环节上找原因,也可以借助时序分析工具找原因。
9)时序分析:
使用EDA软件的时序分析功能能够分析所有时钟的频率、周期、关键路径和其他所有时钟路径上的延时信息,进行建立时间和保持时间分析和输入到输出、输入到寄存器、寄存器到输出的延时分析等,从而可以找出不满足时序关系的原因所在。
时序分析是一个辅助功能,有时可以不做。
10)器件编程:
指将适配后产生的编程文件下载到FPGA或CPLD器件中。
下载的过程就是一个改写器件内逻辑结构的过程,故称之为编程。
下载使用专用的编程器或者下载电缆。
器件的编程接口一般使用10针JTAG插座。
习惯上,对CPLD器件的下载叫编程,对FPGA器件的下载叫配置。
CPLD器件基于EEPROM工艺或者FLASH工艺,掉电后信息不丢失。
而FPGA器件基于SRAM查找表工艺,掉电后编程信息会丢失,在下次上电后需要重新加载编程文件。
配置方式有多种模式,较常用的是PS模式(调试时用)和使用配置器件模式(产品中使用),它是使用一个EPROM型的配置芯片,先将编程数据烧写到配置芯片中,配置芯片跟FPGA使用专用接口引脚相连。
这样,上电后配置芯片自动给FPGA加载编程数据。
也可使用单片机进行配置。
11)系统验证:
先将FPGA芯片在测试板上进行功能验证,然后再到实际系统中验证。
系统验证通过后就可以在产品中使用。
至此,FPGA芯片设计完成。
主控芯片Cyclone简介
Cyclone[3]系列FPGA是Alera公司产品,它由六部分组成,分别为可编程输入输出单元、基本可编程逻辑单元、嵌入式块RAM、布线资源、底层嵌入功能单元和内嵌专用硬核等。
可编程输入/输出单元:
输入/输出(InPut/Output)单元简称1/0单元,它们是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求。
为了使FPGA有更加灵活的运用,目前大多数的FPGA的1/0单元被设计为可编程模式,即通过软件的灵活配置,可以配置不同的电气标准与1/0物理特性;可以调整匹配阻抗特性,上拉,下拉电阻;可以调整输出驱动电流的大小等。
基本可编程逻辑单元:
基本可编程逻辑单元(LE,Logicefement)是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同逻辑功能。
FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表和寄存器组成的。
FPGA内部查找表一般完成纯组合逻辑功能。
FPGA内部有很灵活的寄存器,可以按要求配置成带同步/异步复位和置位、时钟使能的触发器,也可以配置成锁存器。
利用FPGA内部寄存器可完成同步时序的设计。
嵌入式块RAM:
目前大多数FPGA都有内嵌RAM模块(BlockRAM),大大拓展了FPGA的应用范围和使用灵活性。
FPGA内嵌的RAM模块一般都是灵活地配置了单端口RAM(SpRAM,singleportRAM),双端口RAM(DpRAM,DoubleportsRAM)伪双端口RAM(pseudoDpRAM)、CAM(ContentAddressableMemo)、FIFO(FirstInFirstout)等常用存储结构。
布线资源:
FPGA内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同而被划分为不同的等级,有一些是全局性的专用布线资源,用以完成器件内部的全局时钟和全局复位/置位的布线;一些叫做长线资源,用以完成器件Bank(分区)间的一些高速信号和一些第二全局时钟信号的布线;还有一些叫做短线资源,用以完成基本逻辑单元间的逻辑互联与布线;另外,在基本逻辑单元内部还有着各式各样的布线资源和专用时钟、复位等控制信号线。
硬件描述语言VHDL
VHDL[9]语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
VHDL的英文全写是:
VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescription。
因此它的应用主要是应用在数字电路的设计中。
目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。
当然在一些实力较为雄厚的单位,,行为,功能和接口。
除了含有许多具有硬件特征的语句外,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)的设计方法,可以建立各种可再次利用的模块。
这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。
3QUARTUSII介绍
QUARTUSII开发软件
QuartusII是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。
QuartusII在21世纪初推出,是Altera前一代Altera的FPGA/CPLD集成开发环境MAX+plusII[25]的更新换代产品,其界面友好,使用便捷。
在QuartusII上可以完成整个设计流程,它提供了一种与结构无关的设计环境,使设计者能方便的进行设计输入、快速处理和器件编程。
QUARTUSII[13]软件的设计输入方法有多种,主要包括原理图输入方式;文本输入方式。
另外,还可以利用工业标准的EDA设计工具生成设计文件。
该软件还可以把这些设计输入方式综合为一个设计体系,并允许信息在各应用程序间自由转换。
(1)设计的原理图输入
用Altera应用软件QUARTUSII提供的各种原理图库进行设计输入是一种最为直接的输入方式。
用这种方式输入时,为提高效率,应采用自顶向下逻辑分块,把大规模的电路划分成若干小块的方法。
一般而言,如果对系统很了解,并且系统速率较高,或在大系统中对时间特性要求较高的部分,可以采用这种方法。
原理图输入效率较低,但容易实现仿真,便于信号的观察以及电路的调整。
(2)设计的硬件描述语言输入
QUARTUSII软件包含一个集成的TextEditor(文本编辑程序),适合于输入和编辑用VHDL、VerilogHDL或AHDL[32](Altera硬件描述语言)编写的HDL(硬件描述语言)设计文件。
QUARTUSIICompiler可以对这些语言表达的逻辑进行综合,并将其映射到Altera的任何器件中。
采用语言描述的优点是效率较高,结果也较容易仿真,信号观察也较方便,在不同的设计输入库之间转换非常方便。
但语言输入必须依赖综合器,只有好的综合器才能把语言综合成优化的电路。
对于大量规范的、易于语言描述的、易于综合的、速率较低的电路,可以采用这种输入方法。
设计的综合
QUARTUSII处理一个设计时,综合(Compiler)在设计文件中读取信息并产生编程文件和仿真文件,定时分析程序(TimingAnalyzer)可分析设计的定时,信息处理程序(MessageProcessor)可自动定位错误。
(1)自动错误定位
QUARTUSII的MessageProcessor与QUARTUSII的所有应用程序通信,可以给出信息(错误、警告等)。
设计者可