FPGA开发流程及的设计工具_第1页
FPGA开发流程及的设计工具_第2页
FPGA开发流程及的设计工具_第3页
FPGA开发流程及的设计工具_第4页
FPGA开发流程及的设计工具_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

实现⊿实现(Implement)是将设计的逻辑网表信息翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。⊿实现主要分为3个步骤:﹍翻译逻辑网表(Translate)﹍映射到器件单元(Map)﹍布局布线(Place&Route)⊿实现前应该设计实现约束条件:约束条件一般包括管脚锁定、时钟约束、全局时钟、第二全局时钟、分组约束和物理特性约束等信息。⊿ISE中可以使用约束编辑器(ConstraintsEditor)生成约束文件(UCF)。11/23/20245第2章⊿转换(Translate)

实现中重要的一步,把所有的输入网表和设计约束信息合并为一个NGD(NativeGenericDatabase)文件,用于FPGA映射。⊿转换后仿真将设计转换为RTL级描述后进行仿真。仅仅是逻辑仿真,不包含实现器件的信息。⊿映射相当于PCB设计中将网表与具体的封装相结合。对NGD文件进行设计规则检查,把转换生成的逻辑设计网表转换为具体的FPGA器件的具体资源结合起来,也就是使用目标器件中的资源来实现设计的功能。输出NCD文件,供PAR使用。11/23/20246第2章⊿映射后仿真相当于PCB制作过程的原理图仿真。将设计映射到具体工艺和器件后进行的逻辑仿真,是时序仿真,包含了器件本身的延时信息。由于没有布线,不包含连线的长度、电阻、电容的影响。⊿布局布线(PAR)使用映射后NCD文件,使用FPGA内哪些资源(布局),把这些资源连接起来(布线)。生成布局布线后NCD文件,用于生成下载程序文件。⊿布局布线后仿真相当于PCB仿真。利用布局布线工具提取的信息进行仿真,包含了目标器件及互连线的延时、电阻、电容等信息。11/23/20247第2章2.2ISE集成工具介绍设计输入工具综合工具仿真工具实现工具辅助设计工具11/23/20248第2章设计输入工具ISE集成的设计工具主要包括HDL编辑器(HDLEditor)、状态机编辑器〔StateCAD)、原理图编辑器(ECS)、IP核生成器(Core-Generator)和测试激励生成器(HDLBencher)等。⊿HDL编辑器(HDLEditor)---HDL编辑器可以完成设计电路的HDL语言的输入。根据语法以彩色显示关键字,支持VHDL和VerilogHDL的输入。⊿状态机编辑器(StateCAD)---设计者只需画出状态转移图,状态机编辑器就能自动生成相应的VHDL或VerilogHDL语言模型。使用StateCAD设计状态机,生成的代码规范、清晰,能在一定程度上缓解设计者的工作量。⊿ECS(SchematicEditor)---原理图编辑器用于完成电路的原理图输入。它功能强大、元件库齐全、设计方便。原理图输入方式在大规模设计中逐渐被HDL语言输入方式所取代。11/23/20249第2章⊿IP核生成器(CoreGenerator)IP核生成器是XilinxFPGA设计中的一个重要设计输入工具。它提供了大量Xilinx和第三方公司设计的成熟、高效的IP核(IPCore)为用户所用。IP核生成器可生成的IP核功能繁多,从简单的基本设计模块到复杂的处理器等一应俱全,分为基本模块、通信与网络模块、数字信号处理模块、数学功能模块、存储器模块、微处理器模块、控制器模块与外设模块、标准与协议设计模块、语音处理模块、标准总线模块和视频与图像处理模块等10大功能模块。配合Xilinx网站的IP中心使用,能大幅度地减轻工程师的设计工作量,提高设计质量。⊿测试激励生成器(HDLBencher)测试激励生成器辅助用户设计测试激励文件。它将VHDL源代码、Verilog源代码和ECS原理图等设计输入导入其测试环境,根据用户在图形界面下编辑的激励波形,直接生成测试激励文件,然后调用ISE中集成的仿真工具进行仿真验证,并分析测试激励的覆盖率。11/23/202410第2章综合工具⊿Synplify/SynplifyPro综合结果往往面积较小,速度较快,在业界口碑很好。⊿FPGACompilerSynopsys,早期是FPGAExpress,其升级版本FPGACompilerII是最好的ASIC和FPGA设计工具之一。⊿LeonardoSpectrum综合优化能力非常高,随着Mentor与Xilinx的合作日趋紧密,对Xilinx器件的支持也越来越好。⊿XSTXST(XilinxSynthesisTechnology)是Xilinx自主开发的综合工具。虽然Xilinx设计综合软件的经验还不够丰富,但只有Xilinx自己对其芯片的内部结构最了解,所以XST的一些优化策略是其他综合工具无法比拟的。XST对某些使用到Xilinx内部核心的设计的综合结果甚至要比其他综合工具优越很多。11/23/202411第2章仿真工具

