版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章编译、仿真与测试本章概要本章介绍在FPGA开发流程中必不可少的编译和仿真环节,它们独立于使用硬件描述语言编写代码的环节。编译包含了分析综合、布局布线和时序分析等多个步骤,是将设计代码成功转化为FPGA内部电路的关键,本章对编译操作和编译报告进行了详细说明。编译之后对设计的逻辑功能进行检验,根据使用平台的不同分为软件仿真和硬件测试。本章主要介绍软件仿真的不同形式和方法,以及程序烧写至硬件的步骤。本章概要FPGA开发流程大致可分为三个阶段:第一个阶段设计输入,是采用硬件描述语言、原理图或其他方式设计的源文件;第二个阶段是在软件平台上,主要是通过编写测试激励文件检验设计的逻辑正确性和时序特性的软件仿真,有些还需要使用形式验证工具或静态时序分析工具进一步进行验证;第三个阶段在硬件平台上,主要是将设计下载到FPGA开发板之后通过外部设备进行的功能测试和电路系统在信号质量、物理特性等方面的性能测试。本章概要从使用平台上分,仿真分为软件仿真和硬件测试。软件仿真不需要实际的硬件设备,与直接在硬件上运行相比,软件仿真依赖于计算机资源,对仿真时长比较敏感。本章概要除却购买和维护硬件设备的成本,硬件测试可以更准确地反映实际工作环境中的系统性能和行为,更好地观察FPGA与外部设备进行的交互,得到实时反馈。但由于硬件测试只能看到最终输出结果,运行过程中的数据变化难以直观体现,仍然需要借助软件工具或示波器、逻辑分析仪等外部设备进行观察调试。程序编译01Part1程序编译本节以Intel开发软件Quartus为例,介绍编译过程中的操作和产生的报告文件。1程序编译1.1编译操作在Quartus软件里,编译操作使用Processing→StartCompilation一键完成,在Task窗口可以看到编译的进度。编程流程包含了①分析与综合(Analysis&Synthesis)②适配:布局布线(Fitter:Place&Route)③汇编(Assembler)④时序分析(TimingAnalysis)和⑤EDA网表生成(EDANetlistWriter)五个步骤。1程序编译分析&综合(Analysis&Synthesis)这个环节进行电路的综合、优化和最小化并将设计逻辑映射到器件资源。其中,分析&细化(Analysis&Elaboration)是其中一个必不可少的阶段,对HDL代码或其他设计输入进行语法和语义分析,检查是否存在错误,如语法错误、逻辑错误、未定义的信号等等以保证设计在语法逻辑上的正确性。1程序编译分析&综合(Analysis&Synthesis)综合(Synthesis)是对符合编译标准的VerilogHDL(.v)、VHDL(.vhd)和SystemVerilog(.sv)进行的“翻译”,从硬件描述语言的行为描述中推断D触发器,锁存和状态机。这个环节也综合BlockDesignFile(.bdf)原理图文件和由其他EDA工具生成的VerilogQuartusMapping(.vqm)文件。1程序编译分析&综合(Analysis&Synthesis)图4-2综合过程综合(Synthesis)结束后生成原子网表(atomnetlist)。原子是指FPGA器件中最基础的硬件资源。原子网表包括整理成LUT(查找表)的逻辑单元、D触发器、I/O管脚、块存储器资源、DSP块以及原子之间的连接。原子网表是在硅晶中实现设计时,设计综合所需原子单元的数据库。1程序编译分析&综合(Analysis&Synthesis)2.Fitter(Place&Route)(适配:布局和布线)这个环节将设计的布局和布线分配给指定器件资源,在遵守指定的Fitter设置和约束的同时确定目标FPGA器件中逻辑的最佳性能和路由选择。1程序编译Fitter(适配)Fitter(适配)包括如下步骤:Plan(规划)—布局所有外设单元(例如,I/O和PLL)并确定合法时钟规划,无需内核布局或布线。EarlyPlace(早期布局)—将所有内核单元放置在大致位置以便于设计规划。Place(布局)—将全部内核单元放置到合法位置。Route(布线)—创建设计中各单元之间的所有布线。Retime(重新定时)—将现有寄存器移动(重定时)到Hyper-Register,以实现细粒度性能提升。Fitter(最终适配)1程序编译Assembler(汇编)这个环节使用编程文件生成工具将综合、布局布线后的逻辑设计转化为FPGA可执行的烧写(编程)文件,这一过程中收集、整合布局布线产生的配置信息,按芯片要求格式打包,还将设计逻辑功能与物理资源精准映射。Assembler是将抽象逻辑设计转为具体硬件电路的关键。1程序编译TimingAnalysis(时序分析)通过TimingAnalyzer分析并验证所有设计逻辑的时序性能。它会计算信号从输入引脚到输出引脚,或者在内部逻辑单元间传输所耗费的时间,以确定关键路径,即延迟最长的信号传输路径。通过分析每个逻辑门、布线资源的延时,精确量化整个设计的时序情况。1程序编译EDA网表撰写程序(EDANetlistWriter)5.EDA网表撰写程序(EDANetlistWriter)这个环节将设计项目中的逻辑信息转化为标准的EDA网表格式,生成用于其他EDA工具的输出文件。通过这种转化,能够让不同的EDA工具之间实现数据的交互与共享,方便设计人员在不同的设计环境下对项目进行分析、仿真或者综合处理。1程序编译TimingAnalysis(时序分析)除了完整的编译流程,Quartus还可以对已经编译过的工程执行快速重编译(RapidRecompile),在Tasks窗口的下拉菜单里可以看到1程序编译1.2编译报告在编译操作一键启动的过程中,Quartus会在每个阶段生成详细报告,一起放在编译报告里。在编译流程成功结束后,将自动弹出编译报告(CompilationReport)窗口FlowSummary通常提供了芯片设计流程的概览,包括各个阶段的完成情况、状态以及可能存在的问题。1程序编译编译流总结(FlowSummary)它们直接反映了设计的资源消耗情况。设计人员可以根据这些信息评估设计的资源效率,识别资源瓶颈,进而进行优化。1程序编译资源使用总结(ResourceUsageSummary)Analysis&Synthesis(分析&综合)和Fitter(适配)阶段都会产生资源使用总结(ResourceUsageSummary)报告。1程序编译编译流总结(FlowSummary)以例2.1产生资源使用总结报告为例,Analysis&Synthesis(分析&综合)阶段资源使用总结报告说明了估计使用的ALM数量、使用ALUT形成组合逻辑函数(包括4~7输入和小于等于3输入的函数)数量、寄存器数量、引脚数量、DSP和扇出等。1程序编译编译流总结(FlowSummary)对于例2.1,图4-5中显示它使用了一个四输入组合函数,因为表格项“组合逻辑ALUT使用”(CombinationalALUTusageforlogic)只有4inputfunctions子项的值为1;Dedicatedlogicregisters为0,说明例2.1的设计中没有使用寄存器;I/Opins值为5。1程序编译编译流总结(FlowSummary)Fitter(适配)阶段的资源使用总结报告详细给出了ALM数量的计算、评定设计难度、使用的LAB数量,并给出布线以后使用的组合逻辑ALUT和引脚等资源。1程序编译编译流总结(FlowSummary)资源使用总结用于分析工程设计中使用了哪些FPGA资源,从资源占用率分析当前设计是否与目标器件相匹配。对于复杂的系统设计,可以借助资源使用总结上的统计结果对不合理的设计模块进行优化。在Vivado软件里,综合与实现的过程也会生成详细的报告第4章编译、仿真与测试波形与文本仿真02Part2波形与文本仿真从控制与输入的呈现形式上分,FPGA的软件仿真分为基于图形界面的波形仿真和基于脚本文件的文本仿真。2波形与文本仿真波形仿真以直观的波形图形展现信号的变化,能清晰呈现信号的高低电平、上升沿或者下降沿、脉冲宽度等随时间的变化情况,可以从视觉上快速理解信号之间的时序关系。这种方法特别适合初学者或需要快速验证设计正确性的场景,波形的直观性能够帮助用户快速定位问题。文本仿真则是通过先写HDL代码或脚本来定义输入激励和输出检测。这种方式更加灵活,适合复杂设计的验证和自动化测试。文本仿真通常需要用户具备较强的编程能力和对硬件描述语言的深入理解,但其优势在于可以处理更复杂的逻辑和更大规模的设计。2波形与文本仿真2.1波形仿真下面以Intel的Quartus软件为例,说明波形仿真的操作和分析方法。早期的Quartus版本自带波形仿真工具,用户可以直接在Quartus环境中进行电路的仿真和验证。而Quartus软件自9.0版本开始,不再自带波形仿真工具,而是推荐使用ModelSim等第三方仿真软件进行波形仿真。2波形与文本仿真2.1波形仿真例4.1对例2.1中的简单组合逻辑电路进行波形仿真。在例2.1中,组合逻辑电路已完成设计输入和成功编译(弹出编译成功的提示和编译报告),工程可以进行仿真。2波形与文本仿真2.1波形仿真Step1:建立仿真文件Step3:分析仿真结果波形仿真的步骤包括:Step2:添加激励并仿真2波形与文本仿真建立仿真文件(1)新建波形文件。在“新建”对话窗口中选择Verification/DebuggingFiles类别中的UniversityProgramVWF,创建一个矢量波形文件。2波形与文本仿真建立仿真文件空白的矢量波形文件如图4-9所示。从上到下依次是菜单栏、快捷工具栏、时间工具栏和波形显示界面。2波形与文本仿真建立仿真文件默认仿真结束时间是1μs,在波形文件界面最右边可以看到时间显示。波形仿真允许自定义仿真时长,选择菜单Edit→SetEndTime,在对话框内修改数值和时间单位,2波形与文本仿真建立仿真文件(2)添加信号。在空白处双击鼠标左键,或者选择右键菜单中的InsertNodeorBus,弹出“插入节点或总线”对话框,如图4-11所示。在这里可逐个输入所需信号的名称、信号类型、数值类型、进制、总线宽度和初始值。2波形与文本仿真建立仿真文件信号类型分为BIDIR、BURIED、COMB、INPUT、MECHINE、MEMORY、OUTPUT、REG八种。数值类型分为9-Level和Enum,默认为9-Level。2波形与文本仿真建立仿真文件进制可以从Binary(二进制)、Octal(八进制)、Hexadecimal(十六进制)、SignedDecimal(有符号十进制数)、UisignedDecimal(无符号二进制数)、Fractional(小数)和ASCII(ASCII码)当中选择,默认进制为Binary。测试人员根据信号的宽度以及显示的需要选择相应的进制类型,例如多位计数器输出信号修改为UisignedDecimal十进制会更便于观察。2波形与文本仿真建立仿真文件仿真信号可以逐个添加,也可批量添加,下面介绍使用NodeFinder批量添加信号的方法。①在图4-11对话框右侧点击NodeFinder按钮,打开对话框2波形与文本仿真建立仿真文件②从Filter滤波器中筛选节点,如图4-13所示,节点类型为:Pins:all——所有引脚Pins:all&Registers:post-fitting——所有引脚和适配后的寄存器Registers:pre-synthesis——综合前的寄存器Registers:post-fitting——适配后的寄存器Post-synthesis——综合后节点DesignEntry(allnames)——所有设计入口2波形与文本仿真建立仿真文件③如果波形仿真图中只需要添加输入输出端口进行观察,从图中选择Pins:all,再点击对话框中的List按钮,此时在图4-14所示的对话框左下方NodesFound框内将显示设计中的所有引脚及其类型。2波形与文本仿真建立仿真文件④有两个向右的箭头,依次代表“选中一个节点移入右框”和“所有节点移入右框”,点击将选中的节点从NodesFound框移入SelectedNodes框,点击则将所有节点(目前是设计的所有引脚)移到右边。2波形与文本仿真建立仿真文件2波形与文本仿真建立仿真文件这时波形窗口已经添加全部端口信号,Name列显示所有端口名称,并且带有端口类型图标或。所有输入端口的初始值默认低电平,输出端口默认X。2波形与文本仿真认识激励信号前六个按钮属于简单赋值,分别是强制X、低电平(0)、高电平(1)、高阻、弱0和弱1。后五个按钮操作分别是信号翻转,产生计数信号、时钟信号、任意值信号和随机值信号。2波形与文本仿真认识激励信号任意值信号:给选中区域赋任意值。4随机值信号:按照指定时间间隔生成随机值。5信号翻转:将选中区域的数值翻转。1计数信号:用计数方式生成数值,可以按照二进制或者格雷码方式计数、改变步长和计数频率。2时钟信号:生成时钟信号,可以设定时钟周期、偏移和占空比。32波形与文本仿真认识激励信号(a)生成计数信号对话框(b)生成时钟信号对话框2波形与文本仿真认识激励信号(c)生成任意值对话框(d)生成随机值对话框2波形与文本仿真仿真时长设置Quartus仿真时长默认1μs,也可以自定义仿真时长。2波形与文本仿真添加输入激励给输入信号添加激励方式有两种:整体赋值和局部赋值。整体赋值:在Name列点击信号名,则这个信号的波段全被选中(选中整个仿真时长),呈高亮状态。再点击信号赋值按钮给输入信号整体赋值。局部赋值:选中信号波形的其中一段使之高亮,再点击信号赋值按钮(0、1、X、Z等),选中的时间段呈现相应波形。重复局部赋值操作可以一个输入信号的波形呈现出多种变化。2波形与文本仿真进行功能仿真给所有输入信号添加激励之后,选择菜单Simulation→SimulationSettings,打开SimulationOptions对话框,确认仿真所用硬件描述语言是Verilog,在FunctionalSimulation(功能仿真)和TimingSimulation(时序仿真)两个标签页中选择FunctionalSimulation,接着在图示红框处删去-novopt-c字样,点击Save保存。2波形与文本仿真进行功能仿真然后选择菜单Simulation→RunFunctionalSimulation进行功能仿真,仿真进程结束后会弹出窗口显示仿真波形结果。仿真可反复操作,每次都会弹出一个新窗口显示新的仿真结果。每一次的仿真结果都保存在工程下的/simulation/qsim文件夹里。2波形与文本仿真分析仿真结果No.3仿真操作成功并显示了仿真输出波形,并不意味着仿真结束,后续的仿真结果分析才是关键。这一环节直接关系到设计能否满足所有预期功能,并为后续的硬件实现奠定基础。在进行仿真结果分析时,首先需要明确设计的所有预期功能,并制定详尽的真值表或功能表作为参照标准。随后,将仿真波形数据与从真值表或功能表中获得的预期结果进行对比,逐一检查每个输入状态下的输出是否符合设计要求。在这一过程中,任何与预期不符的偏差或异常都需要被仔细记录,并深入分析其原因,可能的偏差来源包括时序错误、逻辑设计缺陷或输入激励设置不当等。通过具体分析,可对设计进行针对性的调整和优化,确保功能正确。No.2No.12波形与文本仿真分析仿真结果在给定输入下,本例的仿真结果如图所示。2波形与文本仿真分析仿真结果通过移动蓝色的时间棒(TimeBar),在MasterTimeBar的定位下,在这张波形图上找出不同的输入状态组合,观察输出的结果。例如图在20ns时,输入组合{ABCD}为0000,对应Y为1。图4-20(b)显示60ns时,输入组合{ABCD}为0001,对应Y为0。(a)20ns状态2波形与文本仿真分析仿真结果这个例子共有A、B、C、D四个输入,真值表中应有16种状态。逐个检验每个输入状态下输出的值是否与真值表,达到完全一致说明设计符合要求。(b)60ns状态2波形与文本仿真分析仿真结果例4.2对例2.2带有使能端的D触发器进行仿真CLRNPRNENADCLKQ0xxxx010xxx1110xxQ111D↑D11xx0Q2波形与文本仿真建立仿真文件按照例4.1的步骤,新建波形文件之后添加工程中所有输入输出引脚,然后可以通过拖动信号名进行排序,优先级高的信号应尽量排在上方。创建的波形文件如图4-22所示。2波形与文本仿真添加激励进行仿真时序逻辑电路必定有时钟。给时钟信号添加激励,在Name列选中CLK,使之整个仿真时段都处于高亮状态,从快捷工具栏的信号赋值按钮中选择OverwriteClock,在对话框设置周期为20ns、占空比50%的时钟信号,点击确定。2波形与文本仿真添加激励进行仿真保存文件,选择Simulation→RunFunctionalSimulation进行功能仿真,仿真进程结束后会弹出窗口显示仿真波形结果。2波形与文本仿真分析仿真结果(a)清零功能2波形与文本仿真分析仿真结果(b)置1功能2波形与文本仿真分析仿真结果(c)使能功能呈现2波形与文本仿真分析仿真结果(d)D触发器置数和存储功能2.2文本仿真的测试文件文本仿真是在testbench(测试平台)上,以代码的形式提供激励信号,编写对FPGA设计进行仿真的程序文本。仿真代码使用硬件描述语言Verilog或者VHDL编写,采用行为描述风格,称为测试文件或者testbench文件。2.2文本仿真的测试文件测试文件可以使用initial和always过程块,因此不能综合成为电路,与可综合的设计文件有本质区别。与波形仿真中添加波形激励信号的方式相比,testbench文本仿真更适合需要验证复杂的逻辑功能或者输入激励需要生成重复性波形的情况。添加激励Testbench文件有基本固定的格式,包括以下四个部分:时间标尺变量声明例化设计文件添加激励时间标尺ˋtimescale编译指令写在模块开头module之前,用于指定仿真模块内这条指令之后的时间单位和时间精度,直到遇到下一条ˋtimescale或者`resetall编译指令为止。ˋtimescale编译指令的格式为:ˋtimescale时间单位/时间精度时间标尺ˋtimescale时间单位/时间精度时间精度是时间的最小分辨率,它的最大值不能超过时间单位,即时间单位≥时间精度。时间单位和时间精度均由表示时间长度的整数1、10、100和表示时间单位的字符串构成如:ˋtimescale10ns/1ns表示仿真时间单位为10纳秒,时间精度为1纳秒。时间标尺ˋtimescale时间单位/时间精度testbench时间单位字符串时间字符串含义说明s秒
ms毫秒1000ms=1sus微妙1000us=1msns纳秒1000ns=1usps皮秒1000ps=1nsfs飞秒1000fs=1ps时间标尺ˋtimescale时间单位/时间精度由时间标尺可以计算出时间延迟量。Verilog里时间延迟量由“#数字”组成,写在过程赋值语句之前或中间,代表该条语句的执行时间相对于0时刻或者前一条语句的延迟量。写在语句之前或者中间,执行的过程有所区别。时间标尺ˋtimescale时间单位/时间精度如:assign#5C=A+B//轮到该语句执行时,计算出A+B的值,延迟5个时间单位后再赋值给C又如:`timescale1ns/1nsmoduleinitial
#5a=1;//a信号从5ns开始是高电平endmoule变量声明文本仿真的测试文件使用VerilogHDL编写,不需要端口,模块的第一行通常写作modulemodule_name();把设计文件中的输入端口声明为reg变量,输出端口声明为wire变量。变量声明如例2.2的D触发器设计文件开头moduleDff_model(Q,CLK,PRN,D,ENA,CLRN);inputCLK;inputPRN,D,ENA,CLRN;outputregQ;测试文件开头例化设计文件在测试文件中,对设计文件的例化是必不可少的组成部分。在测试文件中,testbench是顶层,它要例化设计模块,将测试文件中定义的变量与顶层设计文件的端口进行关联。添加激励信号文本仿真也需要给输入端口添加激励信号。在波形窗口呈现出来的数字波形随时间的改变,在文本仿真中运用赋值语句和延迟时间量加以实现。添加激励信号下面介绍一些常用的仿真语句。生成激励信号的赋值语句可以写在initial或always过程块里。initial过程块只执行一次,用于给信号赋初值。如下面这条语句表示。复位信号在40个时间单位以后赋值为0。initial#40rst_n=0;添加激励信号always过程块里的赋值语句可以重复执行。如下面这段代码将生成每20个时间单位变换一次高低电平的clk信号。alwaysbeginclk=1;#20;clk=0;#20;end添加激励信号在文本仿真中,也可以用敏感事件来控制always过程块的执行。如always@(posedgeclk)
#1
number=number+1;//每个时钟上升沿,number的值加1除了过程赋值语句,文本仿真还可以使用if语句、case语句和for、while、repeat和forever等循环语句来表达不同需求的信号赋值,这里不展开叙述。添加激励信号例4.3定义一个输入为a和b,输出为y的二输入与门,用VerilogHDL语言编写一个完整的testbench文件。`timescale1ns/1psmoduletb_and_gate;rega,b;//declareinputswirey;//declareoutputs//instantiatetheANDgatemoduleand_gateuut(
.a(a),
.b(b),
.y(y));initialbegin//initializeinputsa=0;b=0;#10;a=0;b=1;#10;a=1;b=0;#10;a=1;b=1;#10;$finish; //endsimulationendendmodule2.3QuartusPrime文本仿真Quartus软件使用testbench需要调用第三方仿真软件Modelsim。Step1:设定仿真路径Step2:设定仿真输出Step3:生成testbench模板Step4:编辑testbench文件Step5:添加testbench文件Step6:运行testbench010302040506在QuartusPrime软件中进行文本仿真,主要有以下步骤:Step1:设定仿真路径设定仿真路径打开菜单选择Tools→Options→General→EDAToolsOptions,打开对话框选择Modelsim的安装路径。例4.4将例4.3的二输入与门在Quartus软件里进行文本仿真。设定仿真输出从菜单中选择Assignments→Settings→EDAToolSettings→Simulation,这里指定仿真输出文件的格式和输出路径。需要设置的地方有三项,在图中红框里:Toolname:选择ModesimFormatforoutputnetlist:选择VerilogHDLOoutputdirectory:默认关联到modelsim在当前工程所在文件夹里的simulation/modelsim文件夹图4-29指定仿真文件输出路径生成testbench模板选择菜单Processing→Start→StartTestBenchTemplateWriter,生成testbench文件模板。出现提示“201000GenerateVerilogTestBenchFilexxx.vtforsimulation”,说明文件生成成功.编辑testbench文件创建好testbench模板后,在菜单使用File→Open打开测试文件,可以看到模板自动生成的文本内容,包含时间标尺、变量定义、设计模板例化和生成激励四个部分,修改激励信号。编辑testbench文件再次选择Assignments→Settings→EDAToolSettings→Simulation,将对话框中NativeLinkSettings(本地链接设置)的None改成选中Compiletestbench,编辑testbench文件然后点击右边TestBench..按钮,弹出TestBenches框。编辑testbench文件点击new…打开NewTestBenchSettings对话框,在Testbenchname和Toplevelmoduleintestbench处填入测试文件的模块名Dff_model_vlg_test,并在Testbenchandsimulationfiles框内选择文件,点击Add按钮并点击OK。编辑testbench文件logo返回TestBenches对话框,可以看到多了一行test_vlg_tst()文件,选中该文件用旁边的Edit按钮可以进行修改。点击OK回到Simulation页面,点击框中的Apply按钮进行应用。设置完毕。运行testbench选择菜单Tools→RunSimulationTools→RTLSimulation,从Quartus调用Modelsim,显示仿真波形。输入a和b的激励信号与仿真文本一致,仿真成功。第4章编译、仿真与测试功能仿真与时序仿真03PartOne功能与时序仿真波形仿真和文本仿真是从激励信号的输入形式上加以区分,而从与时序的相关性上区分,仿真可分为功能仿真和时序仿真。功能仿真不考虑具体硬件延时信息,仅关注设计电路的逻辑关系正确性。由于不涉及时间参数,功能仿真通常比时序仿真快得多,可以在设计早期阶段发现逻辑上的错误。例4.1和例4.2都是功能仿真。时序仿真结合了目标硬件的特性,主要验证电路的时序正确性以及设置时序性能,如时钟周期、信号传播延时等。用于验证设计在实际情况中的表现是否符合预期。功能与时序仿真FPGA开发软件中通常都可以进行功能仿真和时序仿真。在Quartus软件中,打开仿真器的菜单Simulation,可以看到有两种类型的波形仿真:FunctionalSimulation(功能仿真)和TimingSimulation(时序仿真)功能与时序仿真在Vivado软件中,SIMULATION的RunSimulation操作区分了五种不同的仿真,分别是行为仿真、综合后功能仿真、综合后时序仿真、实现后功能仿真和实现后时序仿真。功能与时序仿真四选一选择器的三种仿真结果。在同样的输入激励下(a)实现后功能仿真没有延迟,在60ns时y变成高电平(b)是综合后时序仿真,是在进行布局布线之前进行的仿真,此时仿真模型中包含了门延迟信息,但还没有包含布线延迟信息。y在65ns时变成高电平。(c)是实现后时序仿真,是在布局布线完成后进行的仿真,此时仿真模型中包含了门延迟和布线延迟信息,更接近实际的芯片工作情况。这张图可以看到,y在70ns才变为高电平,比(b)延迟了5ns,并且出现了毛刺现象。功能与时序仿真第4章编译、仿真与测试程序烧写04PartOne运行testbench4程序烧写程序的实现、烧写和硬件测试围绕FPGA芯片进行。烧写的英文program,因此也常译为编程。它们之间略有区别。“烧写”一词源于早期PROM(可编程只读存储器),PROM芯片采用熔丝工艺,通过通入高电压来改变连接通路,从而改变存储单元的状态。这个过程像在“烧”断电路一样,因此称为烧写,它使得数据永久烧录在器件中。后来有了紫外线可擦除、Flash等更先进的存储技术,烧录过程变得不一样,但烧写这个词仍然沿用了下来,笼统地用于将数据写入各种器件的过程。对于使用易失性SRAM结构的FPGA,将适配后的位流文件数据加载到SRAM中,是为了逻辑功能的动态配置,而不是传统意义的存储,这一个过程称为编程更能明显区别于对非易失性存储器的烧写,这是对硬件电路的编程。但为了不与HDL代码编程混淆,本书中采用“烧写”描述这一过程。运行testbench4程序烧写在FPGA开发过程中,程序烧写是验证设计可行性的关键环节。它将设计好的硬件描述语言(HDL)代码转化为可执行的位流文件/编程文件,并将其下载到FPGA芯片中,已配置芯片内部的可编程逻辑单元、互连资源和I/O单元。进行编程的代码必须通过综合、实现和时序分析等步骤验证其正确性,进行功能仿真和时序仿真确保设计满足预期的功能和性能要求。生成的编程文件包含了FPGA内部配置的所有信息,是FPGA芯片运行的基础。编程文件产生之前,需要进行引脚分配,将代码中定义的输入输出端口与FPGA目标芯片的引脚进行绑定。正确的引脚分配能够确保FPGA在编程烧写后能够按照预期的方式工作,避免出现信号错误或功能失效的问题。4.1QuartusPrime烧写流程准备烧写之前,先要确保工程使用的是目标芯片,通过查看菜单Assignments→Device进行确认。如果此时不是目标芯片(创建工程时没有选择目标芯片),选择目标芯片后再次编译,再进行下面的操作。在QuartusPrime软件中,将程序烧写至FPGA芯片的过程大致分为以下几个步骤:Step1:查找引脚编号Step2:引脚分配Step3:程序烧写配置Step4:连接开发板Step5:烧写程序例4.6将例2.1的设计文件经Quartus软件烧写到IntelFPGA芯片里。1.查找引脚编号在FPGA开发板的用户手册中,可以查找到作为目标芯片的FPGA各引脚编号。以DE0-CV开发板为例,核心芯片是型号为5CEBA4F23C7的CycloneV芯片,通过DE0-CV用户手册可查找到与LEDs、Switches、时钟等简单输入输出以及和VGA、SDRAM等其他外设或接口相对应的FPGA引脚。例如,LEDs的引脚分配如图4-46所示,其中SingalName是开发板上标注的元件编号。Step3:程序烧写配置图4-46DE0-CV开发板中的LED引脚分配引脚分配在Quartus菜单中选择Assignme
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一物理暑假作业《带电粒子在匀强电场中的运动》专题含答案
- 社区活动免责协议书
- 4位数值比较器设计
- 2024年小升初英语的专项复习词汇
- 2024年上海市虹口区上海外国语大学附属某中学化学高一年级上册期末达标测试试题含答案
- 农产品网络营销实践
- 202-2026年长途搬家与货运配送协议合同二篇
- 3.6 电路描述方式
- 2026年龙岩高三历史质量检测卷【试卷讲评】
- 开封智慧健康职业学院2026年单独招生《职业技能测试》模拟试题(无证书考生 面试版)
- 2026广西华盛集团有限责任公司招聘7人农业考试备考试题及答案解析
- 2026山东济南新旧动能转换起步区招聘40人备考题库附答案详解(满分必刷)
- 2026山东济清控股集团有限公司招聘23人农业笔试备考试题及答案解析
- 2026年9套护理三基试卷及答案
- 2026年机动车驾驶人科目一新版通关试题库附参考答案详解【夺分金卷】
- 2024-2025学年广东省广州市白云区八年级(下)期中数学试卷及答案
- (三模)榆林市2026届高三年级四月检测训练物理试卷(含答案及解析)
- 特殊教育融合教学实践指南
- 2026年城管监察员题库检测试题含完整答案详解(易错题)
- 2026广西南宁市青秀区建政街道办事处招聘5人(第16期)笔试参考题库及答案解析
- 2026年版《中华人民共和国药品管理法实施条例》全文解读
评论
0/150
提交评论