modelsim初学者教程

  • 格式:pdf
  • 大小:413.33 KB
  • 文档页数:11

Modelsim SE 10.0.c入门教程

小小龙 www.heijin.org

结合黑金FPGA开发板的所用的软件quartus 11.0与modelsim10.0c,

本文介绍给初学者介绍Modesim SE 入门,Modesim SE 入门视频可

在www.heijin.org上下载!

大家知道,自从quartus 10以后,quartus就不自带的波形仿真软件,

想要仿真需自己安装第三方软件(如modelsim等),闲话我就不多说,

下面主要介绍如何在quartus 11.0中如何调用modelsim 10.0c以及

testbench的编写。

下面就以一个计数器为例进行讲解(黑金开发板DB4CE平台),前提

需安装quartus11.0 、modelsim10.0c,好了,切入正题。

新建工程时在出现的画面中按如下设置

根据仿真软件及语言进行选择,上图我们用到的软件为modelsim, 语

言:Verilog HDL

下面我们编写一个计数器程序,在quartus中编写count128.v文件,

代码如下:

module count128(clk,rst_n,divclk,data);

input clk,rst_n;

output divclk;

output [7:0] data;

reg[7:0] data;

assign divclk=data[7];

always@(posedge clk or negedge rst_n)

if(!rst_n)

begin

data<=8'h00;

end

else

begin

data<=data+1'b1; end

endmodule

程序实现对clk的128分频

下一步告诉大家怎样编写仿真测试文件testbench,如下操作

至此,testbench模板已经OK!,生成的文件为.vt,位于工程文件夹

simulation\modelsim中,如下

有了模板,但只是给了我们一个架构,还需要编写仿真文件,打开模

板,来瞧瞧里面到底有些什么 `timescale 1 ps/ 1 ps

module count128_vlg_tst();//顶层模块名

// constants

// general purpose registers

reg eachvec;

// test vector input registers

reg clk;

reg rst_n;

// wires

wire [7:0] data;

wire divclk;

// assign statements (if any)

count128 i1 (

// port map - connection between master ports and signals/registers

.clk(clk),

.data(data),

.divclk(divclk),

.rst_n(rst_n)

);

initial

begin

// code that executes only once

// insert code here --> begin

// --> end

$display("Running testbench");

end

always

// optional sensitivity list // @(event1 or event2 or .... eventn)

begin

// code executes for every event on sensitivity list

// insert code here --> begin

@eachvec;

// --> end

end

endmodule

注意:testbench中规定

a) 输入一律为reg型变量,输出为wire型;

b) 可以有不可综合的语句;for,while等;

根据count128.v,测试文件testbench为 `timescale 1 ps/ 1 ps//仿真时间单位

module count128_vlg_tst();

reg clk;

reg rst_n;

// wires

wire [7:0] data;

wire divclk;

// assign statements (if any)

count128 i1 (

// port map - connection between master ports and signals/registers

.clk(clk),

.data(data),

.divclk(divclk),

.rst_n(rst_n)

);

initial

begin

clk=1;

rst_n=0;

#50 rst_n=1;

#100000 $finish;

end

always #2 clk= ~clk; //每隔2个单位翻转

endmodule

只要给时钟clk和rst_n赋值变OK了 接下来对工程进行一些设置:

让quartus调用modelsim如下设置

上图以modelsim安装在D盘为例进行说明,请根据自己安装位置进

行选择,至此modelsim调用完成。

进行仿真设置:

上图设置与下图testbench文件中画红线的地方对应

接下来进行编译,仿真

可以看到,出现了仿真波形,要用到的几个波形按钮(放大、缩小,

插入\删减光标等)用红色标出,童鞋们自己试试。这样我们就完成

了modelsim功能仿真。