我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

时间:2022-05-11 17:13:49

在第 3 篇中讲到了如何使用图形进行仿真激励输入,图形输入法尽管简单易学,但如若要求复杂的仿真输入激励、较长的仿真时间或是要求打印输出信息乃至输出文件日志则显得不够用了。

本篇以上一篇的 3-8 译码器为基础,讲一下 Modelsim 仿真工具的使用方法。在 Modelsim 中不再提供图形的激励输入方法,取而代之的testbench 测试脚本。testbench 简称 tb,虽然名字听起来很专业,但掌握却没什么难度。tb 的语法与 verilog 高度类似;但由于 tb 脚本是在 PC 上运行,语法上显得更加轻松*。我们在初学 C 语言时会用到一个 printf 函数,同样在 testbench 中也存在对应的功能,这里有一个简单的例子,熟悉使用 $dispalay() 输出打印信息。

打开上一篇的工程,按照如图所示的按钮自动生成 testbench 模版。

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

这里生成的 testbench 脚本模版被存放在 D:\Quartus\my38decode\simulation\modelsim\my38decode.vt,注意扩展名是 .vt。vt 文件是供 Modelsim 软件使用的,自身并不属于 Quartus 工程;生成之后也不会出现在 Quartus 工程导航栏里;用户也不需要手动添加它到工程里。

关于 Modelsim-Altera:

Modelsim-Altera 是 Modelsim 的一个 OEM 版本,它集成了一些 Altera 的专有库文件,例如你在 verilog 里使用了乘法,FPGA 内部综合器会调用内嵌的嵌入式乘法器硬核来完成乘法操作,但在仿真的时候为了使结果与综合结果一致,需要手动添加 Altera 的库文件到 Modelsim 工程里。而 Modelsim-Altera 默认包含了所有的 Altera 专有器件库,从而使用户不需要手动添加任何 Altera 的库文件。当然这对初学者几乎没什么意义,但伴随者学习的深入和接触器件的增加,初学者则不得不重新审视这个问题。

由于 Modelsim 的文件编辑器功能十分的简陋,像我机器上的版本 10.1d (集成在 Quartus 13.0SP1)只有简单语法高亮功能;作为代替这里我们使用 Quartus 的文本编辑器来修改 vt 文件;您也可以选择自己喜好的文本编辑器来编辑这个文件。下图显示的是通过 Quartus 打开这个测试脚本文件。

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

使用 Quartus 的编辑器来修改 my38decode.vt:

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

在仿真器前需要设定仿真工具路径:

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

好需要设定仿真环境:

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

添加测试文件脚本到仿真设置中:

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

运行仿真工具:

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

Modelsim 的返回信息:

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

下图为弹出的仿真波形,可以看到,波形验证了我们的设计是正确的:

我的 FPGA 学习历程(05)—— 使用 Modelsim 仿真工具

至此,使用 Quartus 调用 Modelsim 进行仿真就告一段落了,读者可以感觉到 Modelsim 的功能的强大,我会在后面的章节会详细讨论 Modelsim 的使用方法。