《硬件描述语言》课件1 FPGA开发流程与硬件描述语言概述1_第1页
《硬件描述语言》课件1 FPGA开发流程与硬件描述语言概述1_第2页
《硬件描述语言》课件1 FPGA开发流程与硬件描述语言概述1_第3页
《硬件描述语言》课件1 FPGA开发流程与硬件描述语言概述1_第4页
《硬件描述语言》课件1 FPGA开发流程与硬件描述语言概述1_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FPGA开发流程与硬件描述语言提 纲传统设计方法的困境及其相应解决方案PLD发展简史FPGA基本结构FPGA开发流程FPGA设计中的层次关系与转换关系硬件描述语言及其在FPGA开发中的作用传统设计方法回顾传统设计方法的困境与解决方案复杂,工作量大,涉及大量的器件选型问题,而且最终设计出来的电路板会比较复杂解决方案:可编程逻辑器件PLD,特别是超大规模的可编程逻辑器件电路图可读性差,开发人员之间配合困难,设计自动化难以实现解决方案:硬件描述语言HDL错误查找以及调试成本高,只有设计出样机后才能进行实测。解决方案:各种EDA工具库与各阶段仿真提 纲传统设计方法的困境及其相应解决方案PLD发展简史F

2、PGA基本结构FPGA开发流程FPGA设计中的层次关系与转换关系硬件描述语言及其在FPGA开发中的作用可编程逻辑器件 PLDPLD(Programmable Logic Device)种类:基于与或阵列的简单PLDPROM、EPROM、EEPROM;PLA、PAL(Programmable Array Logic);GAL(Generic Array Logic) ;CPLD(Complex Programmable Logic Devices)FPGA (Field Programmable Gate Array)现场可编程门阵列 多核DSP结构:大颗粒度可编程逻辑器件的发展历程70年代80

3、年代90年代PROM 和PLA 器件PLA/PAL 器件GAL器件FPGA器件EPLD 器件CPLD器件内嵌复杂功能模块的FPGACPLD器件可编程逻辑器件工艺发展历程1985年,2m工艺,门数量不超过1000个;2001年,150nm工艺;2002年,130nm工艺;2003年,90nm工艺;2006年,65nm工艺,门数量已经达到千万级,晶体管个数超过10亿个;45/40nm工艺大的PLD生产厂家最大的PLD供应商之一FPGA的发明者,最大的PLD供应商之一ISP技术的发明者提供军品及宇航级产品提 纲传统设计方法的困境及其相应解决方案PLD发展简史FPGA基本结构FPGA开发流程FPGA设

4、计中的层次关系与转换关系硬件描述语言及其在FPGA开发中的作用FPGA的基本结构例:Xilinx公司Viertex II系列整体结构Xilinx公司的CLB结构示例2到4个Slice构成一个CLBXilinx公司的Slice结构示例IOB结构示意图LUT本质上就是RAM。常用的4输入查找表其实就是16*1的RAM。FPGA配置时对该RAM进行赋值。与真值表有对应关系。布线资源布线资源连通FPGA 内部的所有单元。连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA 芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为类不同的类别。第一类是全局布线资源,用于芯片内

5、部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank 间的高速信号等布线任务;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。FPGA中常见的其他资源Block RAM时钟管理器(DCM)内嵌的硬处理器核内嵌乘法器或MACDSPFPGA与CPLD的区别大多数FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失。因此,需在FPGA外加EPROM,将配置数据写入其中,系统每次上电自动将数据引入SRAM中。CPLD器件一般采用EEPROM存储技术,可重复编程,并且系统掉电后,EEPR

6、OM中的数据不会丢失,适于数据的保密。FPGA与CPLD的区别FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果要求实现较复杂的组合电路则需要几个CLB结合起来实现。CPLD的与或阵列结构使其适于实现大规模的组合逻辑功能,但触发器资源相对较少。FPGA与CPLD的区别FPGA为细粒度结构(也有人称FPGA为中等粒度),CPLD为粗粒度结构。FPGA内部有丰富连线资源,CLB分块较小,芯片的利用率较高。CPLD的宏单元的与或阵列较大,通常不能完全被应用,且宏单元之间主要通过高速数据通道连接,其容量有限,限制了器件的灵活布线,因此CPLD利用率较FPGA器件低。FPGA与CPLD的区别FPG

