




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
测试与光电工程学院课程设计任务书 电子科学与技术 系 班 学生课题名称: 脉冲序列检测器的设计 课题要求:查找相关资料,确定基于FPGA的多路脉冲序列检测器的设计方案,要求能对多路脉冲序列信号进行检测。课题内容:1、系统设计要求:脉冲序列检测器广泛应用于现代数字通信系统中。随着通信技术的发展,对多路脉冲序列信号检测要求越来越高,本实验设计一个基于FPGA的多路脉冲序列检测器。设计完成后,经综合和仿真验证后,在FPGA中实现。2、工作进度安排:查找相关资料,确定脉冲序列检测器设计方案 11月15日11月21日 第12周系统各模块的详细设计 11月22日12月28日 第13周系统仿真及修正 11月29日12月5日 第14周系统测试,课程设计报告的撰写 12月6日12月10日 第15周主要参考资料:【1】 潘松,黄继业 EDA技术使用教程(第三版) 科学出版社2006【2】 邬杨波,王曙光,胡建平 有限状态机VHDL设计及优化信息技术 2004(01)【3】 刘欲晓 EDA技术与VHDL技术 电子工业出版社 2009.4【4】 鄢靖丰,陈晓黎,王平 用Verilog-HDL设计序列检测器 2005(11) 【5】 唐瑜,符兴吕,罗江 用VHDL语寿实现序列信号的产生和检测 2008(09) 【6】 蒋昊,李哲英 基于多种EDA工具的FPGA设计流程J.微计算机信息,2007【7】 束礼宝,宋克柱,王砚方.伪随机数发生器的FPGA实现与研究J.电路与系统学报,2003.8系负责人: 指导教师: 柴明钢 时间:2010年11月10日摘要脉冲序列检测器广泛应用于现代数字通信系统中,随着通信技术的发展,对多路脉冲序列信号检测要求越来越高。现代通信系统的发展方向是功能更强、体积更小、速度更快、功耗更低,大规模可编程逻辑器件FPGA器件的集成度高、工作速度快、编程方便、价格较低,易于实现设备的可编程设计,这些优势正好满足通信系统的这些要求。随着器件复杂程度的提高,电路逻辑图变得过于复杂,不便于设计。VHDL(VHSIC Hardware Description Language)是随着可编程逻辑器件的发展而发展起来的一种硬件描述语言。VHDL具有极强的描述能力,能支持系统行为级、寄存器输级和门级三个不同层次的设计,实现了逻辑设计师多年来梦寐以求的“硬件设计软件化”的愿望,给当今电子通信系统设计带来了革命性的变化。本文针对传统的脉冲序列检测器方案,提出了一种基于FPGA的脉冲序列检测器设计的新方案,该方案相对于传统的设计方法更适合于现代数字通信系统,不但大大减少了周边的设备,也使系统设计更加灵活,稳定性更好,性价比更高,可以满足多种环境下的检测系统的要求。关键词:可编程逻辑器件FPGA,硬件描述语言VHDL,序列检测器目录摘要.31.绪论.61.1课题设计背景.61.2课题设计目的.62. FPGA简介.72.1 什么是FPGA.72.2 FPGA的结构与组成.82.3 FPGA的设计流程.92.4主控芯片Cyclone简介.152.5硬件描述语言VH.163 脉冲序列检测器的设计.183.1脉冲序列检测器的原理.183.2 设计要求.193.3设计内容.193.4设计步骤.203.5顶层文件设计.253.6测试和仿真.263.7 结果分析.273.8 8位序列检测器的设计.28设计总结.31致谢.32参考文献.331 绪论1.1 课题设计背景 随着数字通信的广泛应用,可编程逻辑器件容量、功能的不断扩大,集成电路的设计已经进入片上系统(SOC)和专用集成电路(ASIC)的时代。由于硬件描述语言VHDL可读性、可移植性、支持对大规模设计的分解和对已有设计的再利用等强大功能,迅速出现在各种电子设计自动化(EDA)系统中,先进的开发工具使整个系统设计调试周期大大地缩短。利用硬件描述语言(如VHDL)来完成对系统硬件功能的描述,在EDA工具的帮助下通过波形仿真得到时序波形,这样就使得对硬件的设计和修改过程软件化,提高了大规模系统设计的自动化程度。使用FPGA进行系统设计,大部分的工作都在计算机上完成。它采用设计输入、功能仿真和设计修改等可以反复循环的流程,使设计过程具有较强的灵活性和高效性,硬件具有了一定的设计柔性,工作效率得到很大提高,大大缩短了系统的设计周期,降低了开发成本,编程调试极为方便,系统电路的体积大为缩小,可靠性大大提高,系统投人实际应用后将取得令人满意的效果。传统的脉冲序列检测器,它的实现方法是把一个算法转化为一个实际数字逻辑电路的过程。在这个过程中,我们所得到的结果大概一致,但是在具体设计方法和性价比上存在着一定的差异,存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点。而利用FPGA作为硬件电路,采用VHDL等硬件描述语言对硬件的功能进行编程,加快了系统的研发进程,采用数字化的控制方式,大幅度提高了逻辑控制的精确度,实时控制效果好,实践证明,FPGA芯片可以代替传统的复杂的电路,而且可以大比例地缩小了电路的硬件规模,提高了集成度,降低开发成本,提高系统的可靠性,为脉冲序列检测器电路的设计开辟了新的天地。1.2课题设计目的脉冲序列检测器在现代数字通信系统中发挥着重要的作用,通过中小规模的数字集成电路构成的传统脉冲序列检测器电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点。因此脉冲序列检测器电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高。随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便。随着ASIC技术、EDA技术的不断完善和发展以及VHDL、HDL等通用性好、移植性强的硬件描述语言的普及,FPGA等可编程逻辑器件必将在现代数字应用系统中得到广泛的应用,发挥越来越重要的作用。 在这种背景下,针对大规模可编程逻辑器件FPGA器件的集成度高、工作速度快、编程方便、价格较低,易于实现设备的可编程设计的特点,用硬件描述语言设计FPGA器件来实现脉冲序列检测器。应用可编程逻辑器件FPGA,来完成高速采编器的功能,具有速度更快、可靠性更高、调试方便的优点,而且电路简单,体积更小,利用VHDL开发的脉冲序列检测器,其通用性和基于模块的设计方法可以节省大量的人力,大大地缩短设计周期,在工程应用中已经取得了显著的效果。可见,基于FPGA的脉冲序列检测器的设计是现代数字通信的发展要求,从而使得其具有更好的发展前景和使用价值。2 FPGA简介2.1 什么是FPGAFPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简 单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。 FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。它的特点有:1) 采用FPGA设计ASIC电路(特定用途集成电路),用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 2.2 FPGA的结构与组成通常FPGA由布线资源分隔的可编程逻辑单元构成陈列,又由可编程I/O单元围绕陈列构成整个芯片,排成陈列的逻辑单元由布线通道中的可编程内敛线连接起来实现一定逻辑的功能。FPGA 的内部结构大致分为5 个部分: 均匀分布的逻辑块组成的逻辑阵列, 输入I/O输出块( I/O块) , 连线资源,全局网络, 嵌入式资源。FPGA 器件的组合逻辑块是查找表结构。I/O 块可以配置成各种输入、输出模式。连线资源用于将不同的逻辑块连接起来。全局网络是连线资源中的特殊连线, 其性能比普通连线要好得多, 它延伸到器件内所有的资源位置。全局网络一般分配给时钟信号, 构成时钟树。有时也可以分配给复位信号、使能信号或者其他特殊信号。目前我们使用的的可编程逻辑单元一般由查找表和触发器构成。下图所示即为Cyclone系列的FPGA芯片的逻辑单元(LE)组成.2.3 FPGA的设计流程FPGA 设计流程包括系统设计和设计实现, 系统方案完成之后即进入设计实现阶段的工作, 它以系统方案为输入, 进行RTL 级描述、功能仿真(RTL 级仿真)、逻辑综合、布线前门级仿真、适配(布局布线)、时序仿真(布线后门级仿真)、时序分析、器件编程、系统验证一系列流程的处理才能完成FPGA芯片的设计, 其设计流程如下图 所示。需要说明的是, 如果仿真验证不对或者到走某一步有错, 就要返回修改。有必要检查和修改的地方有RTL 级描述、系统方案、约束和测试激励等。一般情况下, 对RTL 级的描述即原理图或者HDL 设计代码的修改最多也最有效。修改后要重新走一遍流程。有时要反复修改, 经过多次这样的迭代才能完成最后的设计。在理论上, 把VL S I (U lt ra L arge Scale Integrat ion, 超大规模集成电路) 的设计描述为6 个层次2 3 , 即系统级(系统功能、参数定义)、算法级(描述系统功能行为)、RTL 级、门级(逻辑门)、电路级(晶体管)、版图级(物理工艺)。每一级又都分3 个侧面来描述: 行为域描述、结构域描述、物理域描述。但在实际情况中往往把算法级行为域描述或者RTL 级行为域描述都称为行为级描述。对于FPGA 的设计而言, 我们不需要关心电路级和版图级, 只考虑系统级、算法级、RTL 级、门级4 个层次的行为域描述和结构域描述即可。本文上述的FPGA 系统设计中的系统实际上是指系统级和算法级, 而“RTL 级描述”主要是指RTL级行为域的描述。在门级, 由综合工具产生的门级网表来描述。FPGA 的设计流程和相关概念说明如下:库: 指FPGA 器件厂家提供的工艺库和EDA 工具提供的标准通用库(如IEEE 库等)。工艺库中有各种宏功能模块和基本功能单元, 含有它们的行为级模型、门级模型、布线模型等信息。需要说明的是, 系统行为仿真和RTL 级功能仿真有时要用到某种功能模块, 例如RAM 模型。对于RAM 模型的控制信号, 不同的厂家其规定不一定相同, 如写使能信号, 有的厂家规定高电平有效, 有的厂家规定低电平有效。其实, 在厂家提供的工艺库中, RAM 模型有行为级模型、门级模型、版图级模型等。而行为级模型只是规定其功能, 无延时信息, 跟工艺无关, 但门级模型和版图级模型跟工艺密切相关。解决的方法是系统行为仿真时可以使用高级语言自己建立一个模型或者调用厂家库中提供的行为级模型, 功能仿真时调用行为级模型, 时序仿真时调用门级模型。测试激励: 指测试文件, 它调用FPGA 设计的顶层模块,同时产生顶层模块需要的输入信号, 称之为激励信号, 使用行为描述即可, 不要求可综合。仿真时它作为最顶层的文件, 从而可以观察FPGA 的输出是否正确。所有的仿真都可使用同一个测试激励。约束: 指对逻辑综合和布局布线时的约束。包括器件型号、速度、面积、功耗、引脚分配、时钟网络资源的分配、模块在器件中的定位等约束。一部分在软件中设置, 一部分以约束文件的形式存在。1) 系统行为描述: 是指使用硬件描述语言HDL (Hard2w are descrip t ion L anguage) 语句的全集来描述算法, 模拟系统的行为和功能, 不要求所有的语句都能够综合成电路。事实上, 有的语句是专为描述行为而创建的, 不能综合(即不能用电路来实现其功能)。也可以使用高级语言如C 来进行描述,此时往往要配合专用的系统设计工具来进行描述与仿真, 如SPW 等。这种系统算法级行为域的描述可以尽量使用最简洁的语句而不必过多地考虑其硬件实现的诸因素, 所以能较快建立系统行为模型, 进行行为仿真。2) 系统行为仿真: 主要用来验证系统方案是否正确、是否有缺陷, 并可根据仿真的结果来优化系统方案和算法。它使用系统行为描述代码、测试激励、行为级模型库等为输入, 利用专用的仿真工具或者系统设计软件来进行功能仿真和优化。3) RTL 级描述: 指原理图(结构描述) 或者使用可综合的HDL 语句来描述的设计(一般是行为描述)。EDA 综合软件只能将RTL 级描述综合成逻辑电路。利用综合软件可以检查出所写的代码是否是RTL 级代码。对简单的设计而言, 可以直接从RTL 级开始设计, 但对大规模的设计, 最好先写系统行为级代码进行行为仿真。如果系统行为仿真正确, 就可以将行为级代码转化为RTL 级代码。这种转化称之为高层次综合或者行为级综合。转化的方法有2 种: 一是使用高层次综合工具自动转化, 例如SYNO PSYS 公司的Behavio r Comp iler3 ; 二是使用手工方法转化。手工方法使用很普遍, 原因是目前高层次综合的理论和方法还不成熟, 其工具难求或者其性能没有手工方法好。4) 功能仿真: 也叫RTL 级仿真, 是指不考虑延时信息的一种仿真, 只能验证RTL 级的行为描述是否能达到所要求的功能。功能仿真需要的输入是RTL 级代码、测试激励和库(有时要调用工艺库中宏功能单元的行为级模型)。可利用专用的仿真工具进行仿真, 如Modelsim,VCS 等工具。如果仿真不对, 则需要检查和修改RTL 级代码或者测试激励甚至系统方案。仿真的过程是先对源代码进行编译, 检查是否有语法错误。如果没有错误, 就将源代码转换为一种中间格式, 便于仿真工具的内部运算。编译的结果自动存放在一个指定的工作目录中, 仿真的结果主要以波形文件的形式存放。5) 逻辑综合: 逻辑综合是将RTL 级的行为描述转化为使用门级单元的结构描述。门级的结构描述称之为网表。网表文件主要记录的是所用工艺库门级单元之间的互连关系(即门级结构)。综合的输入需要RTL 级描述、约束和工艺库。综合时所加的约束一般比较简单, 如时钟频率、器件型号和其他综合设置等。综合的过程是translate (转换) + map (映射) +optimize (优化)。转换是将RTL 级行为描述转化为RTL 级结构描述(使用与工艺无关的通用逻辑门符号表示)。映射是将转换后的结果使用工艺库门级单元的连接关系来表示, 并根据需要进行优化, 形成网表文件。映射是对某种目标器件而言的一种资源分配和优化操作。一般综合工具能将转换后的结果显示为RTL 级原理图, 也能将网表显示为门级原理图。网表文件中含门级单元的延时信息, 对连线延时有预估值或者为零, 不同的软件处理的方法可能不同, 暂称之为网表文件1。网表文件的格式可以表示成标准格式(edif) , 也可以表示成VHDL 或者V erilog_ HDL 格式(在综合工具中设置)。综合报告文件中含所用逻辑资源、预估出的时钟最高频率、关键路径(延时最长的路径, 可在软件中显示) 等信息。6) 布线前门级仿真: 是门级功能仿真, 一般不考虑延时。该仿真的输入需要综合后的门级网表、工艺库和测试激励。有的EDA 工具不提供此仿真功能, 可以不做。7) 适配(布局布线) : 适配就是将网表文件映射到目标器件中的一种操作, 是对目标器件的第二次映射(第一次映射是综合)。即对网表中的每一个门级单元在器件中定位(布局) ,并使用器件内的连线资源按照网表中的连接关系连接起来(布线) 同时要满足引脚分配、时钟线的分配等约束条件。适配的输入需要网表文件1、工艺库(要使用其中的布线模型等信息) 和约束。适配所加的约束比较多, 如引脚分配、时钟树的分配、模块在器件中的定位等。适配后产生的文件有网表文件2、反标文件和编程文件等。根据适配工具和适配设置的不同, 产生的网表文件2 可以具有不同的格式并可以设置为包含延时信息(包括门延时和线延时)。反标文件含延时信息, 使用标准格式(SDF 格式) 表示。编程文件用于对器件编程下载。8) 时序仿真: 是最接近真实情况的一种仿真, 因为该仿真含所有的延时信息和约束信息(约束信息包含在网表文件2中)。时序仿真的输入需要测试激励、工艺库门级单元模型、网表文件2 和反标文件。如果网表文件2 中含有延时信息, 则不需要反标文件。时序仿真的结果跟延时关系极大。延时跟工艺有关, 特别是深亚微米工艺, 线延时大大超过门延时, 所以总延时跟布局布线关系极大。如果仿真结果不对, 要从约束、综合、布局布线、RTL 级代码等环节上找原因, 也可以借助时序分析工具找原因。9) 时序分析: 使用EDA 软件的时序分析功能能够分析所有时钟的频率、周期、关键路径和其他所有时钟路径上的延时信息, 进行建立时间和保持时间分析和输入到输出、输入到寄存器、寄存器到输出的延时分析等, 从而可以找出不满足时序关系的原因所在。时序分析是一个辅助功能, 有时可以不做。10) 器件编程: 指将适配后产生的编程文件下载到FP2GA C PLD 器件中。下载的过程就是一个改写器件内逻辑结构的过程, 故称之为编程。下载使用专用的编程器或者下载电缆。器件的编程接口一般使用10 针JTA G 插座。习惯上, 对CPLD 器件的下载叫编程, 对FPGA 器件的下载叫配置。CPLD 器件基于EEPROM 工艺或者FLA SH 工艺, 掉电后信息不丢失。而FGA P 器件基于SRAM 查找表工艺, 掉电后编程信息会丢失, 在下次上电后需要重新加载编程文件。配置方式有多种模式, 较常用的是PS 模式(调试时用) 和使用配置器件模式(产品中使用) , 它是使用一个EPROM 型的配置芯片, 先将编程数据烧写到配置芯片中, 配置芯片跟FPGA 使用专用接口引脚相连。这样, 上电后配置芯片自动给FPGA 加载编程数据。也可使用单片机进行配置。11) 系统验证: 先将FPGA 芯片在测试板上进行功能验证, 然后再到实际系统中验证。系统验证通过后就可以在产品中使用。至此, FPGA 芯片设计完成。2.4 主控芯片Cyclone简介 Cyclone系列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(分区)间的一些高速信号和一些第二全局时钟信号的布线;还有一些叫做短线资源,用以完成基本逻辑单元间的逻辑互联与布线;另外,在基本逻辑单元内部还有着各式各样的布线资源和专用时钟、复位等控制信号线。2.5 硬件描述语言VHDLVHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Description Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC.VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 底层嵌入功能单元:底层嵌入功能单元是指那些通用程度较高的嵌入式功能模块,比如pLL(phaseLockedLoop)、 DLL(DelayLockedLoop)、DSP、CPU等。本设计中用到了PLL嵌入式单元,该模块单元是通过开发平台的IP核生成器自动生成的(内嵌专用硬核里的内嵌专用硬核是有别于底层嵌入功能单元的,主要是指那些通用性相对较弱、不是所有FpGA器件都包括的硬核)。与其他硬件描述语言相比,VHDL具有以下特点: 功能强大、设计灵活VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。 支持广泛、易于修改由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。 强大的系统硬件描述能力VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。 独立于器件的设计、与工艺无关设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。 很强的移植能力VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。 易于共享和复用VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。3 脉冲序列检测器的设计3.1 脉冲序列检测器的原理 序列检测是指将一个指定的序列从数字流中识别出来,或在主串中查询相应子串,一般可以通过软件方法或时序电路即硬件方法实现,用硬件方法实现序列检测器时,检测器中存储模式串,主串可以通过输入端流入检测器,在主串的输入过程中,检测器可以动态检测子串。 检测器利用时序线路记忆已检测出的有效序列,并与自身所含的模式串进行比对,若检测成功,输出端自动输出成功标记。由于采用时序线路,主串的内容应每给一个上升沿或下降沿输入一位,具体应视所选触发器类型而定。我们提出一种新硬件实现方法,在该方法中对每一个状态都根据实际意义给予特殊的含义!由于不存在重复状态!故最终的状态图不用化简。序列检测器的初态是指被检序列的第一位出现前的特定状态,此状态后如果输入的代码对检测有效(即被测序列的第一位),则相应次态为新的状态(第2个状态,它记住了被测序列的第一位),否则相应次态仍为初态。 第2个状态是指被检序列的第一位出现后的特定状态, 此状态后如果输入的代码对检测有效(即被测序列的第2位)则相应次态为新的状态, (第2 个状态,它记住了被测序列的前2位),否则判断最近输入的代码是否是被检序列的第一位,是则相应次态仍为第2个状态,否则相应次态为初态。以次类推,第i个状态记住了被检序列的前i-1位,相应次态确定方法如下:假设序列长度为n 时,如果第i 个状态后输入的一位代码是被检序列的第i 位,则次态为新的状态(记住了被检序列的前i 位),否则次态按如下规则选择:从初态开始输入的i 位代码中如果其中的后i-j 位为被检序列的前i-j 位,则次态为第i-j+1 个状态(j=1,2,i-1,找到次态即停止),否则次态为初态,此时所有的外输出均为0。当i=n 时, 第n 个状态已经记住了被检序列的前n-1位,此状态后输入的一位代码如果是被检序列的第n 位,则外输出为1,否则外输出为0,其次态按如下规则选择:从初态开始输入的n 位代码中如果其中的后n-j 位为被检序列的前n-j 位,则次态为第i-j+1 个状态( j=1,2,,i-1,找到次态即停止) ,当j=n 时,次态为初态。3.2设计要求查找相关资料,确定基于FPGA的多路脉冲序列检测器的设计方案,要求能对多路脉冲序列信号进行检测。设计完成后,经综合和仿真验证后,在FPGA中实现。3.3 设计内容先设计序列发生器产生序列:1011010001101010;再设计序列检测器,检测序列发生器产生序列,若检测到信号与预置待测信号相同,则输出“1”,否则输出“0”,并且将检测到的信号的显示出来。1.序列信号发生器序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号。利用状态机设计,首先定义一个数据类型FSM_ST它的取值为st0到st15的16个状态。REGs0s1s2s3s4s5s6s7Q10110100REGs8s9s10s11s12s13s14s15Q011010102、序列检测器脉冲序列检测起可用于检测一组或多组二进制码组成的脉冲序列信号,当序列检测器连续接收到一组穿行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确的序列,直到连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等将回到初始状态重新开始检测。3、计数器利用序列检测器产生的信号(1和0)作为计数器模块的时钟信号,产生的信号0、1变化,形成类似的CLK信号,实现计数器计数。3.4设计步骤: 在VHDL编辑器中输入如下程序(1)序列信号发生器的代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHK IS PORT (CLK,RST :IN STD_LOGIC; CO :OUT STD_LOGIC );END SHK;ARCHITECTURE behav OF SHK IS TYPE FSM_ST IS (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15); SIGNAL REG:FSM_ST; SIGNAL Q:STD_LOGIC; BEGIN PROCESS(CLK,RST) BEGIN IF RST =1 THEN REG=s0;Q Q=1; REG Q=0;REG Q=1;REG Q=1;REG Q=0;REG Q=1;REG Q=0;REG Q=0;REG Q=0;REG Q=1;REG Q=1;REG Q=0;REG Q=1;REG Q=0;REG Q=1;REG Q=0;REGREG=s0;Q=0; END CASE; END IF; END PROCESS; CO=Q; END behav;转化成可调用的元件:波形仿真如下:(2)序列检测器的代码如下:library ieee;use ieee.std_logic_1164.all;entity SCHK1 isport(datain,clk:in std_logic;t: in std_logic_vector (4 downto 0); q:out std_logic; cq: out std_logic_vector (4 downto 0);end SCHK1;architecture rt1 of SCHK1 issignal reg:std_logic_vector(4 downto 0);beginprocess(clk)variable t1:std_logic_vector (4 downto 0);beginif clkevent and clk=1 thenreg(0)=datain;reg(4 downto 1)=reg(3 downto 0) ;end if;t1:=t; if reg=t1 then q=1 ; else q=0; cq0); ELSIF CLKEVENT AND CLK=1 THEN IF EN=1 THEN IF CQI0); END IF; END IF; END IF; IF CQI=153 THEN COUT=1; ELSE COUT=0; END IF; Q1=CQI(3 DOWNTO 0); Q2=CQI(7 DOWNTO 4); END PROCESS COUNT; END ARCHITECTURE ONE; 转化成可调用的元件:波形仿真如下:3.5 顶层文件设计通过前面的准备,我们已经得到了全部所需要的3个模块,即序列信号发生器、序列检测器、计数器。在此,我们运用原理图法来生成顶层实体。具体的实现方法是,将上述3个模块,通过我们的设计软件,生成可以移植,调用的原理图文件,在将其在顶层设计中直接调用即可。本次设计生成的顶层实体如下图所示:3.6测试和仿真1.置入待检测信号序列11010:仿真结果如下:2. 置入待检测信号序列10101:仿真结果如下:3.7结果分析:1. 根据序列发生器的输出端CO可以看出,序列发生器产生输出序列1011010001101010;2. 根据序列检测器的输出端q可以看出,当检测器检测到串行信号与预置的序列信号相同时,q则输出“1”,没有检测到,q则输出“0”;3. 根据计数器的输出端Q1可以看出,Q1将序列检测器检测到的序列信号的数目显示出来。4.通过仿真结果还可以看到,输出的波形出现了一些毛刺,这是因为信号在FPGA器件中通过逻辑单元连线时,一定存在延时。延时的大小不仅和连线的长短和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。因此,信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。这时,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”。3.8 8位序列检测器的设计设计一个8位序列信号的检测器,将检测预制序列作为外部输入,从而可随时改变检测序列。若检测到的序列与预置相同,则输出A,否则输出B。1. 在VHDL编辑器中输入如下程序library ieee;use ieee.std_logic_1164.all;entity SCHK1 isport(din,clk,clr : in std_logic; pre_load : in std_logic_vector(7 downto 0); ab: out std_logic_vector(3 downto 0);end SCHK1;architecture behav of SCHK1 issignal q : integer range 0 to 8;signal d : std_logic_vector(7 downto 0);beginD=pre_load;-置入待检测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铜冶炼过程中的环保设备研发进展预测分析研究考核试卷
- 金属加工中的金属加工设备维护管理信息系统考核试卷
- 矿石催化反应与催化机理考核试卷
- 银冶炼中的冶炼厂智能化改造与生产调度考核试卷
- 针织品生产计划与优化考核试卷
- 外科缝合穿针教学
- 口腔护士职业实践心得
- 麻醉科每月医疗质量控制
- 冷菜制作的卫生与安全
- 妊娠高血压疾病查房要点
- 铝粉加工合同协议书
- 大学语文试题及答案安徽
- 近七年宁夏中考化学真题及答案2024
- 2025至2030中国芳纶纤维行业需求预测及发展前景趋势研究报告
- 十一学校小升初入学测试数学真题及详细解答
- Braden 压力性损伤评分表详解
- 婚内赌博欠债协议书范本
- 造价咨询项目管理制度
- 徐圩港区疏港航道整治工程报告书
- XX公司事故隐患内部报告奖励制度1
- 儿童重症肺炎护理常规
评论
0/150
提交评论