本科生实验2仿真与逻辑分析改

上传人:今*** 文档编号:106104600 上传时间:2019-10-14 格式:DOCX 页数:22 大小:3.71MB
返回 下载 相关 举报
本科生实验2仿真与逻辑分析改_第1页
第1页 / 共22页
本科生实验2仿真与逻辑分析改_第2页
第2页 / 共22页
本科生实验2仿真与逻辑分析改_第3页
第3页 / 共22页
本科生实验2仿真与逻辑分析改_第4页
第4页 / 共22页
本科生实验2仿真与逻辑分析改_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《本科生实验2仿真与逻辑分析改》由会员分享,可在线阅读,更多相关《本科生实验2仿真与逻辑分析改(22页珍藏版)》请在金锄头文库上搜索。

1、实验2 仿真与逻辑分析- 哈尔滨工业大学, 杨荣峰- 实验指导文件, All rights reserved- 2014/3/13 Ver.1.01 实验内容(1)学会仿真工具与集成开发环境中逻辑分析仪的使用。(2)仿真实验1: 仿真上节课的计数及显示程序,学习modelsim的使用,以及逻辑分析仪的使用。(3)扩展要求:三角波信号发生器,熟悉仿真、状态机的使用,以及逻辑分析仪的使用。2 可编程逻辑器件仿真与测试手段介绍EDA开发中,编译和综合只能说明程序编写语法没有问题,无法验证程序逻辑功能是否正确。常见的验证方法是通过仿真实现。在QuartusII中,V11.0之前的版本自带一个图形化的仿

2、真环境,之后的版本不再自带仿真器。仿真工具使用最广泛的是Modelsim工具。ModelSim为HDL仿真工具,我们可以利用该软件来实现对所设计的VHDL或Verilog程序进行仿真,支持IEEE常见的各种硬件描述语言标准。可以进行两种语言的混合仿真,但推荐大家只对一种语言仿真。3 modelsim的使用验证计数器程序 (1)从开始菜单中打开modelsim。注意:不要从桌面打开。“桌面”目录由于存在中文字符,软件使用会出问题。如图1所示。 图1 (2)从文件菜单中新建工程。如图2所示。并在接下来的对话框中设置工程名称和工程路径,如图3所示。其他参数缺省即可,设置完单击OK。图2图3(3)现在

3、已经新建了空白工程,接着会弹出对话框,提示可以新建源文件,添加已存文件,或新建目录等。如果已经有一些文件可以添加,如果没有可以选择新建文件。也可以关掉此对话框,在文件菜单中新建源文件。图4(4)选择新建文件,在弹出的对话框中,输入文件名,注意选择文件类型为verilog。单击OK结束。图5(5)可以看到工程中已经加入了新建文件。双击该文件,可能有三种情况:i)如图6(b)所示,进入文本编辑界面,恭喜你,请进入下一步骤(6)。Ii)弹出系统的文本编辑器。如图6(C)所示,那么你可以在文本编辑器中输入程序,由于该软件编写程序不能以彩色显示特殊字符,所以不推荐。那么你可以从文件菜单中选择open打开

4、已建好的文件,则会进入图6(b)界面。Iii)最糟糕的情况是,某些机器会不断打开modelsim,此时用快捷键alt+F4,迅速关闭所有modelsim程序,然后用ii)方法,即file菜单open的方式打开文件。(a) (b)(C)图6(6)在编辑界面中输入模块定义源代码,仍然是verilog语法,所以本质上仍然是定义模块功能。现在这个模块的功能是产生激励信号,并把该信号输入到测试模块中(调用测试模块),验证测试模块逻辑功能。程序定义如下,界面如图7.timescale 1ns / 1ns /定义仿真时间 - 单位/精度module test; parameter DELAY=200; re

5、g clk, rst; initial /生成rst信号,低电平有效,保持DELAY个时间单位 begin rst=0; #DELAY rst=1; end initial / 生成50MHz时钟信号 begin clk = 0; forever #10 clk = !clk; end /module DisCnt(iCLK_50, oHEX0_D); wire 6:0 Hex; DisCnt U0(clk, Hex);/调用要测试的模块endmodule图7(7)加入上节课的分频器与显示模块。在右键菜单或者Project菜单中,添加已经存在的文件。如图8所示。之后选择上节课的文件DisCnt

