1.3 FPGA 的设计流程

51
1.3 FPGA 的的的的的

description

1.3 FPGA 的设计流程. 1.3.1 可编程逻辑器件的一般设计流程. 可编程逻辑器件的设计过程是利用 EDA 开发软件和编程工具对器件进行开发的过程。可编程逻辑器件的一般设计流程如图 1.3.1 所示,包括设计准备,设计输入,功能仿真,设计处理,时序仿真和器件编程及测试等七个步骤。. 图 1.3.1 可编程逻辑器件的一般设计流程. 1 .设计准备. - PowerPoint PPT Presentation

Transcript of 1.3 FPGA 的设计流程

Page 1: 1.3 FPGA 的设计流程

1.3 FPGA 的设计流程

Page 2: 1.3 FPGA 的设计流程

1.3.1 可编程逻辑器件的一般设计流程 可编程逻辑器件的设计过程是利用 EDA 开发软件和编程工具对器件进行开发的过程。可编程逻辑器件的一般设计流程如图 1.3.1所示,包括设计准备,设计输入,功能仿真,设计处理,时序仿真和器件编程及测试等七个步骤。

Page 3: 1.3 FPGA 的设计流程

图 1.3.1可编程逻辑器件的一般设计流程

Page 4: 1.3 FPGA 的设计流程

1 .设计准备 在系统设计之前,首先要进行的是方案论证,系统设计和器件选择等准备工作。设计人员需要根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源、成本及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。一般采用自顶向下的设计方法。

Page 5: 1.3 FPGA 的设计流程

2 .设计输入 设计输入是设计人员将所设计的系统或电路以开发软件要求的某种形式表示出来,并送入计算机的过程。设计输入通常有以下几种形式: ( 1 )原理图输入方式( 2 ) HDL (硬件描述语言)输入方式( 3 )波形输入方式

Page 6: 1.3 FPGA 的设计流程

( 1 )原理图输入方式 原理图输入方式是一种最直接的设计描述方式,要设计什么,就从软件系统提供的元件库中调出来,画出原理图。这种方式要求设计人员有丰富的电路知识及对 PLD 的结构比较熟悉。其主要优点是容易实现仿真,便于信号的观察和电路的调整;缺点是效率低,特别是产品有所改动,需要选用另外一个公司的 PLD 器件时,就需要重新输入原理图,而采用硬件描述语言输入方式就不存在这个问题。

Page 7: 1.3 FPGA 的设计流程

( 2 ) HDL (硬件描述语言)输入方式 硬件描述语言是用文本方式描述设计,它分为普通硬件描述语言和行为描述语言。普通硬件描述语言有 ABEL 、 CUR 和 LFM 等,它们支持逻辑方程。真值表、状态机等逻辑表达方式,主要用于简单 PLD 的设计输入。行为描述语言是目前常用的高层硬件描述语言,主要有 VHDL 和 Verilog HDL 两个 IEEE 标准。其突出优点有:语言与工艺的无关性,可以使设计人员在系统设计、逻辑验证阶段便确立方案的可行性;语言的公开可利用性,便于实现大规模系统的设计;具有很强的逻辑描述和仿真功能,而且输入效率高,在不同的设计输入库之间的转换非常方便,用不着对底层的电路和 PLD 结构的熟悉。

Page 8: 1.3 FPGA 的设计流程

( 3 )波形输入方式 波形输入方式主要是用来建立和编辑波形设计文件,以及输入仿真向量和功能测试向量。波形设计输入适用于时序逻辑和有重复性的逻辑函数。系统软件可以根据用户定义的输入/输出波形自动生成逻辑关系。波形编辑功能还允许设计人员对波形进行拷贝、剪切、粘贴、重复与伸展,从而可以用内部节点、触发器和状态机建立设计文件,并将波形进行组合,显示各种进制的状态值,也可以将一组波形重叠到另一组波形上,对两组仿真结果进行比较。

Page 9: 1.3 FPGA 的设计流程

3 .功能仿真 功能仿真在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延时信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和硬件描述语言等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察到各个节点的信号变化。如果发现错误,则返回设计输入中修改逻辑设计。

Page 10: 1.3 FPGA 的设计流程

4 .设计处理 设计处理是器件设计中的核心环节。在设计处理过程中,编译软件将对设计输入文件进行逻辑化简、综合优化和适配,最后产生编程用的编程文件。

Page 11: 1.3 FPGA 的设计流程

