FPGA_CPLD应用技术 第5章 数字系统的验证电子教案

上传人:go****e 文档编号:137385696 上传时间:2020-07-07 格式:PPT 页数:36 大小:734KB
返回 下载 相关 举报
FPGA_CPLD应用技术 第5章 数字系统的验证电子教案_第1页
第1页 / 共36页
FPGA_CPLD应用技术 第5章 数字系统的验证电子教案_第2页
第2页 / 共36页
FPGA_CPLD应用技术 第5章 数字系统的验证电子教案_第3页
第3页 / 共36页
FPGA_CPLD应用技术 第5章 数字系统的验证电子教案_第4页
第4页 / 共36页
FPGA_CPLD应用技术 第5章 数字系统的验证电子教案_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《FPGA_CPLD应用技术 第5章 数字系统的验证电子教案》由会员分享,可在线阅读,更多相关《FPGA_CPLD应用技术 第5章 数字系统的验证电子教案(36页珍藏版)》请在金锄头文库上搜索。

1、第五章 数字系统的验证,任务:,设计一个具有“百分秒、秒、分”计时功能的数字跑表,可以实现一个小时以内精确百分之一秒的计时,具有复位、暂停功能,其设计方案框图如图5.1所示。要求复位信号高电平有效,对系统异步清零,暂停信号高电平有效,即高电平停止计数,低电平继续计数,百分秒、秒、分钟计数均采用BCD码计数方式。,逻辑设计,timescale 1ns/1ns Module paobiao(clk,reset,pause,ms_h,ms_l,s_h,s_l,m_h,m_l);,3. Testbench设计,在数字系统设计完成后,就要对设计电路进行功能仿真,以验证设计的正确性,这是本任务的核心步骤。

2、编写Testbench的主要目的是为了对使用硬件描述语言(HDL)设计的电路进行仿真验证,测试设计电路的功能、部分性能是否与预期的目标相符。,module tb_paobiao; regclk,reset,pause; wire 3:0ms_h,ms_l,s_h,s_l,m_h,m_l; paobiao u_paobiao(clk,reset,pause,ms_h,ms_l,s_h,s_l,m_h,m_l); /时钟产生模块 initial begin clk = 1b0; end always #5 clk = clk; /复位信号产生 initial begin reset = 1b0;

3、#100 reset = 1b1; #10 reset = 1b0;,end /暂停信号产生 initial begin pause = 1b1; #300 pause = 1b0; #119905 pause = 1b1; #30 pause = 1b0; end initial $monitor($stime, reset, clk, pause, ms_h, ms_l, s_h, s_l, m_h, m_l); endmodule,Modelsim仿真,1)新建project,(1)选择菜单File/new/project,弹出Create Project对话框,如图5.2所示。,Mod

4、elsim仿真,1)新建project,(2)添加文件到Project中在弹出的Create Project对话框中点击OK,弹出Add items to the Project对话框,选择Add Existing File,弹出Create Project File对话框,如图5.3所示。,Modelsim仿真,1)新建project,(3)在Add file as Type 栏中选择Verilog,点击Browse,添加文件后的对话框,如图5.4所示。,Modelsim仿真,2)编译源代码,点击菜单Compile/Compile all,编译后的文件状态如图5.5所示。,Modelsim仿

5、真,3)启动仿真器,点击Start Simulation,启动仿真器,如图5.6所示。,Modelsim仿真,3)启动仿真器,在work工作库下找到testbench文件,并选中,然后点击OK,如图5.7所示。,Modelsim仿真,4)执行仿真,将仿真信号添加到仿真波形窗口,用鼠标选中仿真信号,选择菜单Add/Wave/Selected Signals,如图5.8所示。,Modelsim仿真,4)执行仿真,选择菜单Simulation/Run/Run All,执行仿真,仿真波形如图5.9所示。,Modelsim,Modelsim是Mentor公司开发的HDL硬件描述语言仿真软件,该软件可以用

6、来实现对用户设计的VHDL、Verilog或者两种语言混合的程序进行仿真,同时也支持IEEE常见的各种硬件描述语言标准。,使用Modelsim进行功能仿真,1.新建工程,在Modelsim软件中选择“File”菜单下的“New”选项, 选择“Project”选项,打开如图5.16所示的新建工程对话框。,在该对话框中填写工程名称,路径和库。单击“OK”按钮,弹出如图5.17所示的添加工程项目对话框。 选择向工程添加的项目类型,然后单击“Close”按钮完成工程的建立。这里选择“Add Exiting File”项目。,使用Modelsim进行功能仿真,2.加入文件,在新建工程时,也可以不选择添加

7、的项目种类,而是在project栏里面单击右键,在弹出的菜单中选择“Add to ProjectExisting File”,如图5.18所示。,使用Modelsim进行功能仿真,3.编译源代码,Verilog 源文件的GUI模式的编译方法是:直接执行主窗口中“Compile”菜单下的各种不同的编译命令,如图5.20所示。,使用Modelsim进行功能仿真,3.编译源代码,当文件窗口中“Status”栏的“”图标变成一个“”的图标时,说明文件编译成功,如图5.21所示。,使用Modelsim进行功能仿真,4.启动仿真器并加载顶层设计,这一步骤的GUI操作方法:执行主菜单中的Simulate/S