7、A为分段式布线,CPLD为连续式布线。FPGA器件在每次编程时实现的逻辑功能一样,但走的路线不同,因此延时不易控制,要求开发软件允许工程师对关键的路线给予限制。CPLD每次布线路径一样,CPLD的连续式互连结构利用具有同样长度的一些金属线实现逻辑单元之间的互连。连续式互连结构消除了分段式互连结构在定时上的差异,并在逻辑单元之间提供快速且具有固定延时的通路。CPLD的延时较小。FPGA与CPLD的区别一般情况下,FPGA集成度更高,内嵌资源丰富,更适合用于大型设计。CPLD集成度较低,但使用相对简单,适合于中小型设计。提 纲传统设计方法的困境及其相应解决方案PLD发展简史FPGA基本结构FPGA

8、开发流程FPGA设计中的层次关系与转换关系硬件描述语言及其在FPGA开发中的作用FPGA设计的一般流程 设计流程(1)设计准备在系统设计之前,首先要进行方案论证、系统设计、器件选择等准备工作。设计人员根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源、成本、以及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。 设计流程(2)设计输入将所设计的系统或电路以开发软件要求的某种形式表示出来,并送入计算机的过程称为设计输入。设计输入通常有以下几种形式:原理图输入方式 :直观,符合思维习惯;要求设计者具有丰富的硬件知识;效率低,通用性差;硬件描述语言输入方式 :效率高,通用性

9、强;不必对底层硬件非常熟悉;波形输入方式 :辅助输入方式。设计流程(3)功能仿真功能仿真也叫前仿真。用户所设计的电路必须在编译之前进行逻辑功能验证,此时的仿真没有延时信息,对于初步的功能检测非常方便。仿真前,要先利用波形编辑器和硬件描述语言等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察到各个节点的信号变化。如果发现错误,则返回设计输入中修改逻辑设计。设计流程(4)设计处理设计处理是FPGA设计中的核心环节。在设计处理过程中,编译软件对设计输入文件进行逻辑简化、综合优化和适配,最后产生编程用的编程文件。语法检查和设计规则检查逻辑

10、优化和综合适配和分割布局和布线设计流程(5)时序仿真时序仿真又称后仿真或延时仿真。由于不同器件的内部延时不一样,不同的布局布线方案也给延时造成不同的影响,因此在设计处理以后,对系统和各模块进行时序仿真,分析其时序关系,估计设计的性能,以及检查和消除竞争冒险等是非常有必要的。实际上这也是与实际器件工作情况基本相同的仿真。设计流程(6)器件编程与测试时序仿真完成,经检查结果无误,可用软件产生供器件编程使用的文件。器件的编程就是将编程数据放到相应的FPGA器件中去。现代主流FPGA都支持两种下载方式,一种是采用JTAG接口与PC机相连进行下载;另一种是先将数据存在片外的PROM里,再由PROM和FP

11、GA之间的电路连接根据规定的时序下载到FPGA中。测试方法通常也有两种,一种是通过事先预留的测试管脚将感兴趣的信号线引到电路板上,用示波器、逻辑分析仪等进行测试。另一种方法是用FPGA供应商提供的虚拟逻辑分析仪进行测试。如Xilinx公司的Chipscope。提 纲传统设计方法的困境及其相应解决方案PLD发展简史FPGA基本结构FPGA开发流程FPGA设计中的层次关系与转换关系硬件描述语言及其在FPGA开发中的作用现代数字系统设计中的转换关系系统设计的抽象级别在理论上,所有设计工作都可以在silicon level 上进行设计并实现,但实际开发中是不可行的,不可能在合理的时间内完全在silic