( 1 )语法检查和设计规则检查 设计输入完成后,首先进行语法检查,如原理图中有无漏连信号线,信号有无双重来源,文本输入文件中关键字有无输错等各种语法错误,并及时列出错误信息报告供设计人员修改,然后进行设计规则检验,检查总的设计有无超出器件资源或规定的限制,并将编译报告列出,指明违反规则情况以供设计人员纠正。

Page 12: 1.3 FPGA 的设计流程

( 2 )逻辑优化和综合 化简所有的逻辑方程或用户自建的宏,使设计所占用的资源最少。综合的目的是将多个模块化设计文件合并为一个网表文件,并使层次设计平面化。

Page 13: 1.3 FPGA 的设计流程

( 3 )适配和分割 确立优化以后的逻辑能否与器件中的宏单元和I/O用单元适配,然后将设计分割为多个便于识别的逻辑小块形式映射到器件相应的宏单元中。如果整个设计较大,不能装入一片器件时,可以将整个设计划分(分割)成多块,并装入同一系列的多片器件中去。分割可全自动、部分或全部用户控制,目的是使器件数目最少,器件之间通信的引脚数目最少。

Page 14: 1.3 FPGA 的设计流程

( 4)布局和布线 布局和布线工作是在上面的设计工作完成后由软件自动完成的,它以最优的方式对逻辑元件布局,并准确地实现元件间的互连。布线以后软件自动生成报告,提供有关设计中各部分资源的使用情况等信息。

Page 15: 1.3 FPGA 的设计流程

5 .时序仿真 时序仿真又称后仿真或延时仿真。由于不同器件的内部延时不一样,不同的布局布线方案也给延时造成不同的影响,因此在设计处理以后,对系统和各模块进行时序仿真,分析其时序关系,估计设计的性能,以及检查和消除竞争冒险等是非常有必要的。实际上这也是与实际器件工作情况基本相同的仿真。

Page 16: 1.3 FPGA 的设计流程

6 .器件编程测试 时序仿真完成后,软件就可产生供器件编程使用的数据文件。对 EPLD/ CPLD来说,是产生熔丝图文件,即 JED 文件。对于 FPGA 来说,是产生位流数据文件( Bitstream Generation),然后将编程数据放到对应的具体可编程器件中去。

Page 17: 1.3 FPGA 的设计流程

器件编程需要满足一定的条件,如编程电压、编程时序和编程算法等。普通的EPLD/ CPLD 器件和一次性编程的 FPGA 需要专用的编程器完成器件的编程工作。基于 SRAM 的 FPGA 可以由 EPROM或其它存储体进行配置。在线可编程的PLD 器件不需要专门的编程器,只要一根编程下载电缆就可以了。

Page 18: 1.3 FPGA 的设计流程

器件在编程完毕后,可以用编译时产生的文件对器件进行校验、加密等工作。对于支持 JTAG技术,具有边界扫描测试 BST( Bandary-Scan Testing )能力和在线编程能力的器件来说,测试起来就更加方便。

Page 19: 1.3 FPGA 的设计流程

1.3.2 基于 MAX 十 plusⅡ的设计流程 MAX + plusⅡ是 Altera提供的 FPGA/ CPLD 开发集成环境。在 MAX + plusⅡ上可以完成 FPGA 的整个设计流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。 基于 MAX + plusⅡ软件的设计流程如图 1.3.2 所示,分为 4个步骤,包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编程文件汇编(装配)以及编程下载等过程。

Page 20: 1.3 FPGA 的设计流程

图 1.3.2 基于 MAX 十 plusⅡ的设计流程

设计输入(图形编辑器,文本编辑器,符号编辑器,波形编辑器)

项目处理(网表提取器,数据库,逻辑综合器,适配器)

项目校验(仿真器,时间分析器)

器件编程(编程器)

Page 21: 1.3 FPGA 的设计流程

1. 设计输入 MAX + plusⅡ软件的设计文件可以来自 MAX +plusⅡ设计输入工具或各种工业标准的 EDA 设计输入工具。 MAX + plusⅡ强大的集成功能允许信息在各种应用程序间自由交流,设计者可在一个工程内直接从某个设计文件转换到其他任何设计文件,而不必理会设计文件是图形格式、文本格式,还是波形格式。 MAX + plusⅡ具有原理图输入与符号编辑、硬件描述语言输入、波形设计输入、平面图编辑、层次设计输入多种设计输入方法。

Page 22: 1.3 FPGA 的设计流程

2. 项目处理 MAX + plusⅡ处理一个设计时,软件编译器读取设计文件信息,产生用于器件编程、仿真、定时分析的输出文件。消息处理器可自动定位编译过程中发现的错误,编译器还可优化设计文件。

