《毕业设计论文基于FPGA的序列检测器的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于FPGA的序列检测器的设计.doc(40页珍藏版)》请在三一办公上搜索。
1、南昌航空大学学士学位论文1 绪论1.1引言序列检测是指将一个指定的序列从数字流中识别出来或在主串中查询相应子串,脉冲序列检测器广泛应用于现代数字通信系统中,在数字通信时,为了保证信息的可靠传输,一般需要在发送端加入固定的同步码组,而在接收端则需要检测该同步码组,保证信息的可靠接收。接收端的同步码检测器就是用来检测同步码组的电路,中间用到的码型检测电路部分实际上就是一个脉冲序列信号检测器。序列检测器广泛应用于数据通讯、雷达和遥测等领域。传统的脉冲序列检测器,它的实现方法是把一个算法转化为一个实际数字逻辑电路的过程。在这个过程中,我们所得到的结果大概一致,但是在具体设计方法和性价比上存在着一定的差
2、异,存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点。而利用FPGA作为硬件电路,采用VHDL等硬件描述语言对硬件的功能进行编程,加快了系统的研发进程,采用数字化的控制方式,大幅度提高了逻辑控制的精确度,实时控制效果好,实践证明,FPGA芯片可以代替传统的复杂的电路,而且可以大比例地缩小了电路的硬件规模,提高了集成度,降低开发成本,提高系统的可靠性,为脉冲序列检测器电路的设计开辟了新的天地。1.2课题设计目的脉冲序列检测器在现代数字通信系统中发挥着重要的作用,通过中小规模的数字集成电路构成的传统脉冲序列检测器电路往往存在电路设计复杂、体积大、抗干扰能力差以及设计困难、设计周
3、期长等缺点。因此脉冲序列检测器电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高。随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具1给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便。随着ASIC技术、EDA技术的不断完善和发展以及VHDL、HDL等通用性好、移植性强的硬件描述语言的普及,FPGA等可编程逻辑器件必将在现代数字应用系统中得到广泛的应用,发挥越来越重要的作用。 在这种背景下,针对大规模可编程逻辑器件FPGA器件的集成度高
4、、工作速度快、编程方便、价格较低,易于实现设备的可编程设计的特点,用硬件描述语言设计FPGA器件来实现脉冲序列检测器。利用VHDL开发的脉冲序列检测器,其通用性和基于模块的设计方法可以节省大量的人力,大大地缩短设计周期,在工程应用中已经取得了显著的效果。可见,基于FPGA的脉冲序列检测器的设计是现代数字通信的发展要求,从而使得其具有更好的发展前景和使用价值。2 设计基础2.1 FPGA简介FPGA(FieldProgrammable Gate Array)2,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定
5、制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简 单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片
6、里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件)。它的特点有:1)采用FPGA设计ASIC电路(特定用途集成电路),用户不需要投片生产,就能得到合用的
7、芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。2.2 FPGA的结构与组成3通常FPGA由布线资源分隔的可编程逻辑单元构成陈列,又由可编程I/O单元围绕陈列构成整个芯片,排成陈列的逻辑单元由布线通道中的可编程内敛线连接起来实现一定逻辑的功能。FPGA 的内部结构大致分为5 个部分: 均匀分布的逻辑块组成的逻辑阵列, 输入I/O输出块( I/O块) , 连线资源,全局网络, 嵌
8、入式资源。FPGA 器件的组合逻辑块是查找表结构。I/O 块可以配置成各种输入、输出模式。连线资源用于将不同的逻辑块连接起来。全局网络是连线资源中的特殊连线, 其性能比普通连线要好得多, 它延伸到器件内所有的资源位置。全局网络一般分配给时钟信号, 构成时钟树。有时也可以分配给复位信号、使能信号或者其他特殊信号。目前我们使用的的可编程逻辑单元一般由查找表和触发器构成。图2.1所示即为Cyclone系列的FPGA芯片的逻辑单元(LE)组成.图 2.1 Cyclone系列FPGA芯片的逻辑单元(LE)组成2.3 FPGA的设计流程FPGA 设计流程包括系统设计和设计实现, 系统方案完成之后即进入设计
9、实现阶段的工作, 它以系统方案为输入, 进行RTL 级描述、功能仿真(RTL 级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、系统验证一系列流程的处理才能完成FPGA芯片的设计, 其设计流程如图2.2 所示。需要说明的是, 如果仿真验证不对或者到走某一步有错, 就要返回修改。有必要检查和修改的地方有RTL 级描述、系统方案、约束和测试激励等。一般情况下, 对RTL 级的描述即原理图或者HDL 设计代码的修改最多也最有效。修改后要重新走一遍流程。有时要反复修改, 经过多次这样的迭代才能完成最后的设计。系统设计系统方案RTL级描述功能仿真逻辑综
10、合网表文件1布线前门及仿真适配(布局布线)反标文件网表文件2时序仿真时序分析器件编程系统验证完成库测试激励约束 图2.2 FPGA设计流程在理论上,把VLSI (Ultra Large Scale Integration,超大规模集成电路)的设计描述为6个层次,即系统级(系统功能、参数定义)、算法级(描述系统功能行为)、RTL级、门级(逻辑门)、电路级(晶体管)、版图级(物理工艺)。每一级又都分3 个侧面来描述: 行为域描述、结构域描述、物理域描述。但在实际情况中往往把算法级行为域描述或者RTL 级行为域描述都称为行为级描述。对于FPGA 的设计而言, 我们不需要关心电路级和版图级, 只考虑系
11、统级、算法级、RTL 级、门级4 个层次的行为域描述和结构域描述即可。本文上述的FPGA 系统设计中的系统实际上是指系统级和算法级, 而“RTL 级描述”主要是指RTL级行为域的描述。在门级, 由综合工具产生的门级网表来描述。FPGA 的设计流程和相关概念说明如下:库: 指FPGA 器件厂家提供的工艺库和EDA 工具提供的标准通用库(如IEEE 库等)。工艺库中有各种宏功能模块和基本功能单元, 含有它们的行为级模型、门级模型、布线模型等信息。需要说明的是, 系统行为仿真和RTL 级功能仿真有时要用到某种功能模块, 例如RAM 模型。对于RAM 模型的控制信号, 不同的厂家其规定不一定相同, 如
12、写使能信号, 有的厂家规定高电平有效, 有的厂家规定低电平有效。其实, 在厂家提供的工艺库中, RAM 模型有行为级模型、门级模型、版图级模型等。而行为级模型只是规定其功能, 无延时信息, 跟工艺无关, 但门级模型和版图级模型跟工艺密切相关。解决的方法是系统行为仿真时可以使用高级语言自己建立一个模型或者调用厂家库中提供的行为级模型, 功能仿真时调用行为级模型, 时序仿真时调用门级模型。测试激励: 指测试文件, 它调用FPGA 设计的顶层模块,同时产生顶层模块需要的输入信号, 称之为激励信号, 使用行为描述即可, 不要求可综合。仿真时它作为最顶层的文件, 从而可以观察FPGA 的输出是否正确。所
13、有的仿真都可使用同一个测试激励。约束: 指对逻辑综合和布局布线时的约束。包括器件型号、速度、面积、功耗、引脚分配、时钟网络资源的分配、模块在器件中的定位等约束。一部分在软件中设置, 一部分以约束文件的形式存在。1) 系统行为描述: 是指使用硬件描述语言HDL (Hard2w are descrip t ion L anguage) 语句的全集来描述算法, 模拟系统的行为和功能, 不要求所有的语句都能够综合成电路。事实上, 有的语句是专为描述行为而创建的, 不能综合(即不能用电路来实现其功能)。也可以使用高级语言如C 来进行描述,此时往往要配合专用的系统设计工具来进行描述与仿真, 如SPW 等。
14、这种系统算法级行为域的描述可以尽量使用最简洁的语句而不必过多地考虑其硬件实现的诸因素, 所以能较快建立系统行为模型, 进行行为仿真。2) 系统行为仿真: 主要用来验证系统方案是否正确、是否有缺陷, 并可根据仿真的结果来优化系统方案和算法。它使用系统行为描述代码、测试激励、行为级模型库等为输入, 利用专用的仿真工具或者系统设计软件来进行功能仿真和优化。3) RTL 级描述: 指原理图(结构描述) 或者使用可综合的VHDL 语句来描述的设计(一般是行为描述)。EDA 综合软件只能将RTL 级描述综合成逻辑电路。利用综合软件可以检查出所写的代码是否是RTL 级代码。对简单的设计而言, 可以直接从RT
15、L 级开始设计, 但对大规模的设计, 最好先写系统行为级代码进行行为仿真。如果系统行为仿真正确, 就可以将行为级代码转化为RTL 级代码。这种转化称之为高层次综合或者行为级综合。转化的方法有2 种: 一是使用高层次综合工具自动转化, 例如SYNO PSYS 公司的Behavior Compiler; 二是使用手工方法转化。手工方法使用很普遍, 原因是目前高层次综合的理论和方法还不成熟, 其工具难求或者其性能没有手工方法好。4) 功能仿真: 也叫RTL 级仿真, 是指不考虑延时信息的一种仿真, 只能验证RTL 级的行为描述是否能达到所要求的功能。功能仿真需要的输入是RTL 级代码、测试激励和库(
16、有时要调用工艺库中宏功能单元的行为级模型)。可利用专用的仿真工具进行仿真, 如Modelsim,VCS 等工具。如果仿真不对, 则需要检查和修改RTL 级代码或者测试激励甚至系统方案。仿真的过程是先对源代码进行编译, 检查是否有语法错误。如果没有错误, 就将源代码转换为一种中间格式, 便于仿真工具的内部运算。编译的结果自动存放在一个指定的工作目录中, 仿真的结果主要以波形文件的形式存放。5) 逻辑综合: 逻辑综合是将RTL 级的行为描述转化为使用门级单元的结构描述。门级的结构描述称之为网表。网表文件主要记录的是所用工艺库门级单元之间的互连关系(即门级结构)。综合的输入需要RTL 级描述、约束和
17、工艺库。综合时所加的约束一般比较简单, 如时钟频率、器件型号和其他综合设置等。综合的过程是translate (转换) + map (映射) +optimize (优化)。转换是将RTL 级行为描述转化为RTL 级结构描述(使用与工艺无关的通用逻辑门符号表示)。映射是将转换后的结果使用工艺库门级单元的连接关系来表示, 并根据需要进行优化, 形成网表文件。映射是对某种目标器件而言的一种资源分配和优化操作。一般综合工具能将转换后的结果显示为RTL 级原理图, 也能将网表显示为门级原理图。网表文件中含门级单元的延时信息, 对连线延时有预估值或者为零, 不同的软件处理的方法可能不同, 暂称之为网表文件
18、1。网表文件的格式可以表示成标准格式(edif) , 也可以表示成VHDL 或者Verilog_ HDL 格式(在综合工具中设置)。综合报告文件中含所用逻辑资源、预估出的时钟最高频率、关键路径(延时最长的路径, 可在软件中显示) 等信息。6) 布线前门级仿真: 是门级功能仿真, 一般不考虑延时。该仿真的输入需要综合后的门级网表、工艺库和测试激励。有的EDA 工具不提供此仿真功能, 可以不做。7) 适配(布局布线) : 适配就是将网表文件映射到目标器件中的一种操作, 是对目标器件的第二次映射(第一次映射是综合)。即对网表中的每一个门级单元在器件中定位(布局) ,并使用器件内的连线资源按照网表中的
19、连接关系连接起来(布线) 同时要满足引脚分配、时钟线的分配等约束条件。适配的输入需要网表文件1、工艺库(要使用其中的布线模型等信息) 和约束。适配所加的约束比较多, 如引脚分配、时钟树的分配、模块在器件中的定位等。适配后产生的文件有网表文件2、反标文件和编程文件等。根据适配工具和适配设置的不同, 产生的网表文件可以具有不同的格式并可以设置为包含延时信息(包括门延时和线延时)。反标文件含延时信息, 使用标准格式(SDF格式) 表示。编程文件用于对器件编程下载。8) 时序仿真: 是最接近真实情况的一种仿真, 因为该仿真含所有的延时信息和约束信息。时序仿真的输入需要测试激励、工艺库门级单元模型、网表
20、文件2 和反标文件。如果网表文件2 中含有延时信息, 则不需要反标文件。时序仿真的结果跟延时关系极大。延时跟工艺有关, 特别是深亚微米工艺, 线延时大大超过门延时, 所以总延时跟布局布线关系极大。如果仿真结果不对, 要从约束、综合、布局布线、RTL 级代码等环节上找原因, 也可以借助时序分析工具找原因。9) 时序分析: 使用EDA 软件的时序分析功能能够分析所有时钟的频率、周期、关键路径和其他所有时钟路径上的延时信息, 进行建立时间和保持时间分析和输入到输出、输入到寄存器、寄存器到输出的延时分析等, 从而可以找出不满足时序关系的原因所在。时序分析是一个辅助功能, 有时可以不做。10) 器件编程
21、: 指将适配后产生的编程文件下载到FPGA或CPLD 器件中。下载的过程就是一个改写器件内逻辑结构的过程, 故称之为编程。下载使用专用的编程器或者下载电缆。器件的编程接口一般使用10针JTAG插座。习惯上, 对CPLD器件的下载叫编程, 对FPGA 器件的下载叫配置。CPLD 器件基于EEPROM 工艺或者FLA SH 工艺, 掉电后信息不丢失。而FPGA 器件基于SRAM 查找表工艺,掉电后编程信息会丢失, 在下次上电后需要重新加载编程文件。配置方式有多种模式,较常用的是PS 模式(调试时用) 和使用配置器件模式(产品中使用),它是使用一个EPROM 型的配置芯片, 先将编程数据烧写到配置芯
22、片中, 配置芯片跟FPGA 使用专用接口引脚相连。这样, 上电后配置芯片自动给FPGA 加载编程数据。也可使用单片机进行配置。11) 系统验证: 先将FPGA 芯片在测试板上进行功能验证, 然后再到实际系统中验证。系统验证通过后就可以在产品中使用。至此, FPGA 芯片设计完成。2.4 主控芯片Cyclone简介 Cyclone3系列FPGA是Alera公司产品,它由六部分组成,分别为可编程输入输出单元、基本可编程逻辑单元、嵌入式块RAM、布线资源、底层嵌入功能单元和内嵌专用硬核等。可编程输入/输出单元:输入/输出(InPut/Output)单元简称1/0单元,它们是芯片与外界电路的接口部分,
23、完成不同电气特性下对输入/输出信号的驱动与匹配需求。为了使FPGA有更加灵活的运用,目前大多数的FPGA的1/0单元被设计为可编程模式,即通过软件的灵活配置,可以配置不同的电气标准与1/0物理特性;可以调整匹配阻抗特性,上拉,下拉电阻;可以调整输出驱动电流的大小等。基本可编程逻辑单元:基本可编程逻辑单元(LE,Logicefement)是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同逻辑功能。FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表和寄存器组成的。FPGA内部查找表一般完成纯组合逻辑功能。FPGA内部有很灵活的寄存器,可以按要求配置成带同步/异
24、步复位和置位、时钟使能的触发器,也可以配置成锁存器。利用FPGA内部寄存器可完成同步时序的设计。嵌入式块RAM:目前大多数FPGA都有内嵌RAM模块 (BlockRAM),大大拓展了FPGA的应用范围和使用灵活性。FPGA内嵌的RAM模块一般都是灵活地配置了单端口RAM(SpRAM,singleportRAM),双端口RAM(DpRAM,DoubleportsRAM)伪双端口RAM(pseudoDpRAM)、CAM(ContentAddressableMemo)、FIFO(FirstInFirstout)等常用存储结构。布线资源:FPGA内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度
25、和分布位置的不同而被划分为不同的等级,有一些是全局性的专用布线资源,用以完成器件内部的全局时钟和全局复位/置位的布线;一些叫做长线资源,用以完成器件Bank(分区)间的一些高速信号和一些第二全局时钟信号的布线;还有一些叫做短线资源,用以完成基本逻辑单元间的逻辑互联与布线;另外,在基本逻辑单元内部还有着各式各样的布线资源和专用时钟、复位等控制信号线。2.5 硬件描述语言VHDLVHDL9语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL的英文全写是:VHSIC(Very High S
26、peed Integrated Circuit)Hardware Description Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC.VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和
27、内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 底层嵌入功能单元:底层嵌入式功能单元是指那些通用程度较高的嵌入式模块,比如pLL(phaseLockedLoop)、DLL(DelayLockedLoop)、DSP、CPU等。本设计中用到了PLL嵌入式单元,该模块单元是通过开发平台的IP核生成器自动生成的(内嵌专用硬核里的内嵌专用硬核是有别于底层嵌入功能单元的,主要是指那些通用性相对较弱、不是所有FPGA器件都包括的硬核)。与其他硬件
28、描述语言相比,VHDL具有以下特点:1)功能强大、设计灵活:VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。2)支持广泛、易于修改:由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHD
29、L编写的源代码,因为VHDL易读和结构化,所以易于修改设计。 3)强大的系统硬件描述能力:VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。 4)独立于器件的设计、与工艺无关:设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构
30、来实现其功能。5)很强的移植能力:VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。 6)易于共享和复用:VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。3 QUARTUS II介绍3.1 QUARTUS II开发软件Quartus II是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。Quart
31、us II在21世纪初推出,是Altera前一代Altera的FPGA/CPLD集成开发环境MAX+plus II25的更新换代产品,其界面友好,使用便捷。在Quartus II上可以完成整个设计流程,它提供了一种与结构无关的设计环境,使设计者能方便的进行设计输入、快速处理和器件编程。3.2输入方式QUARTUS II13 软件的设计输入方法有多种,主要包括原理图输入方式;文本输入方式。另外,还可以利用工业标准的EDA设计工具生成设计文件。该软件还可以把这些设计输入方式综合为一个设计体系,并允许信息在各应用程序间自由转换。(1)设计的原理图输入用 Altera 应用软件 QUARTUS II
32、提供的各种原理图库进行设计输入是一种最为直接的输入方式。用这种方式输入时,为提高效率,应采用自顶向下逻辑分块,把大规模的电路划分成若干小块的方法。一般而言,如果对系统很了解,并且系统速率较高,或在大系统中对时间特性要求较高的部分,可以采用这种方法。原理图输入效率较低,但容易实现仿真,便于信号的观察以及电路的调整。(2)设计的硬件描述语言输入QUARTUS II 软件包含一个集成的Text Editor(文本编辑程序),适合于输入和编辑用VHDL、Verilog HDL或AHDL32(Altera硬件描述语言)编写的HDL(硬件描述语言)设计文件。QUARTUS II Compiler可以对这些
33、语言表达的逻辑进行综合,并将其映射到Altera的任何器件中。采用语言描述的优点是效率较高,结果也较容易仿真,信号观察也较方便,在不同的设计输入库之间转换非常方便。但语言输入必须依赖综合器,只有好的综合器才能把语言综合成优化的电路。对于大量规范的、易于语言描述的、易于综合的、速率较低的电路,可以采用这种输入方法。3.3 设计的综合QUARTUS II 处理一个设计时,综合(Compiler)在设计文件中读取信息并产生编程文件和仿真文件,定时分析程序(Timing Analyzer)可分析设计的定时,信息处理程序(MessageProcessor)可自动定位错误。(1)自动错误定位QUARTUS
34、 II 的 Message Processor 与 QUARTUS II 的所有应用程序通信,可以给出信息(错误、警告等)。设计者可以利用它自动打开有错误源的文件,并以高亮度方式显示错误位置。(2)逻辑综合与试配QUARTUS II Compiler 的 Logic Synthesize(逻辑综合)模块对设计方案进行逻辑综合并能看到设计实现的真正结果,该模块选择合适的逻辑化简算法,去除冗余逻辑,确保对某种特定的器件结构尽可能有效地使用器件的逻辑资源,还可以去除设计方案中没用的逻辑。Altera 提供三种“现成的”综合方式,可以为多种逻辑综合选择指定设置,可选择 CHENG 缺省方式,以设置缺省
35、的综合选择;可以建立定制方式;还可以在被选择的逻辑功能中指定一些单独的综合选择。综合选择是面向特定器件系列专门设置的,这样可以发挥器件结构的优势。Compiler的Fitter(试配)模块可以经过综合的设计恰当地用一个或多个器件实现,这种自动试配功能使设计者得以从冗余的布局与布线工作中解脱出来。Fitter生成报告文件(.Rp),可以展示设计的具体实现以及器件中未使用的资源。3.4 设计的仿真电路设计输入完以后,首先需要检验输入是否正确,这是一项简单的逻辑检查, QUARTUS II 提供功能编译的选项。此时,只运行仿真网络表的提取,而不作布局布线,所以,此时的仿真没有延时信息,所有的延时均为
36、零延时,而且可以预测所有的信号,对于初步的功能检测非常方便。在仿真时需加入激励信号,该激励信号可以用 QUARTUS II 软件中的波形编译器直接编译成波形文件,还可以先用文本编辑器按软件给定的语法规则编译成文本文件,再转换成波形文件,也可以二者结合进行。常用的方法是对于时钟或简单的波形信号用波形编辑器输入,而较复杂的信号则用文本编译器生成。仿真时需事先在波形文件中加入想要观测的信号名,信号名可通过菜单中的节点列表选择,此时,所有的节点的信号都是可以观测的。如果检查到错误,则需要重新输入,重复这个过程。功能检查完成后,首先需要进行编译,这时应选择带延时的完全的编译过程。对每一个设计项目,都有一
37、个配置文件ACF,所有的配置参数都存在这个文件里。如果需要修改配置,既可在菜单上作选择,也可以直接修改次文件。主要的配置参数包括器件类型、管脚的设置、速率及面积的比重、时间参数的要求、布线时的设置等。编译完成以后,可得到报告文件、延时文件、可仿真网络表文件及配置文件,利用功能仿真时生成的激励波形可进行仿真。如果要想下次的布线结果在本次基础上进行,则可以利用反主标的方法,把配置结果写入ACF文件中,下次编译只需用此AFC文件即可。编译完成以后,还可以利用布局软件FloorPlan直接调整内部布局,这种方法对于时间关系的调整非常有用。QUARTUS II 的仿真器具有很强的灵活性,可以控制对单器件
38、或多器件设计的仿真。仿真器使用编译期间生成的二进制仿真网络表进行功能、定时的仿真,或把组合连接起来的多个器件作为一个设计进行仿真。可以使用简明的向量输入语言定义输入激励,也可以使用 QUARTUS II 的波形编辑程序直接画出波形。仿真结果可以在波形编辑器或文件编辑器中看到,也可以作为波形文件或文本文件打印出来。为便于比较设计者可以使用波形编辑器把两次仿真的结果重叠起来。4 序列检测器电路的设计4.1 序列检测器电路总体结构设计序列检测器总体主要由脉冲序列发生器电路、脉冲序列信号检测器电路、十六进制计数器电路、计数显示电路、时钟分频电路、串并转换电路、奇偶校验电路组成,其中脉冲序列发生器电路的
39、功能是生成串行的序列供脉冲序列信号检测器从中检测待检测的数据,脉冲序列信号检测器检测输入的序列中有没有待检测的序列,十六进制计数器计数序列检测器检测到特定序列的次数并以四位二进制进行输出,计数显示电路是把检测到的次数通过七段译码器显示出来,时钟分频电路是将外部晶振时钟进行分频提供给需要时钟的各个电路,串并转换电路是将经过检测的串行序列转换成并行输出奇偶校验电路进行奇偶校验。总体电路设计框图图4.1 所示:8路检测器8路脉冲序列发生器8 路十 六进 制计 数器计数显示器外部晶振分频器串并转 换奇 偶校 验4.1序列检测器电路设计框图4.2 8路脉冲序列发生器电路设计及仿真8路序列发生器20是指在
40、同步脉冲作用下循环地产生8路的一串周期性的二进制信号,本电路设计实现产生8路64位的二进制序列。表4.1各路脉冲序列发生器发出的序列。 路序产生序列1110011000110010100001111000110011001100111001100011001010000111111101100011001010000111110011001100010011100110001100101000011111100110101100101000001110001100110011001010011000110010100001011111111101000010111111110011001011
41、1111110011000110010100001110001110011011010011100001111101101111001100111001100011001010000111000000001010010100000000110000110000000010110001000000001001111111100110001100101000011100110011110011001110011000111010100001110001110001100110001110010101010101010100101100110110111101010101 表4.1 各路脉冲序列发生
42、器产生的序列其顶层文件VHDL代码如下:library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity xlfsq isport(clk:in std_logic; clr:in std_logic; dout1,dout2,dout3,dout4,dout5,dout6,dout7,dout8:out std_logic);end;architecture one of xlfsq is component xlfsq1 port(clk:in std_logic; clr:in std_l
43、ogic; dout:out std_logic);end component;component xlfsq2 port(clk:in std_logic; clr:in std_logic; dout:out std_logic);end component;component xlfsq3 port(clk:in std_logic; clr:in std_logic; dout:out std_logic);end component;component xlfsq4 port(clk:in std_logic; clr:in std_logic; dout:out std_logic
44、);end component;component xlfsq5 port(clk:in std_logic; clr:in std_logic; dout:out std_logic);end component;component xlfsq6 port(clk:in std_logic; clr:in std_logic; dout:out std_logic);end component;component xlfsq7 port(clk:in std_logic; clr:in std_logic; dout:out std_logic);end component;componen
45、t xlfsq8 port(clk:in std_logic; clr:in std_logic; dout:out std_logic);end component;beginu1: xlfsq1 port map(clk=clk,clr=clr,dout=dout1);u2: xlfsq2 port map(clk=clk,clr=clr,dout=dout2);u3: xlfsq3 port map(clk=clk,clr=clr,dout=dout3);u4: xlfsq4 port map(clk=clk,clr=clr,dout=dout4);u5: xlfsq5 port map
46、(clk=clk,clr=clr,dout=dout5);u6: xlfsq6 port map(clk=clk,clr=clr,dout=dout6);u7: xlfsq7 port map(clk=clk,clr=clr,dout=dout7);u8: xlfsq8 port map(clk=clk,clr=clr,dout=dout8);end;其中第一路的VHDL设计代码如下:library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity xljc isport(clk:in std_
47、logic; clr:in std_logic; dout:out std_logic);end;architecture one of xljc is signal reg:std_logic_vector(63 downto 0);begin process (clk,clr) begin if clkevent and clk=1 then if clr=1 then dout=0;reg=1110011000110010100001111000110011001100111001100011001010000111; elsedout=reg(63); reg=reg(62 downto 0)®(63);end if;end if;end process; end;建立仿真波形文件,其仿真波形如图4.2所示:4.2 第一路序列发生器电路仿真波形仿真结果分析:从仿真波形看出当清零端clr为零时,序列发生器连续输出串行序列:111001100011001010000111100011001100110011100