⊿ModelSim可以说是业界最流行的仿真工具之一,其主要特点是仿真速度快,精度高。ModelSim支持VHDL、VerilogHDL以及VHDL和VerilogHDL混合编程的仿真。ModelSim的PC版的仿真速度也很快,甚至和工作站版不相上下。⊿HDLBencher是一种根据电路设计输入,自动生成测试激励的工具,它可以把工程师从书写测试激励文件的繁重工作中部分解脱出来。HDLBencher的Xilinx版本可以支持VHDL语言输入、VerilogHDL语言输入和Xilinx原理图输入等3种输入方法。将这些设计输入导入到HDLBencher中,就能自动生成相应的测试激励文件。11/23/202412第2章实现工具⊿约束编辑器约束编辑器帮助工程师设计用户约束文件(UCF)的工具。约束文件包含时钟属性、延时特性、管脚位置、寄存器分组、布局布线要求和特殊属性等信息,这些信息指导实现过程,是由用户设计的决定电路实现的目标与标准。设计约束文件有较高的技巧性。⊿引脚与区域约束编辑器引脚与区域约束编辑器(PACE,PinoutandAreaConstraintsEditor)直接将信号指定到I/O管脚,方便地拉出测试信号,对设计进行面积约束,自动生成用户约束文件,是约束编辑器的有益补充。⊿时序分析器时序分析器是分析实现结果是否满足约束条件、芯片的工作速率以及关键路径等时延信息的工具,能方便地将实现过程生成的各种时延报告分类显示,并对比约束文件,分析是否满足时序要求。11/23/202413第2章⊿FPGAEditerFPGA底层编辑器读取FPGA的布线信息(NCD)文件,用图形化界面显示FPGA内部的CLB和IOB模块结构,使用FPGAEditor可以完成如下功能:---在自动布线前手工布置关键路径,提高电路工作频率。---帮助布线器完成自动布线难以实现的路径。---在FPGA内部的任何一个节点设置探针。---改变内部在线逻辑分析仪(ILA)的连线和配置。---手动添加和连接内部元件以完成电路设计与实现。⊿FloorPlanner布局规划器与FPGAEditor相似,也能改变FPGA内部的CLB和IOB的连接配置情况。通过交互图形界面,用户可以观察到FPGA内的连接情况,并且手动进行物理位置约束,它比FPGAEditor更灵活,可以在实现过程的映射(Mapping)前、映射后、布局布线(Place&Route)等不同阶段约束设计,发挥功能。对Floorplanner善加利用,可以有效提高设计的工作效率。11/23/202414第2章辅助设计工具⊿iMPACTiMPACT配置器可以完成配置文件的分割组合,配置文件格式的转换,实现将配置文件下载到FPGA或相应的存储器等功能。它的主要功能是下载、回读与校验配置数据,调试配置过程中出现的问题。⊿功耗仿真器(XPower)功耗仿真器(XPower)是估计设计功耗的工具,帮助PCB系统设计人员设计电源系统功率。⊿在线逻辑分析仪(ChipScopePro)在线逻辑分析仪(ChipScopePro)是Xilinx与Agilent合作开发的FPGA在线片内信号分析工具,它的主要功能是通过JTAG口,在线实时地读出FPGA的内部信号。ChipScopePro的原理:根据用户设定的触发条件将信号实时地保存到FPGA中未使用到的块RAM中,然后通过JTAG口将信号传送到计算机,并在计算机屏幕上显示出时序波形。11/23/202415第2章2.3FPGA设计输入HDL输入

⊿HDL语言设计方法是目前大型工程中最常用的设计方法。特点:---易于使用由顶向下的设计方法---利于模块的划分与复用---可移植性好,通用性好⊿专用HDL编辑器HDLEditor基本涵盖了专用HDL编辑器的常用功能。集成了语法检查、语法辅助模板、代码调试等功能,给HDL源代码的设计与调试带来了极大的方便。⊿HDLEditor带有一个LanguageTemplates语法设计辅助模板,提供了VHDL、VerilogHDL语言和UCF用户约束的语法说明和示例。语言模板中存放了很多HDL语言的通用语法结构和使用范例,特别是许多根据Xilinx器件IP核与硬件原语编写的实例化程序。使用语言模板,可以方便地把这些语法结构和范例插入到设计者自己的代码文件中,大大方便了程序的编写。11/23/202416第2章