Page 23: 1.3 FPGA 的设计流程

项目处理基本步骤 项目处理包括以下基本步骤: ①消息处理器自动定位错误; ②逻辑综合与试配。 ③定时驱动编译。 ④设计规则检查。 ⑤多器件划分。 ⑥产生用于仿真的工业标准格式。 ⑦生成编程文件。

Page 24: 1.3 FPGA 的设计流程

3. 项目校验 MAX + plusⅡ提供的设计校验功能包括设计仿真与定时分析,用于测试设计的逻辑操作和内部时序。其中设计仿真又分为功能仿真、时序仿真和多器件仿真。

Page 25: 1.3 FPGA 的设计流程

4. 器件编程 MAX + plusⅡ编程器使用编译器生成的编程文件对 Altera器件进行下载编程,它可用来进行器件编程、校验、检查、探测空白及功能测试。

Page 26: 1.3 FPGA 的设计流程

1.3.3 基于 QuartusⅡ的设计流程 Quartus Ⅱ是 Altera 继MAX + plusⅡ之后提供的 FPGA/ CPLD 开发集成环境。目前,Altera公司最新的 QuartusⅡ设计软件是 3.0版,该版本设计软件包括了许多新的功能,将设计性能改善了 15 %,编译时间缩短了 50%。 Quartus Ⅱ3.0 版设计软件除了支持 Altera的 APEX 20KE 、 APEX 20KC 、 APEX Ⅱ、 ARM 的 Excalibur嵌入处理器方案、 Mercury、Stratix、 FLEX10KE 和 ACEXIK之外,还支持MAX3000A 、 MAX7000系列乘积项器件。

Page 27: 1.3 FPGA 的设计流程

基于 QuartusⅡ的设计流程如图1.3.3 所示。

图 1.3.3 基于 QuartusⅡ的设计流程

Page 28: 1.3 FPGA 的设计流程

1. 设计输入 Quartus Ⅱ支持多种设计输入方法。 QuartusⅡ本身具有的编辑器支持原理图式图形设计输入,文本编辑输入(如 AHDL 、VHDL 、 Verilog )和内存编辑输入(如Hex、 Mif)。第三方 EDA 工具编辑的标准格式文件,如 EDIF 、 HDL 、 VQM 。也可以采用一些别的方法优化和提高输入的灵活性,如混合设计格式,利用 LPM 和宏功能模块来加速设计输入。

Page 29: 1.3 FPGA 的设计流程

2. 设计项目的编译 Quartus Ⅱ编译器的功能包括设计错误检查、逻辑综合、 Altera适配器件以及为仿真、定时分析和器件编程产生输出文件。编译器首先提取项目设计文件之间的层次连接信息并检查基本的设计输入错误,然后结合所有的设计文件生成能被高效处理的数据库。设计人员能指示编译器应用许多技术,如定时驱动编译,增加设计速度及优化器件资源的利用率。在编译过程中和编译后,用户都能在编译结果报告窗口看到结果。编译器生成的编程文件可用 Quartus编程器或其它工业标准编程器对 Altera器件进行编程或配置。

Page 30: 1.3 FPGA 的设计流程

( 1 )编译设置 QuartusⅡ软件允许编译一个完整的设计或者设计的任何组成部分。对一个新建项目软件创建缺省的编译设置,用户可以通过指定编译设置选项来创建用户的编译设置,以后可以直接调用该编译设置。 QuartusⅡ软件的编译设置指南可以轻松地帮助用户完成编译设置。

Page 31: 1.3 FPGA 的设计流程

( 2 )资源分配 设计人员可以将自己设计中的部分逻辑分配到器件资源的特定位置,如可将模块设计文件(. bdf)中的某一模块的逻辑分配到器件特定的 MegaLAB 行中,MegaLAB 是 APEX器件的大规模结构。

Page 32: 1.3 FPGA 的设计流程

( 3 ) 编译设计 点击快捷键或在 Processing 下拉菜单中选择 Start Compilation或 Start analysis & Elaboration开始完全或部分编译。在状态栏中将显示编译进度的百分比和每阶段所花费时间,编译的结果在编译报告栏中自动更新,编译完后的结果将显示。如果编译后有错误和警告信息,就要对设计原文件进行修改,再重新编译直到无错误和警告信息为止。 编译完后将产生一个编译报告栏,它包含了怎样将一个设计放到一个器件中的所有信息,如器件使用统计、编译设置、底层显示、器件资源利用率,状态机的实现、方程式、延时分析结果和 CPU 使用资源等。

Page 33: 1.3 FPGA 的设计流程

( 4)查看适配结果 在编译成功后,就可在最后编译平面图中查看结果。平面图显示了编译器是怎样将逻辑设计分配到 Altera器件中去的。没用的单元为白色,使用过的单元为彩色并互相连接。在编译平面图中点击逻辑单元,还可查看该逻辑单元的路由连接关系

Page 34: 1.3 FPGA 的设计流程

( 5) 分配逻辑到 ESB 设计人员可以使用映射选项技术,强制Quartus软件将自己的逻辑设计在特殊的器件资源中实现,如 ESB ( Embedded System Block)。 ESB 是存在于 APEX、 Mercury和基于 ARM/MIPS的 Excalibur 系列器件中的一种结构,能实现存储器( RAM , ROM , FIFO或 CAM )或组合逻辑。在进行新的资源分配前,设计人员可以回注在上次编译过程中编译器所作的任何分配,以确保后面的编译具有相同的适配。

Page 35: 1.3 FPGA 的设计流程

3. 延时分析和仿真 1 )延时分析 QuartusⅡ支持对单个时钟或多个时钟的延时分析:单个时钟的延时分析包括 Fmax(最大时钟频率及最差情况下的寄存器到寄存器的延时)、 Tsu(建立时间)、 Th(保持时间)、 Too (时钟到输出时间)、 Tm(各个引脚之间的延时)及整个系统的 Fmax(包括引脚上的输入输出延时)。

Page 36: 1.3 FPGA 的设计流程

1 )延时分析 QuartusⅡ支持用户对多个时钟的延时分析,可以分析由不同时钟控制的寄存器之间的延时,可以运用 Slack进行分析。 QuartusⅡ自动检测组合逻辑电路。不同类型的延时信息(请参考编译部分),包括没有布局布线的延时信息,经过布局布线的延时信息及混合的树状层次型设计。在缺省情况下,在编译之后一般自动调用延时分析,也可以禁止调用。 QuartusⅡ生成的延时信息也可以以 VHDL , Verilog 或标准延时文件( SD )的格式输出到第三方的 EDA 工具中。所有的延时分析信息都包含在编译报告中。

Page 37: 1.3 FPGA 的设计流程

( 2 )仿真 QuartusⅡ支持多种仿真方法。 ①波形方式输入: .vwf(向量波形文件)是 QuartusⅡ中最主要的波形文件; .vec(向量文件)是 MAX + PLUSⅡ中的文件,主要是为了向下兼容; .tbl (列表文件)用来将 MAX + PLUSⅡ中的 .scf文件输入到 Quartus Ⅱ中。 ②支持 Testbench: Tcl/TK 脚本文件; Verilog/ VHDL Testbench。 ③第三方的仿真工具:其中 QuartusⅡ支持的第三方 EDA 仿真工具有: Model Technology( Modelsim); Cadence ( VERILOG- XL ); Synopsys( VCS); Synopsys( VSS)。

Page 38: 1.3 FPGA 的设计流程

4. 器件编程 Quartus编程器可以配置 Altera公司的 APEX、 FLEX6000、 Mercury及基于 ARM/MIPS的 Excalibur 系列器件,并能校验、测试和在配置前对空器件进行检查。该编程器和编程硬件( ByteBlasterMV 与 MasterBlaster 通信电缆)很容易地在几分钟内就可以编程或配置一个工作芯片。配置模式包括被动串行配置和 JTAG 等模式。

Page 39: 1.3 FPGA 的设计流程

1.3.4 基于 ISE 的设计流程 ISE 系列软件是 Xilinx公司推出的集成 EDA 开发工具,它支持 Xilinx公司的所有 CPLD/ FPGA 产品。目前, ISE 系列软件的最高版本是 5.x,包括 ISE Foundation、 ISE Alliance 、 ISE WebPACK和 ISE BaseX四种类型。不同版本类型的 ISE 软件在性能上略有区别。 基于 ISE 的设计流程如图 1.3.4所示,主要包括设计输入、功能仿真、综合、实现、时序仿真和下载配置等几个步骤。

Page 40: 1.3 FPGA 的设计流程

图 1.3.4 基于 ISE 的设计流程

Page 41: 1.3 FPGA 的设计流程

1. 设计输入 ISE 系列软件采用基于工程的分层次管理,支持硬件描述语言、原理图和状态图的混合设计输入方式。硬件描述语言设计、原理图设计和状态图设计具有不同的特点,适用于不同的场合,设计输入方式特性比照表如表 1.3.1 所示。

