基于Quartus II+ModelSim SE的后仿真(Verilog版)

基于Quartus II+ModelSim SE的后仿真(Verilog版)

 

 

一、Quartus 中的相关设置

  1. 在Quartus中建立名为counter的工程,设置仿真工具为ModelSim(Verilog),这一步您可以在New Project Wizard中指定(如图1所示),也可以在后面的Assignments->EDA Tool Settings中设置
  2. 设置完以后,在 Quartus 中进行全编译,这里使用 counter.v作为例子,这样在工程目录下会生成 simulation 文件夹,内部ModelSim文件夹中有三个文件分别是counter.vo(布局布线后的仿真模型文件),counter_modelsim.xrf(好像是实例化的元件),counter_v.sdo(标准延时输出文件)。到这里可以关闭Quartus II了!

 

二、ModelSim 中手工添加 Altera的仿真库

在您的ModelSim安装目录中建立两个文件夹,一个是用于存放公用的库我给它取名altera_base_v;另一个是用于存放您要用到的特定的器件库,我用到的是cyclone系列所以命名为cyclone_v。我是这样建的: 

 

注意要在altera_base_v和cyclone_v两个目录下分别新建一个 _info ,否则在对库文件进行编译的时候会提示找不到_info文件。

 

  1. 现在可以启动您的ModelSim SE了。从主菜执行File->New->Library 命令,出现对话框如图3所示,选中a new library and a logical mapping to it,在Library Name填写altera_base_v,Library Physical Name填。填写如图3所示:

 

 

                 图3                                     图4

  1. 点击OK,如图4所示,可以看到altera_base_v这样一个库名,不过这时库里面还是空的。如果要修改库文件映射的名称或者路径,在相应的库上右击,如图4中的altera_base_v,选择Edit,就可以进行相应的修改,注意修改后的结果不能立即生效,立即点击Compile->Compile…Compile>Compile…会出错。可以右击Update就可以使修改生效。
  2. 从主菜单工具栏中执行 Compile->Compile…命令,弹出一个对话框,点中 Library 下拉菜单,由 work改为 altera_base_v,点中查找范围下拉菜单,指向 Quartus II 安装目录\quartus\eda\sim_lib,对图 5 中的220model.v、altera_mf.v和altera_primitives.v三个文件进行编译。

 

 

                                  图5

 

  1. 现在开始编译您要用到的器件库,我要用的是 cycloneii 系列的 FGPA 我就只编译 cycloneii 相关的.v 文件就好了。重复1至3的步骤,并编译cycloneii_atoms.v  。

 

 

                                     图6

 

  1. 编译结束后,点击Done按钮。这样虽然编译了仿真时所需的Altera库文件。为了在每次新建工程的时候不需要重新编译Altera的仿真库,需要修改Modelsim的安装目录下的modelsim.ini文件。

 

第一步 选中modelsim.ini文件,右键单击属性,将只读属性去掉。

第二步 用写字板或其它工具打开modelsim.ini文件,在[Library]这个位置下面添加如下2行,如图7所示:

 

 

                                 图7

第三步  保存文件,关闭文件后,再将只读属性打开。 最后在左侧面板位置点鼠标右键->Refresh一下。

 

三、现在开始建立您的 ModelSim 工程了。

1.    在ModelSim 中新建一个工程工程目录可以直接使用 Quartus生成的 “Quartus工程所在目录\simulation\modelsim”,把 counter.v 还有测试文件 counter_tb.v一起 Copy 到这个文件夹中。

2. 点击ModelSim面板中的File->New->Project…选项,新建一个工程,点击 Add new file to project 将counter.v , coumter_tb.v , 和 counter.vo三个文件添加到工程中去,这三个文件是后仿真所需要的。

4.    编译上述的三个文件,如果正确会在命令窗口出现如图8的提示信息

 

 

图8

 

  1. 点击工具栏的 simulate->start simulate,启动仿真设置页面如下。选中上面的选项卡中的 Design 再点击 work 左边的“+”,选中文件 counter_tb.v,如图 9 所示。把 Enable optimization 前面的勾去掉。选中Libraries加载刚才建的库如图11所示。

 

                                        图9

 

  1. 选中选项中的DSF,在SDF File中,点Browse...找到ModelSim中的工程目录,找counter_v.sdo加入。其中作用域 Apply Region 即为顶层模块的例化名称,这里是 u1 。如图10:

 

图10

 

 

  1. 然后点击 OK,准备运行,若有问题会在命令窗口中显示响应警告信息。选择View> Wave,出现波形窗口,点击Run-all , Break,得到仿真波形。需要注意的是,当不小心修改了 .v 文件时,由于 .vo文件未能实时更新,会造成仿真无法进行,这是需要打开Quartus重新综合,在Modelsim下对最新的 .vo 文件重新进行编译,就可以了。仿真结果如图11:

 

 

                                     图11

 

可以发现,后仿真的信号数量比功能仿真要多得多,并且从波形输出中也可以看到明显的由器件本身带来的延时。图12是信号的局部放大图。

 

 

图12

 

附录:

 

/***** 顶层文件 : counter.v *****/

module counter(

clk,

dout

);

 

input clk;

output [7:0]dout;

 

reg [7:0] cnt;

 

initial

   cnt = 8'd0;

 

always @ (posedge clk)

begin

   if(cnt == 8'd255)

      cnt = 8'd0;

   else

      cnt = cnt + 8'd1;

end

 

assign dout = cnt;

 

endmodule

 

 

 

 

 

 

 

 

/***** test bentch : counter_tb.v *********/

`timescale 1ns/1ns

module counter_tb;

reg clk;

wire [7:0] dout;

 

always

   #10 clk = ~clk;

  

initial

   clk = 0;

  

counter u1(.clk(clk),.dout(dout));

 

endmodule

posted @ 2014-03-02 22:44  eragon  阅读(1719)  评论(0编辑  收藏  举报