6、。最后工程如图9所示。图8 (8)如图9所示,已经加入了文件DisCnt.v文件。双击该文件可以在编辑界面看到该文件。在左侧工程栏中,可以看到当前工程文件,及其状态。蓝色问号表示文件修改后未编译。绿色代表文件编译完成。点击上方工具栏中的编译图标,编译所有工程文件。如果一切正常,所有文件状态为,否则根据最下方的提示修改程序。图9 出现错误时,注意点击相关提示,可迅速定位到错误位置,如图10所示绿色圈中的错误提示信息都可以点击,可以迅速定位到红圈处语法错误。图10(9)编译成功后。选择simulate中的开始仿真选项。然后在弹出的对话框中选择刚才的定义过得顶层模块test。点击OK,即可启动仿真。

7、如果出现错误,注意看下错误信息,例如图11中提示没有找到模块SEG7_LUT。图11(10)事实上还缺少文件fdiv模块定义文件,添加上节课使用过的文件Seg7_lut.v和fdiv.v文件,文件如图12所示。重新编译。再重新仿真。成功后如图12所示,弹出新标签sim。图12(11)点击sim标签,在实例(instance)列表中可以看到模块名、实例名、模块关系(加号之下可以展开底层模块)。点中模块,可以在右边objects栏看到该模块内部的所有信号。选择要观察的测试模块如U0,然后在右键菜单中加入到波形窗口。也可选中objects中的该模块内的信号(shift,ctrl等多选),同样右键菜单

8、加入波形窗口。图13(12)会弹出新的窗口wave。可以看到要观察的信号已经列出来了,如图14所示。例如“/test/U0/CLK_50”表示test模块(顶层模块)下的U0模块下的CLK_50信号。现在仿真环境建立起来了,仿真还没开始运行。点击主窗口或wave窗口中工具栏run-all图标开始运行仿真。如图15.图14图15(13)开始仿真后,run图标灰色,只有停止仿真按钮有效。同时下方仿真时间在变化,表明仿真正在运行。此时如果没有看到串口中的波形,点击zoom按钮。如图16所示。图16点击停止仿真图标,并观察波形。其中room full和room cursor很有效,能分别显示所有仿真时

9、间内的波形,和展开当前鼠标位置波形。图17(14)可以看到除了50MHz时钟信号有,其他信号都是“x”,表示是未知的。在verilog中如果对寄存器变量不赋初始值,则其值为“x”,仿真时显示为红色线条。由于x信号的运算结果通常也是x,所以这些信号将一直保持为未知状态。为了观察波形,需要对寄存器类型变量添加初始化代码。分析代码可知clk_1Hz,cnt等都需要附初值。修改程序如图18所示。注意不仅仅模块定义增加rst相关操作,调用模块式也需要把rst加进去,否则不连线是无效的。图18(15)重新上述步骤:编译、仿真、观察波形,如图19所示。由于1Hz才会加1个数,仿真时间较长。所以这里把程序适当

10、修改,如图20所示,减去3个0,则变成1ms时钟了。图19图20再次编译,并选择restart仿真,可以快速重启仿真而不必重复之前操作。仿真可以看到如图21所示。图21点中信号,右键菜单中选择属性,设置为十进制数显示。效果如图22所示。图22在扩展实验中要用到模拟量的显示,只需在属性中Format菜单中选择模拟量显示并设置起始值和终值即可。事实上,还可以通过quartusII的信号逻辑分析仪功能,实时查看芯片内变量或者信号状态。其原理是在电路中生成一个模块,该模块通过jtag接口与quartusII传递信息,从而在quartusII中可以看到正在运行的电路内部信号状态。下面就用逻辑分析仪观测上

11、述例程的波形。打开第一次课中的数码管显示计数0到9循环的工程,新建文件:signaltap II logic analyzer file选择硬件usb-blaster其原理是:在触发信号到达时,把电路内部的状态都存在一个ram表中,然后jtag接口把ram表中的数据传到quartusII中。因此,首先设置触发信号,单击clock后面的按钮选择不同过滤条件,可以找到不同的信号,选择其中一个合理的信号作为触发源在左边的区域双击,添加要观察的信号(add nodes)编译下载可以看到正在运行的fpga芯片传回来的电路状态 可以看出采样时间限制我们只能看到计数器的一个状态,因此我们将计数器的频率提高,重新编译下载可以看到计数器的状态变化在扩展实验中要用到模拟量的显示,这时需要将采集的信号设置为模拟量显示4 扩展实验:编写三角波信号发生器程序,熟悉仿真、状态机的使用,以及逻辑分析仪的使用。分析:三角波信号规律为幅值依次增大,当到达最大值时,幅值减小,减小到最小值时,再次增大,周而复始。功能划分:(1) 状态机:两个状态上升、下降状态。(2) 上升状态时,计数器递增计数(3) 下降状态时,计数器递减计数(4) 状态切换在modelsim中完成程序编写、测试、仿真在quartus中完成逻辑分析仪的测量

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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