8、imulate命令。打开开始仿真对话框,如图5.24所示,选择顶层模块,如图5.25所示。,使用Modelsim进行功能仿真,5.执行仿真,查看波形,右键单击test,选择“Add”选项下面的“Add to Wave”选项,为波形窗口添加信号,如图5.26所示。,使用Modelsim进行功能仿真,5.执行仿真,查看波形,此时即可在新弹出的窗口中看到已添加的信号,如图5.27所示。,使用Modelsim进行功能仿真,5.执行仿真,查看波形,单击工具栏中的图标就能看见仿真结果了,如图5.28所示。,5.3 Testbench设计方法,通常Testbench没有输入与输出端口,通常应包括信号或变量定

9、义,产生激励波形语句,例化设计模块,监控和比较响应输出语句。,5.3.1 Testbench基本结构,module test_bench; 信号或变量定义声明 使用initial或always语句来产生激励波形 例化设计模块 监控和比较输出响应 endmodule,5.3 Testbench设计方法,HDL用于描述硬件电路,同样也可以用于描述仿真激励的产生。HDL描述可以产生所需要的控制信号,以及一些简单的数据。,5.3.2 简单CPU接口激励产生方式,initial begin cs_n = 1; / CPU接口初始状态 wr_n = 1; rd_n = 1; addr = 8hxx; da

10、ta = 8hzz; #1000; / 一次写操作 cs_n = 0; wr_n = 0; addr = 8h80; data = 8h00; #100; cs_n = 1; wr_n = 1; #10; addr = 8hxx; data = 8hzz; end,5.3 Testbench设计方法,5.3.4 常用产生激励描述方式,1)产生时钟的几种方式,(1)使用initial方式产生占空比为50%的时钟,initial begin clk = 0; #delay; forever #(period/2) clk = clk; end,5.3 Testbench设计方法,5.3.4 常用产

11、生激励描述方式,1)产生时钟的几种方式,(2)使用always方式,initial clk = 0; always #(period/2) clk = clk;,5.3 Testbench设计方法,5.3.4 常用产生激励描述方式,1)产生时钟的几种方式,(3)使用repeat方式产生确定数目的时钟脉冲,initial begin clk = 0; repeat(6) #(period/2) clk = clk; end,5.3 Testbench设计方法,5.3.4 常用产生激励描述方式,1)产生时钟的几种方式,(4)产生占空比非50%的时钟,initial clk = 0; always

12、begin # 3 clk = clk; # 2 clk = clk; end,5.3 Testbench设计方法,5.3.4 常用产生激励描述方式,2)产生复位信号的几种方式,(1)异步复位,initial begin rst = 1; #100; rst = 0; #500; rst = 1; end,5.3 Testbench设计方法,5.3.4 常用产生激励描述方式,2)产生复位信号的几种方式,(2)同步复位1,initial begin rst = 1; (negedge clk); /等待时钟下降沿 rst = 0; #30; (negedge clk); /等待时钟下降沿 rst

13、 = 1; end,5.3 Testbench设计方法,5.3.4 常用产生激励描述方式,2)产生复位信号的几种方式,(3)同步复位2,initial begin rst = 1; (negedge clk); /等待时钟下降沿 repeat(3) (negedge clk); /经过3个时钟下降沿 rst = 1; end,5.4 常用的Verilog测试语句,1. $display/$monitor,/在终端上打印信号的ASCII值 initial begin $timeformat (-9,1, “ns”,12); /设置输出时钟格式 $display(“stime clk rst pa

14、use ms_h ms_l s_h s_l m_h m_l”); /显示输入的字符串 $monitor(“%t %b %b %b %b %b %b %b %b”, /设置输出信号格式 $realtime,clock,reset,pause,ms_h,ms_l,s_h,s_l,m_h,m_l); /指定输出的信号 end,$display是将函数内部双引号中的字符串输出在终端上。而$monitor则不同,它的输出是事件驱动的。在例子中,$monitor信号列表中的$realtime信号变化会触发终端显示事件的发生,该信号被设计者对应到仿真时间中,每次$monitor的触发将会把信号列表中的信号值

15、显示在终端中。 $monitor语句中的“%”用于定义信号列表中信号的输出格式。例如,%t将信号按照时间格式输出,%b将信号按照二进制格式输出。另外Verilog HDL语言还提供了其它的输出格式,比如%h为十六进制输出,%d为十进制输出,%o为八进制输出等。,5.4 常用的Verilog测试语句,2. timescales,timescale 1ns/1ps /度量参考为1ns,精度为1ps module testbench; initial begin #10 rst = 1; /10个仿真时间延时,相当于10 x1ns=10ns的仿真时间 end initial begin /displ

16、ay语句将在每一个仿真推进布进中执行,也就是1ps执行一次 $display (%d, rst = %bm $time, rst); end endmodule,timescale reference_time/precision 其中reference_time是单位时间的度量,precision决定了仿真的推进延迟精度,同时也设置了仿真的推进步进单位。,5.4 常用的Verilog测试语句,3. force/release,moduletestbench; . initial begin rst = 1; /在仿真时间零点将rst赋值1 force data = 101; /在仿真时间零点强制使data为101,并保持 #30 rst = 0; /在仿真绝对时间30将rst赋值0 #50 release data; /在仿真绝对时间80释放 . /data值将保持直到下一个对

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号