下面是基于在Altera Quartus II 下如何调用M odelS im 进行仿真的一个实例。 本来想和上一张 modesin 破解应用一起讲解,但是我在写的时候发现太多了,为了清楚明了,我就单独出了一篇。
Quartus II 9.1,modesim 版本为modesim 6.5a,Quartus无法像ISE 那样方便的直接调用ModelSim,而
是需要额外的做一些工作。这确实给我们的仿真调试带来了一些不便。我也是在摸索了好久以后才彻底搞定这个问题,下面分享下,力求明白易懂,让大家少走一些弯路。
1、首先我们写一个代码如下的文件,保存为.v,因为我们采用的是verilog语言,代码意思为DIV 输出一个2分频的一个时钟,我们这里为什么要用到时钟呢,因为在我们不用到时钟的modesim 仿真中,要简单很多,使用到时钟的modesim 仿真,要全面一点,因此,我们这里主要讲解这个。 module clkdiv //clkdiv 这个名一定要跟文件名相同 ( clk, rst_n, div );
input clk; //系统时钟
input rst_n; //复位信号,低有效 output div; // 2 分频信号 reg div;
always @ (posedge clk or negedge rst_n )
if( !rst_n ) div <= 1'b0; else
div <= ~div; endmodule
2、然后我们新建工程,新建工程与普通的新建工程是没区别的,最后一步的时候要注意,如下图
选择我们要使用的仿真软件和仿真语言,
3、然后我们编译一下这段代码,在文件夹下面就会多一个(工程目录)\\simulation\\modelsim 。这个下面生成的是仿真所需要的文件,其中.vo 文件就是我们的代码布局布线信息。
4、打开processing下的start目录下的start test bench template writer自动创建后 缀为vt的文件。
5、接下来我们打开 工程目录\\simulation\\modelsim\\clkdiv.vt 进行编辑,其中默认生成的文件如下:
`timescale 1 ps/ 1 ps module clkdiv_vlg_tst();
// constants // general purpose registers reg eachvec;
// test vector input registers reg clk; reg rst_n;
// wires wire div;
// assign statements (if any) clkdiv i1 (
// port map - connection between master ports and signals/registers .clk(clk), .div(div), .rst_n(rst_n) );
initial begin
// code that executes only once // insert code here --> begin // --> end
$display(\ 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
我们要注意到,默认的模块名字是 clkdiv_vlg_tst ,把我们所写的clkdiv.v文件封装成了 clkdiv i1 的文件名,通过write 连接。 因此我们需要修改下面的initial 文件,
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库quartus与modelsim联合调试在线全文阅读。
相关推荐: