您的位置:首页 > 其它

Quartus ii与Modelsim-altera 6.5b联调前仿真

2014-08-24 14:52 330 查看
本实例使用的是Quartus ii9.1版本,Modelsim-altera版本是 Quartus ii9.1版本 对应的6.5b版本。
本实例使用的是格雷码计数器(Gray)
=============================================================================
首先打开Quatus ii,File->New Project Wizard.操作如下。



之后出现如下界面,单击Next按钮.



出现如下对话框,输入工程位置:G:\GrayCounter,工程名为:GrayCounter,设置顶层文件:GrayCounter,此次试验比较简单,顶层文件和工程名就命名为一样的。之后单击 Next,



有以下对话框:再单击Next。



在对话框中设置FPGA为Cyclone II家族的,EP2C8Q208C8,单击Next.



对话框中都默认,然后单击Next,



有以下对话框,单击Finish。



Quartus中有以下界面:可以看到工程文件为:GrayCounter



之后要新建一个verilog文件,File->New



选择以下:verilog HDL File,单击OK按钮。



在verilog 文件中输入:以下代码:

`timescale 1ps/1ps

module GrayCounter
#(parameter N=5 )
(
input clk,
input rst_n,
output reg [N-1:0] gray
);

reg [N-1:0] cnt;
reg [N-1:0] temp;
integer i;

always @ (posedge clk ,negedge rst_n)
begin
if(!rst_n)
cnt <= 1'b0;
else
cnt <= cnt +1'b1;
end

always @(cnt)
begin
temp[N-1] = cnt[N-1];
for(i=1; i<=N-1;i=i+1)
temp[i-1] = cnt[i-1]^cnt[i];
end

always @ (posedge clk, negedge rst_n)
begin
if(!rst_n)
gray<=1'b0;
else
begin
gray<=temp;

$display("gray=%b",gray);
end

end
endmodule

窗口如下:



然后保存verilog文件:Ctrl+S快捷键:出现以下对话框,文件名为GrayCounter,类型选择Verilog文件类型,单击保存。



保存之后原来的verilog1文件变为: GrayCounter.v文件。



之后编译工程,Processing->Start Compilation,编译工程。


.
编译成功出现如下界面:



接下来设置Modelsim的设置。
Tools->Option.



在General->EDA tool options->Modelsim-Altera,设置 Modelsim-Altera 的安装路径:G:\altera\91\modelsim_ae\win32aloem(选你自己的安装路径)



开始设置testbench的相关设置项。Processing->start test bench template writer,

生成的文件位置在这里:G:\GrayCounter\simulation\modelsim\GrayCounter.vt
GrayCounter.vt是testbench文件,在modelsim6.5中也可以使用.v文件作为testbench文件,都是可行的。
这里顺便说一下:为什么使用Modelsim-altera呢,因为modelsim6.5每次都要写实例化文件,要要自己建立modelsim的工程,相对来说麻烦,而Modelsim-altera每次打开Quartus工程,设置一次就可以使用Modelsim-altera,实例化等基本内容已经写好,省去很多时间。

GrayCounter.vttestbench文件内容如下代码:
这一步是建立一个仿真模板文件,模板文件提供了基本的写法,具体的testbench文件内容还要自己写。
===============================================================

// Copyright (C) 1991-2009 Altera Corporation
// Your use of Altera Corporation's design tools, logic functions
// and other software and tools, and its AMPP partner logic
// functions, and any output files from any of the foregoing
// (including device programming or simulation files), and any
// associated documentation or information are expressly subject
// to the terms and conditions of the Altera Program License
// Subscription Agreement, Altera MegaCore Function License
// Agreement, or other applicable license agreement, including,
// without limitation, that your use is for the sole purpose of
// programming logic devices manufactured by Altera and sold by
// Altera or its authorized distributors. Please refer to the
// applicable agreement for further details.

// *****************************************************************************
// This file contains a Verilog test bench template that is freely editable to
// suit user's needs .Comments are provided in each section to help the user
// fill out necessary details.
// *****************************************************************************
// Generated on "05/29/2012 13:41:48"

// Verilog Test Bench template for design : GrayCounter
//
// Simulation tool : ModelSim-Altera (Verilog)
//

`timescale 1 ps/ 1 ps
module GrayCounter_vlg_tst();
// constants
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires
wire [4:0] gray;

// assign statements (if any)
GrayCounter i1 (
// port map - connection between master ports and signals/registers
.clk(clk),
.gray(gray),
.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
===================================================================================

可以看出文件中提供了模块的写法和实例化调用,做以下修改,以适合我的工程。

修改GrayCounter.vt testbench文件之后,GrayCounter.vt testbench文件内容如下:
===================================================================================
`timescale 1 ps/ 1 ps
module GrayCounter_vlg_tst();
reg clk;
reg rst_n;
wire [4:0] gray;

GrayCounter i1 (
.clk(clk),
.gray(gray),
.rst_n(rst_n)
);

initial
begin
$display("Running testbench");
clk =0;

rst_n = 0;
#5 rst_n = 1;
#500000
$stop;
end

always#1 clk = ~clk;

endmodule

===================================================================================
接下来设置工程

设置GrayCounter工程:
在 工程上右键settings



在EDA tool settings->simulation中设置tool name:modelsim-altera



输出文件格式选择为verilog HDL,NativeLink settings选择Compile testbench。



再单击Test Benches

在这顺便说一句,最好不要勾选Run gate-level simulation automatically after compilation,我的Modelsim破解的不是特别好,因此不勾选这个选项。



再单击Test Benches



单击Test benches按钮之后出现如下对话框:选择New...



设置文件名: GrayCounter_vlg_tst
模块名:GrayCounter
实例名: i1
在File name中单击按钮:
弹出以下对话框:

选择:G:\GrayCounter\simulation\modelsim\GrayCounter.vt,类型选择All files,否则看不到GrayCounter.vt。
单击打开按钮
对话框如下: 单击Add按钮。



对话框变在File name中变为: 设置完成之后Compile test bench文件为:GrayCounter_vlg_tst文件。最后单击OK。
编译工程:



调用RTL仿真:Tools->Run EDA Simulation Tool -> EDA RTL Simulation



在modelsim窗口中有以下:常用的有Transcript:命令输出,包括display等的输出,wave是波形显示窗口,library是文件的列表



标题如下:

对话框下面如下:



打开library标签: 最下面的work目录:有GrayCounter_vlg_tst文件
在文件上右键Simulate without Optimization操作。



软件跳转到:sim页面中
在GrayCounter_vlg_tst文件上右键,Add->To wave -> All items in region。



在wave标签页中有:



然后运行,执行run,

这时候波形看起来不是特清楚,需要调一下放大和缩小。



调节到合适位置波形如下:

可以看一下Transcript标签页中有:display的输出。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: