1AlteraFPGA的设计流程贺光辉清华大学电子工程系2目标•掌握FPGA的标准设计流程和工具•用Modelsim进行功能级仿真并诊断RTLCode•用QuartusII做设计综合和布局布线•用FPGAMega-functions做设计•返标SDF并运行门级的仿真•掌握FPGA的时序约束•了解FPGA的设计原则3提纲•FPGA概要•FPGA的设计流程•用Modelsim进行仿真和调试•用QuartusII进行时序分析、综合等•FIR滤波器的设计实例4FPGA概要5FPGA的优点•集成度高,可以替代多至几千块通用IC芯片•极大减小电路的面积,降低功耗,提高可靠性•具有完善先进的开发工具•提供语言、图形等设计方法,十分灵活•通过仿真工具来验证设计的正确性•可以反复地擦除、编程,方便设计的修改和升级•灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间•布局布线容易,设计过程相当于只有ASIC设计的前端•研发费用低•不需要投片费用6FPGA的应用前景•通信、控制、数据计算等领域得到了广泛的应用•减少电子系统的开发风险和开发成本•缩短上市时间(timetomarket)•通过在系统编程、远程在线重构等技术降低维护升级成本•系统的原型实现+ASIC的原型验证ASIC常用FPGA进行原型机验证7CPLD与FPGA的区别CPLDFPGA内部结构Product-termLook-upTable程序存储内部EEPROMSRAM,外挂EEPROM资源类型组合电路资源丰富触发器资源丰富集成度低高使用场合完成控制逻辑能完成比较复杂的算法速度慢快其他资源-EAB(嵌入式逻辑块),锁相环保密性可加密一般不能保密8CPLD还是FPGA?•复杂组合逻辑:CPLD–PLD分解组合逻辑的功能很强,一个宏单元就可以分解十几个甚至20~30多个组合逻辑输入•复杂时序逻辑:FPGA–FPGA芯片中包含的LUT和触发器的数量非常多,往往都是成千上万9推荐书籍•Verilog•Verilog数字系统设计教程夏宇闻北京航天航空大学出版社•硬件描述语言Verilog刘明业等译清华大学出版社•FPGA•基于FPGA的嵌入式系统设计任爱锋西安电子科技大学出版社•基于FPGA的系统设计(英文版)WayneWolf机械工业出版社•IC设计•Reusemethodologymanualforsystem-on-a-chipdesigns3rded.MichaelKeating,PierreBricaud.•片上系统:可重用设计方法学沈戈,等译电子工业出版社,2004•Writingtestbenches:functionalverificationofHDLmodels/JanickBergeronBoston:KluwerAcademic,c200010推荐文章••VerilogCodingStylesForImprovedSimulationEfficiency•StateMachineCodingStylesforSynthesis•SynthesisandScriptingTechniquesforDesigningMulti-AsynchronousClockDesigns•SynchronousResets?AsynchronousResets?Iamsoconfused!•NonblockingAssignmentsinVerilogSynthesis,CodingStylesThatKill!11FPGA的设计流程12目标•完成本单元的学习后你将会•列出FPGA设计过程的步骤(以Altera的FPGA为设计例子)•用缺省的软件选项来实现一个FPGA的设计•QuatursII•Modelsim13FPGA的设计流程•FPGA的设计流程•用ModelSim进行仿真•用QuartusII进行综合和时序分析•用QuartusII进行布局布线、调试和下载14FPGA设计流程综合-TranslateDesignintoDeviceSpecificPrimitives-OptimizationtoMeetRequiredArea&PerformanceConstraints-Synplify,QuartusIIDesignSpecification布局布线-MapPrimitivestoSpecificLocationsinsideTargetTechnologywithReferencetoArea&PerformanceConstraintsDesignEntry/RTLCoding-BehavioralorStructuralDescriptionofDesignRTL仿真-FunctionalSimulation(Modelsim®,QuartusII)-VerifyLogicModel&DataFlow(NoTimingDelays)LEM512M4KI/O15FPGA设计流程时序分析-VerifyPerformanceSpecificationsWereMet-StaticTimingAnalysis门级仿真-TimingSimulation-VerifyDesignWillWorkinTargetTechnologyPCBoardSimulation&Test-SimulateBoardDesign-Program&TestDeviceonBoard-UseSignalTapIIforDebuggingtclk16系统规划和预算•系统功能的总体规划:•功能集的定义;•端口的定义;•模块的基本划分和功能定义:•每个模块应该完成的功能;•模块之间的接口定义;•模块间通讯的问题一定要考虑好,硬件通信的成本一般比较大。17设计的整体规划•设计规模的初步估计,大致应该选择哪一层次的芯片;•设计时序的宏观规划:•频率和时钟结构;•可能的关键路径,着重优化;•模块的进一步细化,考虑可重用性等的规划:•可以考虑基本单元,比如加法、乘法器和寄存器等。设计文档化非常重要18设计实现•用电路框图或者HDL描述实现自己的设计:简单的设计可以用电路框图;大型复杂的一般倾向于用HDL描述;HDL描述和计算机编程中的高级语言描述有很大不同,每一个描述都要考虑硬件的实现能力,是不是可以综合的等等,目前HDL语言标准中仍然有不能被综合的语法,这些要尤其注意。19功能仿真•对逻辑功能进行验证:•不考虑时序问题,认为门都是理想门,没有延时;•详细一些的可以认为门延时都是一样,而忽略互连线的延时。RTL代码逻辑仿真器调用模块的行为仿真模型测试数据测试程序(testbench)20逻辑综合•通过映射和优化,把逻辑设计描述转换为和物理实现密切相关的工艺网表:RTL代码逻辑综合器调用模块的黑盒子接口设置综合目标和约束条件EDIF网表(netlist)HDL网表(netlist)21布局布线•将综合生成的网表,在FPGA内部进行布局布线的设计,并最终生成用于下载的二进制配置文件;逻辑综合器EDIF网表(netlist)FPGA厂家工具调用模块的综合模型设置布局布线约束条件HDL网表(netlist)SDF文件(标准延时格式)下载/编程文件22时序逼近•时序逼近流程是一个推荐的设计方法可以帮助设计满足它们的时序目标23门级仿真FPGA厂家工具HDL网表(netlist)SDF文件(标准延时格式)逻辑仿真器测试数据FPGA基本单元仿真模型测试程序(testbench)24SDF文件•IndustryStandardFormat•AutomaticallyGeneratedWhenYouCompileaDesign(OutputFilewithExtension.sdo)•ContainTimingInformation•DeviceDelays•InterconnectDelays•PortDelays•PathDelays•TimingChecks•CanbeBack-annotatedtoaDesignforAccurateModelofDelays25物理验证•将生成的二进制配置文件下载到FPGA上,进行实际的功能和时序的测试;•Altera(.sof文件)Xlinx(.bit文件),•由于FPGA常常是作为整个系统一部分,因此还应该将FPGA放到整个系统中进行验证,整个系统工作正常,才算完成了开发过程。26用ModelSim仿真27内容ModelSim产品简介ModelSim的用途用ModelSim进行功能仿真用ModelSim进行时序仿真28ModelSim产品简介(1)由MentorGraphics公司的子公司ModelTech公司开发工业上最通用的仿真器之一支持Verilog和VHDL仿真•OEM版本允许Verilog仿真或者VHDL仿真ModelSim/SE•首要的版本,能混合仿真Verilog和VHDLModelSim/XE•OEM版,包含Xilinx公司的库文件ModelSim/AE•OEM版,包含Altera公司的库文件29ModelSim产品简介(2)ModelSim用户界面main主窗口:structure结构窗口process处理窗口:Signal&variable信号和变量窗口dataflow数据流窗口source源窗口Wave&list波形和列表窗口30ModelSim的用途1.RTL仿真(功能仿真)验证设计HDL的基本逻辑功能,属于最基本的验证仿真速度最快2.门级仿真采用综合软件综合后生成的门级网表不带有布局布线后产生的时序信息3.时序仿真(后仿真)在门级仿真的基础上加入时延文件“.sdf”文件速度很慢,需要很长时间31用ModelSim作功能仿真(1)ModelSim的实现方法:交互式的命令行(Cmd)•利用控制台的命令行用户界面(UI)•能接受菜单输入和命令行输入批处理模式•从DOS或UNIX命令行运行批处理文件32用ModelSim作功能仿真(2)基本仿真步骤:1建立库2映射库到物理目录3编译源代码-所有的HDL代码必须被编译4启动仿真器5执行仿真33用ModelSim作功能仿真(3)1建立库UI)从主菜单里面:Design-CreateaNewLibraryCmd)从main,记录窗口:ModelSimvlib库名34用ModelSim作功能仿真(4)2映射库到物理目录UI)从主菜单:Design-BrowseLibrariesDesign-CreateaNewLibraryCmd)从主体的记录窗口:ModelSimvmaplogical_namedirectory_path35用ModelSim作功能仿真(5)3编译源代码(Verilog)UI)Design-CompileCmd)vlog-worklibrary_namefile1.vfile2.v•文件按出现的顺序被编译•文件的顺序或者编辑的顺序不重要支持增量式编译(只有被改动的设计单元被编译)缺省编译到work库•例如.vlogmy_design.v36用ModelSim作功能仿真(6)3编译源代码点亮一个或多个文件并点击Compile37用ModelSim作功能仿真(7)4启动仿真器UI)Design-LoadNewDesignCmd)vsim-liblibrary_nametop_level_designVHDL•vsimtop_entitytop_architectureVerilog•vsimtop_level38用ModelSim作功能仿真(8)4启动仿真器选择库选择顶级module或entity/architecture39用ModelSim作功能仿真(9)5执行仿真UI)RunCMD)runtime_steptime_units按timesteps指定的时间长度执行仿真40用Mod