1、第五章第五章 综合综合n内容提要内容提要 本章介绍了Xilinx公司的ISE5.2中的综合工具XST的综合属性、HDL代码参数设置、专用参数选项设置,使用XST综合设计、实行设计的步骤与方法。ISE5.2集成的下载配置工具iMPACT的结 构、操 作 步 骤 与 方 法。Altera公 司 的QuartusII3.0编译器和编程器的使用步骤与方法。第五章第五章 综合综合n知识要点知识要点:综合,实行,配置,综合工具XST,下载配置工具iMPACT,编译器,编程器n教学建议教学建议:本章的重点是掌握Xilinx公司 ISE5.2中的综合工具XST和下载配置工具iMPACT,Altera公司的Qu
2、artusII3.0编译器的结构特点与使用方法。第五章第五章 综合综合 建议学时数为4学时。注意区分Xilinx公司的综合、实行、配置工具与Altera公司的编译与编程工具的不同点。在学习过程中,应结合第8章中的应用实例设计,去掌握ISE5.2综合、实行、配置或者QuartusII3.0编译与编程的步骤、属性设置及技巧。注意综合、实行、配置或者编译与编程中属性参数的设置对设计的影响。应通过大量的实际设计过程加深对ISE5.2综合、实行、配置或者QuartusII3.0编译与编程的理解。FPGA系统设计与实践系统设计与实践 ISE5.2中的综合工具中的综合工具XST 5.1 ISE5.2中的综合
3、工具中的综合工具XST XST(Xilinx Synthesis Technology)是Xilinx ISE内嵌的综合工具。虽然XST与Synplify Pro等业界流行的综合工具相比特点并不突出,功能也不全面,但是Xilinx对自己的FPGA/CPLD内部的结构最为了解,所以XST对Xilinx器件的支持也最为直接,更重要的是XST内嵌在ISE中,安装ISE后可以直接使用,不需要另外付费。5.1 ISE5.2中的综合工具中的综合工具XST ISE中XST设计流程的综合阶段约束文件与实现阶段约束文件的概念并不分明,综合阶段的约束条件常常通过实现阶段的约束文件来完成。5.1 ISE5.2中的综
4、合工具中的综合工具XST XST的综合约束文件是XCF(XST Constrain File),而在布局布线阶段,最重要的约束文件是用户约束文件UCF(User Constraint File),两者有着千丝万缕的关系,UCF几乎支持XCF的所有约束语言与命令。通常在使用XST综合流程时,仅仅通过综合属性设置来设置全局性的综合策略与参数,细化的约束是通过实现阶段的约束文件UCF完成的。5.1.1 XST的综合属性的综合属性 XST是内嵌在ISE中的,使用起来也非常方便。XST综合是自动完成的,但是用户可以对其相关的参数进行设置。参数设置的目的是使XST根据设计者的需要完成综合过程,以便达到设计
5、要求。1.选择选择XST综合工具综合工具 选择综合工具2.XST综合属性综合属性 XST的可设置参数比较多,适当的设置综合参数,可以在一定程度上提高综合质量。综合参数主要是一些综合策略,大部分是通过选择来完成参数的设定。下面对XST中的参数进行简单的介绍。在Process for current sources中的Synthesize图标上单击鼠标右键,然后选择Properties,弹出的综合属性设置对话框如图所示。2.XST综合属性综合属性综合对话框2.XST综合属性综合属性(1)综合目标(Optimization Goal)综合目标设置可以确定综合时的全局优化目标是面积(Area)还是速度
6、(Speed)。由于大多数情况下,系统运行的速度是相当重要的,所以在缺省(默认)状态下,此属性的值为速度(Speed)。2.XST综合属性综合属性(2)综合难度(Optimization Effort)综合难度用来指定XST的综合工作的程度,有两个值可供选择,如果对速度或者面积要求不是很高可以选择Normal,否则选择High。这里有一个问题需要注意,设计者不要寄希望于XST的综合效果,并不是选择High就一定得到好的综合结果,真正重要的是设计者要保证设计的质量。2.XST综合属性综合属性(3)综合约束文件(Synthesis Constraint File)Synthesis Constra
7、int File用于指定综合约束文件的所在路径。(4)使用综合约束文件(Use Synthesis Constraint File)如果设计中有综合约束文件,那么在指定综合约束文件的所在路径后在此参数后打上勾,使XST在综合时受到综合约束文件的约束。2.XST综合属性综合属性 (5)全局优化目标(Global Optimization Goal)全局优化目标参数仅对FPGA有效,它用于一些时钟优化策略,包括的优化属性有:所有时钟节点约束(ALLCLOCKNETS)输入偏移约束(OFFSET_IN_BEFORE)输出偏移约束(OFFSET_OUT_AFTER)网线最大延迟约束(MAXIMUM_D
8、ELAY)输入到输出约束(INPAD_TO_OUTPAD)2.XST综合属性综合属性 这些约束主要用于指定寄存器之间,输入引脚到第一级寄存器之间,末级寄存器到输出引脚之间,输入引脚到输出引脚之间的约束策略。2.XST综合属性综合属性(6)生成寄存器传输级原理图(Generate RTL Schematic)XST可以将综合结果生成RTL视图。通过RTL视图可以分析设计和修改设计。选择YES或NO确定是否需要生成RTL视图。2.XST综合属性综合属性 (7)写时序约束条件(Write Timing Constrains)Write Timing Constrains参数仅对FPGA有效,用以指定
9、在HDL源代码或是XST约束文件中指定的时序约束关系是否对Xilinx的NGC网表有效。3.HDL代码参数设置代码参数设置 HDL代码参数设置与XST的编译有关,也就是说告诉编译工具如何理解HDL代码。HDL代码参数选项对话框如右图所示。3.HDL代码参数设置代码参数设置 (1)有限状态机编码方式(FSM Encoding Algorithm)有限状态机有多种编码方式,比较常见的有:一位热码(One-Hot)、顺序编码(Sequential)、格雷码(Gray)等,在默认状态下,XST的有限状态机编码方式为自动编码(Auto),即根据器件中的资源进行有效的编码。3.HDL代码参数设置代码参数设
10、置(2)RAM的提取方式(RAM Extraction)RAM Extraction参数用来指定是否使用RAM宏单元。(3)RAM实现的类型(RAM Style)RAM Style参数仅对FPGA有效。FPGA中含Block RAM(有块RAM)和可以形成Distributed RAM(分布式RAM),可以通过设置RAM Style使XST从代码中提取需要的RAM类型。3.HDL代码参数设置代码参数设置(4)ROM的提取方式(ROM Extraction)ROM Extraction参数用来指定是否使用RAM宏单元。(5)ROM实现的类型(ROM Style)ROM Style参数仅对FPGA
11、有效。FPGA中含有块RAM(Block RAM)和 可 以 形 成 分 布 式RAM(Distributed RAM),可以通过设置ROM Style使XST从代码中提取需要的ROM类型。3.HDL代码参数设置代码参数设置(6)多路选择器提取方式(MUX Extraction)MUX Extraction参数仅对FPGA有效,有以指定是否使用多路选择器宏单元。(7)多路选择器实现类型(MUX Style)MUX Style参数仅对FPGA有效,有以指定多路选择器宏单元的类型。缺省状态下为自动(Auto)。3.HDL代码参数设置代码参数设置(8)译码器提取方式(Decoder Extracti
12、on)Decoder Extraction参数仅对FPGA有效,用于指定是否使用译码器(Decoder)宏单元。(9)优先编码器提取方式(Priority Encoder Extraction)Priority Encoder Extraction参数仅对FPGA有效,用于指定是否使用优先编码器(Priority Encoder)宏单元。缺省为自动(Auto)。3.HDL代码参数设置代码参数设置(10)移位寄存器提取方式(Shift Register Extraction)Shift Register Extraction参数仅对FPGA有效,用于指定是否使用移位寄存器(Shift Regis
13、ter)宏单元。(11)逻辑移位寄存器提取方式(Logical Shifter Extraction)Logical Shifter Extraction参数仅对FPGA有效,用于指定是否使用逻辑移位寄存器(Logical Shifter)宏单元。3.HDL代码参数设置代码参数设置(12)异或单元合并方式(XOR Collapsing)XOR Collapsing参数仅对FPGA有效,用于指定相关联的异或(XOR)单元是否合并为一个较大的异或宏单元。(13)资源共享(Resource Sharing)Resource Sharing参数用于指定是否要求XST复用运算模块。3.HDL代码参数设置
14、代码参数设置(14)乘法器实现类型(Multiplier Style)Multiplier Style参数仅对FPGA有效,用于指定XST综合乘法器的类型,是基于查找表的(LUT)乘法器还是基于块乘法器(Block Multiplier)。4.Xilinx专用参数选项专用参数选项 Xilinx专用参数选项对话框中包含了一些Xilinx专有的结构中可以设置的属性。Xilinx 专用参数选项对话框如右图所示。4.Xilinx专用参数选项专用参数选项(1)添加I/O缓冲器(Add IO Buffers)Add IO Buffers参数用于指定是否需要在I/O上加上I/O缓冲器(IO Buffers)
15、(2)最大扇出数(Max Fanout)Max Fanout参数仅对FPGA有效,用于指定信号和网线的最大扇出数。4.Xilinx专用参数选项专用参数选项(3)寄存器复制(Register Duplication)Register Duplication参数仅对FPGA有效,用于指定是否允许进行寄存器复制(Register Duplication)。(4)等效寄存器删除(Equivalent Register Removal)Equivalent Register Removal参数用于指定是否把寄存器传输级功能相等的寄存器删除,以减少资源占用。4.Xilinx专用参数选项专用参数选项(5)寄
16、存器配平(Register Balancing)Register Balancing参数仅对FPGA有效,用于指定是否需要寄存器配平。寄存器配平是使较长路径缩短,较短路径加长,使其达到平衡从而提高工作频率的一种技术。4.Xilinx专用参数选项专用参数选项(6)Slice打包(Slice Packing)Slice Packing参数仅对FPGA有效,用于指定是否使用Slice打包技术(Slice Packing),使相关路径查找表逻辑尽量布局在同一个Slice中,从而缩短查找表之间的布线距离,提高了设计频率。4.Xilinx专用参数选项专用参数选项(7)是否使用I/O内部的寄存器实现I/O寄存器 (Pack I/O Register into IOBs)Pack I/O Register into IOBs参数仅对FPGA有效,用于指定是否使用I/O内部的寄存器作为设计的第一级寄存器。