IP核输入⊿IP核生成器提供了大量的成熟、高效IP核为用户所用。lP核生成器可生成的IP核功能繁多,从简单的基本设计模块到复杂的处理器等一应俱全。配合Xilinx网站的IP中心使用,能大幅度减轻工程师的工作量,提高设计质量。⊿CoreGenerator可生成的IP核大致分为10大功能模块:基本模块、通信与网络模块、数字信号处理模块、数学功能模块、存储器模块、微处理器、控制器与外设模块、标准与协议设计模块、语音处理模块、标准总线模块、视频与图像处理模块等。这些功能涵盖了从基本设计单元到复杂功能样机的众多成熟设计。而且每次ISE的升级补丁中都会有IP核的升级,另外用户可以通过Xilinx的IP中心查询更多的IP信息。⊿如果用户设计只是针对FPGA应用的,使用IP核能避免重复设计,缩短工程时间,提高工作效率。这些IP核是根据Xilinx的FPGA器件特点和结构而设计,直接用XilinxFPGA底层硬件原语描述,充分发挥了FPGA的功能,其实现结果在面积和速度上都令人满意。11/23/202417第2章原理图输入⊿在ECS图形化界面下,用户可以编辑原理图和模块符号。⊿ECS在ISE中仅仅是一种辅助设计方法,其最常用的场合是在混合设计中。在混合设计中,使用ECS将VerilogHDL、VHDL和IP核生成器(CoreGenerator)产生的IP核和StateCAD设计状态机等设计资源生成原理图模块符号(Symbol),用原理图(Schematic)将这些模块符号组织起来,完成混合设计。11/23/202418第2章状态机输入⊿StateCAD符合人们设计状态机的习惯,设计者只要画出状态转移图,StateCAD自动将状态转移图翻译成HDL语言代码,代码规范、可读性好、可综合、易维护。StateCAD提供了状态机的输入、翻译、检测、优化和测试等一条龙的服务,使状态机的设计变得安全、可靠、快速、便捷。⊿StateCAD能自动检测状态机的完备性和正确性,对状态转移图中的冗余状态、自锁状态、歧义转移条件和不完备状态机等隐含错误都会报警,并协助设计者更正错误。然后StateCAD根据设计者所选的优化方式,进一步优化代码。⊿StateCAD自动生成设计的测试激励,并调用仿真程序,验证状态机的正确性。11/23/202419第2章2.4VHDL语言概述VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。1987年底,VHDL被美国国防部确认为标准硬件描述语言。VHDL的标准版本:IEEE1076和IEEE1076-1993。Verilog是另一种标准硬件描述语言。VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多FDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。11/23/202420第2章VHDL语言的特点VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL语言形式、描述风格和句法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可视部分,即端口)和内部(或称不可视部分),即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其它的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的,具体如下:11/23/202421第2章⊿VHDL具有更强的行为描述能力,避开具体的器件结构,是从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件己不成问题,只是在综合与优化效率上略有差异。⊿VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期(即尚未完成),就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。即在远离门级的高层次上进行模拟,使设计者对整个工程设计的结构和功能的可行性作出决策。⊿VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速的完成必须由多人甚至多个开发组共同并行工作才能实现。VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有力的支持。11/23/202422第2章⊿对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动地把VHDL描述设计转变成门级网表。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。应用EDA工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更小、更高速的电路系统。反过来,设计者还可以容易地从综合和优化后的电路获得设计信息,反回去更新修改VHDL设计描述,使之更为完善。⊿由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变类属参量或函数,就能轻易地改变设计的规模和结构。11/23/202423第2章VHDL的学习相对于其它计算机语言的学习,如C或汇编语言,VHDL的学习具有明显的特点。⊿要求掌握硬件基础知识:作为一种硬件描述语言的学习,需要了解较多的数字逻辑方面的硬件电路知识,包括目标芯片基本结构方面的知识。⊿理解VHDL的并行性:VHDL是一种并行语言,VHDL描述的对象始终是客观的电路系统。电路系统内部的子系统乃至部分元器件的工作状态和工作方式可以是相互独立、互不相关的,也可以是互为因果的。这表明,在任一时刻,电路系统可以有许多相关和不相关的事件同时并行发生。所以必须以一种并行语言的思路去理解和应用VHDL语言。VHDL具有描述由相关和不相关的多维时空组合的复合体系统的功能。这要求系统设计人员摆脱一维的思维模式,以多维并发的思路来完成VHDL的程序设计。所以,VHDL的学习也应适应这一思维模式的转换。11/23/202424第2章⊿理解掌握软件程序和硬件构成之间的联系。

