modelsim初学者教程.pdf
文本预览下载声明
Modelsim SE 10.0.c 入门教程
小小龙
结合黑金 FPGA 开发板的所用的软件quartus 11.0 与modelsim10.0c,
本文介绍给初学者介绍Modesim SE 入门,Modesim SE 入门视频可
在 上下载!
大家知道,自从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=8h00;
end
else
begin
data=data+1b1;
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
// inse rt code here -- begin
@eachvec;
// -- end
end
endmodule
注意:testbench 中规定
a) 输入一律为reg 型变量,输出为wire 型;
b) 可以有不可综合的语句;for,while 等;
根据count128.v,测试文件testbench 为
`timescale 1 ps/ 1 ps//仿真时间单位
module coun
显示全部