逻辑功能的仿真与测试

在对一个设计块进行仿真时,需要准备一个测试模块。该模块大致由三部分组成:第一部分实例引用被测试的模块(即设计块)。第二部分是给输入信号赋各种不同的组合值,即激励信号。第三部分指定测试结果的显示格式,并指定输出文件名。由于测试模块的主要任务是给设计块提供激励信号,所以也称为激励块。

激励块通常是顶层模块,同样用 Verilog HDL来描述。它是以module 开始并以end-module 结尾的,内部包括模块名、数据类型的声明、低层次模块的实例引用和行为语句块(initial或者always),但是不需要声明端口。

在激励块中,通常会使用编译指令timescale 将时间单位与实际时间进行关联。编译指令(compiler directives)为仿真工具提供有关如何解释 Verilog模型的附加信息。编译指令放在模块定义之前,并以反引号(即)开头。timescale的格式为:

timescale time_unit/time_precision

其中,tine_unit为仿真时间单位,time_precision为仿真时间的精度(即最小分辨度)。注意,时间单位通常大于或等于时间精度。

按照附录D中介绍的基于工程项目的仿真流程,首先创建一个工程项目,接着添加设计文件,然后进行编译、仿真和调试。具体步骤如下:

(1)在Windows资源管理器中,新建-一个子目录。

(2)打开一个文本编辑器(例如,Notepad++),输入设计块和激励块源代码,并将它们保存在新建的子日录中,文件名分别为mux2to1_df.v 和test_ mux2to1_df.v,如图

d284154ff9f7459db724722bd77364a2.png

mux2to1_df.v

b6337c9162cb49fd9554955deea6fe87.png

 test_mux2to1_df.v

(3)打开ModelSim软件,创建一个新的工程设计项目( test_mux2to1_df) ,添加已经存在的源文件( mux2to1_df.v 和test _mux2to1_df.v)。

(4)在Project子窗口中,编译所有的源文件。如果编泽成功,则代码文件的Status栏显

示为绿色的“✓"。如果编译出错,则会给出相关错误信息,修改代码,然后再重新编译,直到没有编译错误。

(5)将设计载入仿真器,开始仿真。编译成功之后,仿真器通过调用VerilogHDL的顶层模块将设计载人到仿真器中,弹出与仿真相关的子窗口,且设置仿真时间从0时刻开始。(6)将需要观察的信号添加到Wave子窗口中。

(7)执行仿真命令,得到如图所示的输入、输出波形;同时,还得到图最下面以文本方式显示的仿真结果。可见,在0~20 ns期间,由于PS=0,所以输出PY与输入PDO相同;在20~40 ns期间,PS=1,故输出PY与输入PD1相同。表明该设计块描述的逻辑功能是正确的。

7ee93136031b4e4684f7e780115efb33.png

 

(8)结束仿真,退出ModelSim仿真器。

实验视频链接:https://v.youku.com/v_show/id_XNTkxODYwMDMxNg==.html?x&sharefrom=android&sharekey=af167baf81f10f18ca2bdaa177d666538

密码:12345678A

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cyc2311

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值