Page 42: 1.3 FPGA 的设计流程

表 1.3.1 设计输入方式特性比照表

Page 43: 1.3 FPGA 的设计流程

2. 综合 在 ISE 系列软件中, Xilinx公司推出了自己的综合工具 XST,并支持第三方综合工具,如 Synplify、 FPGA Express等。在 FPGA 设计过程中,设计的综合效果主要取决于设计者的设计风格和综合工具的综合能力。

Page 44: 1.3 FPGA 的设计流程

3. 功能仿真 在 FPGA 设计过程中,功能仿真是最基本的仿真验证,它主要针对实现前的设计文件。功能仿真的主要目的是验证设计文件的逻辑功能是否正确,是否满足设计要求。在功能仿真过程中, ISE 系列软件支持波形仿真激励和硬件描述语言仿真激励。

Page 45: 1.3 FPGA 的设计流程

4. 实现 在 ISE 系列软件中, FPGA 设计的实现主要包括 : 转换( Translate )、 映射( Map)、 布局布线( Place& Route ) 时间参数提取( Timing )

Page 46: 1.3 FPGA 的设计流程

( 1 )转换( Translate ) 在转换过程中,多个设计文件和约束文件将被合并为一个 NGD 文件,并同时输出 BLD 文件。其中, NGD 文件包含当前设计的全部逻辑描述, BLD 文件是转换的运行报告。转换可以接受的设计文件包括 EDN、 EDF 、 EDIF 和 SEDIF 文件,转换的约束文件包括 UCF 、 NCF 、NMC 和 N GC 文件。

Page 47: 1.3 FPGA 的设计流程

( 2 )映射( Map) 在映射过程中,当前设计的 NGD 文件将被映射为目标器件的特定物理单元(如 C LB 、 IOB ),并保存在 NCD 文件中。映射的输入文件包括 NGD 、NMC 、 NCD (可选)和 MFP (可选)文件,输出文件包括 NCD 、 PCF 、 NGM 和 MRP 文件。其中, MFP 文件是通过 Floorplanner生成的布局约束文件, NCD 文件包含当前设计的物理映射信息, PCF 文件包含当前设计的物理约束信息,NGM 文件与当前设计的静态时序分析有关, MRP文件是映射的运行报告。 MRP 文件中主要包括映射的命令行参数、目标设计占用的逻辑资源、映射过程中出现的错误和警告、优化过程中删除的逻辑、目标设计占用的 IOB 资源等内容。

Page 48: 1.3 FPGA 的设计流程

( 3 )布局布线 通过读取当前设计的 NCD 文件,布局布线将映射产生的物理单元在目标器件上放置和连接,并提取相应的时间参数。布局布线的输入文件包括 NCDJCF 和 NCD (可选)模板文件,输出文件包括NCD 、 DLY、 PAD 和 PAR 文件。在布局布线的输出文件中, NCD 文件包含当前设计的全部物理实现信息, DLY文件包含当前设计的网络时延信息, PAD 文件包含当前设计的 I/O管脚配置信息, PAR 文件是布局布线的运行报告。 PAR 文件主要包括布局布线的命令行参数、布局布线中出现的错误和警告、目标设计占用的资源、未布线网络、网络时序信息等内容。

Page 49: 1.3 FPGA 的设计流程

( 4)时间参数提取 时间参数提取将生成当前设计的含有时间参数的返标网表,该返标网表将用于时序仿真。时间参数提取的输入文件包括 NCD 和 PCF (可选)文件。时间参数提取输出的时序报告可以反映当前设计是否满足时序约束。

Page 50: 1.3 FPGA 的设计流程

5. 时序仿真 在高速 FPGA 设计过程中,时序仿真是必不可少的仿真验证形式。通过计算各信号之间的时间延迟,时序仿真可以有效地分析设计中可能存在的竞争和冒险,从而确定设计的实际工作性能。多数情况下,时序仿真验证的结果基本上与实际电路的工作结果相一致。

Page 51: 1.3 FPGA 的设计流程

6. 下载配置 下载配置是将实现后的设计文件转换为在 FPGA 中实际使用的数据文件,并进行硬件配置的过程。 针对不同的器件类型和应用场合, Xilinx公司为其 FPGA 系列产品提供了 JTAG 模式、 Parallel 模式、 Master Serial 模式、 Slave Serial模式等多种下载配置模式。不同的 FPGA 产品可以采用不同的下载配置模式。