12、on level上设计出一个大系统;选择适当的抽象级别可以使我们:在设计中避免考虑过多不必要的细节问题;缩短设计周期;系统设计的域现代数字系统设计既可以在结构域完成,也可以在行为域完成。在行为域进行设计需要借助综合工具转化到结构域,再由其他工具转化到物理域,完成最终设计。FPGA中的设计大部分是用硬件描述语言在行为域实现,但是也经常用到结构域描述。传统的电路设计方法一般是从底层开始,逐步向上元器件功能模块电路板系统Top-Down设计思想系统电路板功能模块子模块具体实现每一级都可以通过仿真来验证设计,能够及时修改错误。实际的FPGA设计中通常采用的方式是二者的混和。Top-Down 设计思想提

13、 纲传统设计方法的困境及其相应解决方案PLD发展简史FPGA基本结构FPGA开发流程FPGA设计中的层次关系与转换关系硬件描述语言及其在FPGA开发中的作用硬件描述语言HDLHDL是Hardware Description Language的缩写,正式中文名称是“硬件描述语言”。用类似于计算机编程语言的方式描述硬件。HDL并不是“硬件设计语言(Hardware Design Language)”。但是目前经常被用于设计。能进行不同域、不同层次的描述。但是不同的HDL所能描述的层次略有差别。 硬件描述语言HDL利用这种语言,可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的

14、模块来表示复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路 ASIC 或现场可编程门阵列 FPGA 自动布局布线工具,把网表转换为要实现的具体电路结构。硬件描述语言HDL硬件描述语言的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化起到了极大的促进和推动作用。这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认

15、同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE标准。随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。为适应新的情况,出现了很多新的硬件描述语言,像Superlog、System Verilog、SystemC、Cynlib C+、HandleC等等。硬件描述语言vs.普通程序设计语言共同点:硬件描述语言一般脱胎于普通程序设计语言继承了普通程序设计语言的很多元素,如函数、数据类型、运算符等。总体来说,语法类似,设计思路也有类似之处。如软件工程的很多思想对于基于硬件描述语言的数字系统设计中同样适用

16、。主要区别:普通程序设计语言一般是顺序执行的,而硬件描述语言必须支持并行执行。写硬件描述语言必须有硬件思维,否则即使合乎语法,也不能用于电路设计。如复杂的算术运算、浮点数等。学习HDL的几点提示 了解HDL的可综合性问题:如果HDL代码是用于硬件实现(如用于FPGA设计),就必须保证这些代码可综合,即HDL代码的功能可以用硬件电路实现。不是所有的HDL描述都能用硬件实现的。所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。 不可综合的HDL语句在软件综合时将被忽略或者报错。 用硬件电路设计思想来编写HDL:编写HDL,就是在描述一个电路,写完一段程序后,应当对生成的电路有大

17、体上的了解。语法掌握贵在精,不在多30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,容易产生兼容性问题,也不利于其他人阅读和修改。VHDL早在80年代初,美国国防部开始进行VHDL的开发。1987年,VHDL成为IEEE标准,称为IEEE 1076-1987。第二个版本是在1993年制定的,称为1076-1993,增加了一些新的命令和属性。Verilog HDL1990年,Cadence公司公开Verilog HDL语言;IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL 1364-1995;2001年发布了

18、Verilog HDL 1364-2001标准。在这个标准中,加入了Verilog HDL-A标准,使Verilog有了模拟设计描述的能力。其他HDLABEL-HDL :一种早期的硬件描述语言 AHDL :移植性差,只用于Altera的开发系统 基于C/C+的HDL:SystemC IEEE 1666(2005.12)HandleCSystemVerilog IEEE 1800(2005.11)IEEE 1364-2005(BASE)VHDL和Verilog的比较VHDL语言比Verilog更严禁,但是程序结构相对复杂,比较难学。VHDL在欧洲使用群体更多,Verilog在美国和日本使用更多。ASIC开发中Verilog使用更为广泛。在国内两者的使用都比较广泛概念很类似,有对应关系。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。 本课程主要以Verilog HDL为例进行讲解。二者建模能力比较 VHDL VITAL 系统级 算法级 寄存器传输级 逻辑门级 开关电

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论