在对一个设计块进行仿真时,需要准备一个测试模块。该模块大致由三部分组成:第一部分实例引用被测试的模块(即设计块)。第二部分是给输入信号赋各种不同的组合值,即激励信号。第三部分指定测试结果的显示格式,并指定输出文件名。由于测试模块的主要任务是给设计块提供激励信号,所以也称为激励块。\\n\\n激励块通常是顶层模块,同样用 Verilog HDL来描述。它是以module 开始并以end-module 结尾的,内部包括模块名、数据类型的声明、低层次模块的实例引用和行为语句块(initial或者always),但是不需要声明端口。\\n\\n在激励块中,通常会使用编译指令timescale 将时间单位与实际时间进行关联。编译指令(compiler directives)为仿真工具提供有关如何解释 Verilog模型的附加信息。编译指令放在模块定义之前,并以反引号(即)开头。timescale的格式为:\\n\\ntimescale time_unit/time_precision\\n\\n其中,tine_unit为仿真时间单位,time_precision为仿真时间的精度(即最小分辨度)。注意,时间单位通常大于或等于时间精度。\n\n按照附录D中介绍的基于工程项目的仿真流程,首先创建一个工程项目,接着添加设计文件,然后进行编译、在对一个设计块进行仿真时,需要准备一个测试模块。该模块大致由三部分组成:第一部分实例引用被测试的模块(即设计块)。第二部分是给输入信号赋各种不同的组合值,即激励信号。第三部分指定测试结果的显示格式,并指定输出文件名。由于测试模块的主要任务是给设计块提供激励信号,所以也称为激励块。\\n\\n激励块通常是顶层模块,同样用 Verilog HDL来描述。它是以module 开始并以end-module 结尾的,内部包括模块名、数据类型的声明、低层次模块的实例引用和行为语句块(initial或者always),但是不需要声明端口。\\n\\n在激励块中,通常会使用编译指令timescale 将时间单位与实际时间进行关联。编译指令(compiler directives)为仿真工具提供有关如何解释 Verilog模型的附加信息。编译指令放在模块定义之前,并以反引号(即)开头。timescale的格式为:\\n\\ntimescale time_unit/time_precision\\n\\n其中,tine_unit为仿真时间单位,time_precision为仿真时间的精度(即最小分辨度)。注意,时间单位通常大于或等于时间精度。\n\n按照附录D中介绍的基于工程项目的仿真流程,首先创建一个工程项目,接着添加设计文件,然后进行编译、仿真和调试。具体步骤如下: (1)在Windows资源管理器中,新建-一个子目录(例如,F:\\Test. mux2tol)。 (2)打开一个文本编辑器(例如,Notepad++),输入设计块和激励块源代码,并将它们保存在新建的子日录中,文件名分别为mux2to1_df.v 和test_ mux2to1_df.v,如图
mux2to1_df.
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相同。表明该设计块描述的逻辑功能是正确的。 (8)结束仿真,退出ModelSim仿真器 实验视频链
https://v.youku.com/v_show/id_XNTkyMDM0MjI0OA==.html? x&sharefrom=android&sharekey=c945da559d0f43846787196b1acb5272 https://v.youku.com/v_show/id_XNTkyMDM0MjI0OA==.html? x&sharefrom=android&sharekey=c945da559d0f43846787196b1acb5272
密码:12345678A