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功能仿真。