嵌入式 > 嵌入式开发 > 详情

FPGA系统设计的仿真验证之: 功能仿真和时序仿真的区别和实现方法

发布时间:2020-06-13 发布时间:
|

 

7.4功能仿真时序仿真的区别和实现方法

这里我们使用一个波形发生器作为例子,来说明如何使用Modelsim对QuartusII生成的IPCore和相应的HDL文件进行功能仿真时序仿真。这个例子里面使用到了由QuartusII生成的一个片上ROM存储单元。这种存储单元和RAM一样,都是基本的FPGA片上存储单元,在以后的设计里面会经常使用到。

7.4.1功能仿真

(1)在QuartusII中设置第三方仿真工具,选择“Assignments-Settings-EDAToolSettings-Simulation”,选择“ModelSim-Verilog”。如图7.17所示。

图7.17EDA工具设置

(2)编译工程。编译带有IPCore的工程文件。

(3)编译完成后会在工程目录下生成“simulation-modelsim”的目录,如图7.18所示。其中包含了3个文件:“.vo”是仿真网表文件,可以用来代替设计文件;“.xrf”是Quartus编译生成的信息文件;“.sdo”是工程延时信息。

图7.18编译生成文件

(4)加入仿真库文件。

仿真库的路径为“C:\altera\quartus50\eda\sim_lib”,包含了如下3个仿真库文件。

·220model.v:带有用户原语类型的Quartus自带的IP核的库文件。

·altera_mf.v:Quartus自带的IP核的库文件。

·cyclone_atoms.v:相应系列的器件库。

在本例中需要添加altera_mf.v,cyclone_atoms.v两个库文件。

(5)编写测试文件(详见7.5节)。

(6)将测试文件粘贴到刚才生成的目录中,如图7.19所示。

图7.19添加测试文件

(7)打开modelsim。

(8)创建工程并添加源文件,如图7.20所示。

图7.20为工程添加源文件

(9)编译工程。结合库文件一起进行编译、如图7.21和7.22所示。

图7.21全部编译前

图7.22全部编译后

(10)修改wave.vo文件。将文件中的延时信息注释掉,即:

//initial$sdf_annotate(WAVE_v.sdo);

(11)重新编译wave.vo文件。

(12)打开开始仿真对话框,如图7.23所示对话框。

选择顶层模块wave_top,开始进行仿真,如图7.24所示。

图7.23选择开始仿真的文件 图7.24选择顶层模块文件

(13)添加信号。右键选择添加信号到波形图。并在命令行中敲入“run1ms”,按“回车”键,开始仿真。结果波形如图7.25和图7.26所示,分别是二进制显示、十进制显示。

图7.25二进制显示

图7.26十进制显示

放大查看细节的波形时序,可以发现,功能仿真的结果是没有延迟的,如图7.27所示。

图7.27功能仿真结果无延迟

7.4.2时序仿真

(1)将功能仿真第(10)步中对wave.vo文件做的注释改回来,重新进行编译。

(2)重新打开开始仿真对话框,选择顶层模块,如图7.28所示。

(3)选择“SDF”选项卡,如图7.29所示。

图7.28选择顶层模块仿真 图7.29“SDF”选项卡

(4)加入“.sdo”文件,将两个SDFOptions都选中,如图7.30所示。

图7.30添加“.sdo”文件

(5)和功能仿真一样,为波形窗口添加信号,开始进行仿真。

(6)通过波形图,查看时序仿真的延时,如图7.31所示。

图7.31查看时序仿真延迟



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
django是什么_django能做什么