在VHDL程序设计中,既要考虑能实现即定的逻辑功能,还要对这一程序可能耗费的硬件资源有一明确的估计。因此,在VHDL的学习和应用中,必须善于总结经验,尽可能地了解软件语句与硬件结构间的联系。在实践过程中,提高通过驾御软件语句来控制硬件构成的能力。一般地,每一项设计的资源占用情况可以直接从各种报告中获得,也可从RTL原理图或门级原理图中间接获得。VHDL作为一种硬件描述语言,仍然保留着计算机软件语言的基本特征。事实上,VHDL的语言描述只是综合器赖以构成硬件结构的一种依据,它并不能代表硬件电路真实的行为方式。例如与非门、多路选择器等以并行工作为特征的组合电路却可用VHDL的顺序语句来描述。从表面上看,顺序语句是十分典型的计算机指令式语句,它是按时钟节拍运行的,而实际的电路并非按照这种逐个顺序判断的节拍式工作方式运行。因此,在VHDL程序设计过程中,能够洞悉软件描述背后的硬件工作行为和硬件结构方式对硬件测试、硬件仿真、硬件排错,从而完成高质量的VHDL设计是十分有益。11/23/202425第2章2.5VHDL语言设计入门通过几个简单的典型设计示例,力图能迅速地从整体上把握VHDL程序的基本结构和设计特点,达到快速人门的目的。⊿2选1选择器设计⊿锁存器设计⊿全加器设计11/23/202426第2章2选1选择器设计2选1多路器11/23/202427第2章⊿选择器逻辑功能的VHDL描述使用了三个层次:(1)库(LIBRARY)说明它包含了描述器件的输入、输出端口数据类型中将要用到的IEEE的标准库中的STD_LOGIC_1164程序包。(2)实体(ENTITY)说明实体的电路意义相当于器件,在电路原理图上相当于元件符号。实体是一个完整的、独立的语言模块,它描述了mux21接口信息,定义了mux2l端口引脚的输入输出性质和数据类型。PORT所描述的就相当于电路器件的外部引脚,对端口引脚作了信号流向的方向说明,同时指明了端口的数据类型。(3)结构体(ARCHITECTURE)说明这一层次描述了mux21内部的逻辑功能,在电路上相当于器件的内部电路结构。“Y<=a”表示将a获得的信号赋给(传入)y输出端,这是一个单向过程。11/23/202428第2章⊿一个可综合的VHDL描述的最小和最基本的逻辑结构中,IEEE标准库说明、实体和结构体是最基本的和不可缺少的三个部分。其它的结构层次可根据需要选用。此例作为一个完整的VHDL描述既可以作为一个独立的功能器件使用和存在,也能被其它的由VHDL描述的逻辑电路所调用,成为其中的一个功能部件。11/23/202429第2章锁存器设计锁存器11/23/202430第2章与mux21例子相比,1位锁存器的VHDL设计文件中增加了两个部分的内容。⊿增加了一条信号赋值语句SIGNAL<=D由信号赋值语句SIGNAL定义了一个信号变量sig-save,它的功能是存储来自外部信号D的被锁存的数据位。综合后将由一个硬件时序器件来完成这一任务。⊿使用一个进程语句结构PROCESS(D,ENA)~ENDPROCESS

