4.2 波形与文本仿真_第1页
4.2 波形与文本仿真_第2页
4.2 波形与文本仿真_第3页
4.2 波形与文本仿真_第4页
4.2 波形与文本仿真_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

第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→StartTestBenchTem

温馨提示

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

评论

0/150

提交评论