程序行“PROCESS(D,ENA)”中的(D,ENA)称为敏感信号表,这说明信号D和ENA中的任何一个信号发生变化时,都将引起本进程的执行(在系统的行为仿真中),所有的输人信号通常都要列入敏感信号表中,否则信号可能被VHDL模拟器忽略。这个语句从系统仿真的角度看,是为此结构体的行为仿真设定了两个敏感量D和ENA,以利于逻辑顺序的测定。从系统综合结果的角度看,必须引人锁存器才能完成这个时序逻辑过程(VHDL综合器自动判别完成锁存器的引入)。11/23/202431第2章用VHDL设计全加器1位全加器逻辑原理图11/23/202432第2章1位全加器完整源程序11/23/202433第2章实体or2语句段定义了或门or2的引脚信号a、b(输入)和c(输出)。其结构体语句段描述了输人与输出信号间的逻辑关系,即将输人信号a、b相或后传给输出信号端C。由此实体和结构体描述了一个完整的或门元件,这一描述可以进行独立综合实现与存档,或被其它的电路系统所调用。11/23/202434第2章实体h_adder和结构体fhl描述了一个半加器。由其结构体的描述可以着到,它是由一个与非门、一个非门、一个或门和一个与门连接而成的,其逻辑关系来自于半加器真值表。11/23/202435第2章11/23/202436第2章⊿“COMPONENT~ENDCOMPONENT”语句结构对所要调用的或门和半加器两个元件作了声明(ComponentDeclaration)。⊿SIGNAL语句定义了三个信号d、e和f作为中间信号转存点,以利于几个器件间的信号连接。⊿“PORTMAP()”语句称为元件例化语句(ComponentInstantiation)。所谓例化,在电路板上,相当于往上装配元器件,并各引脚进行连线。例化也可理解为元件映射或元件连接。MAP是映射的意思。符号“=>”表示信号连接。11/23/202437第2章⊿一个相对完整的VHDL程序具有如图所示的比较固定的结构:---首先是各类库及其程序包的使用声明。---然后是实体描述,在这个实体中,含有一个或一个以上的结构体,而在每一个结构体中可以含有一个或多个进程,当然还可以是其它语句结构,例如其它形式的并行语句结构。---最后是配置说明语句结构,这个语句结构在以上给出的示例中没有出现,配置说明主要用于以层次化的方式对特定的设计实体进行元件例化,或是为实体选定某个特定的结构体。一个相对完整的VHDL程序设计构建称为设计实体。VHDL程序设计基本结构11/23/202438第2章2.5结构层次化编码

(HierarchicalCoding)基本的结构化层次11/23/202439第2章结构层次化编码是模块化设计思想的体现。大型设计中必须采用结构层次化编码风格,以提高代码的可读性,易于模块划分,易于分工协作,易于设计仿真测试激励,易于复用。虽然理论上,任何设计都可以在同一个模块中完成,但是如果将不同功能、不同层次、不同类型的电路混淆在同一个模块中,对于比较复杂的设计,将会导致整个设计杂乱无章,不利于设计的阅读与维护,也会给综合和实现过程带来许多麻烦。基本的结构化层次是由一个顶层模块和若干个子模块构成,每个子模块根据需要还可以包含自己的子模块。11/23/202440第2章结构层次化编码有如下注意事项:(1)结构的层次不易太深,一般为3到5层即可。在综合时,一般综合工具为了获得更好的综合效果,特别是为了使综合结果所占用的面积更小,会默认将RTL代码的层次打平(Flatten)。(2)顶层模块最好仅仅包含对所有模块的组织和调用,而不应该完成比较复杂的逻辑功能。较为合理的顶层模块由输入输出管脚声明、模块的调用与实例化、全局时钟资源、全局置位/复位、三态缓冲和一些简单的组合逻辑等构成。(3)所有的I/O信号,如输入、输出和双向信号等的描述在顶层模块完成子模块之间也可以有接口,但是最好不要建立子模块间跨层次的接口,例如图中模块A1到模块B1之间不宜直接连接,两者需要交换的信号可以通过模块B的接口传递。这样做的好处是增加了设计的可读性和可维护性。(4)子模块的合理划分非常重要,应该综合考虑子模块的功能、结构、时序、复杂度等多方面因素。11/23/202441第2章模块划分的技巧(DesignPartitioning)结构层次化设计方法的第一个要点就是模块划分,模块划分非常重要,关系到能否最大程度上发挥项目成员协同设计的能力,更重要的是它直接决定着设计的综合、实现的耗时与效率。⊿对每个同步时序设计的子模块的输出使用寄存器⊿将相关和可以复用的逻辑划分在同一模块内⊿将存储逻辑独立划分成模块⊿合适的模块规模11/23/202442第2章⊿对每个同步时序设计的子模块的输出使用寄存器(Registering)这个原则也被称为用寄存器分割同步时序模块的原则。使用寄存器分割同步时序单元的好处是:便于综合工具权衡所分割的子模块中的组合电路部分和同步时序电路部分,从而达到更好的时序优化效果,这种模块划分符合时序约束的习惯,便于利用约束属性进行时序约束。下图中综合工具必须去决定如何去优化逻辑B和逻辑C,让综合工具去做决定是不明智的。这种设

温馨提示

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

评论

0/150

提交评论