Modelsim独立仿真最新教程独立仿真最新教程
说起来,玩FPGA也有个把年头了,但每次都是在quartus II里调用modelsim进行仿真的,为图个省事,一直都
在忍受它带来的无比巨慢的编译连接速度。如今,实在是忍受不了,便狠了狠心,学习了一下modelsim独立仿
真,突然发现也是很简单很随意啊,而且那速度杠杠的。
纵观了网上大大小小的教程和一些文本书籍,发现都是千遍一律的,可问题是modelsim的版本太新了,按照那些教程照部就
搬就是死活不出波形。那些教程给的版本是modelsim-6.x的,而我的却是modelsim-10.x的,幸好在某网友博客里看到,可以
看看modelsim自带的help文档,于是我就拜读了一下全英文的文档,然后完美的出现仿真波形了。果然,还是自带的英文原
版文档可靠,大家都可以去阅读一番。Modelsim自带文档里给了好几种仿真的方法,下面我只介绍最简单直接的方法。
一.GUI界面的仿真步骤
1.首先把你需要仿真的设计文本和仿真文本全部放在同一个文件夹下面,注意,文件夹路径不能包含中文。
我的设计文件:counter.v
// Copyright 1991-2013 Mentor Graphics Corporation
//
// All Rights Reserved.
//
// THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF
// MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
//
`timescale 1ns / 1ns
module counter (count, clk, reset);
output [7:0] count;
input clk, reset;
reg [7:0] count;
parameter tpd_reset_to_count = 3;
parameter tpd_clk_to_count = 2;
function [7:0] increment;
input [7:0] val;
reg [3:0] i;
reg carry;
begin
increment = val;
carry = 1'b1;
/*
* Exit this loop when carry == zero, OR all bits processed
*/
for (i = 4'b0; ((carry == 4'b1) && (i <= 7)); i = i+ 4'b1)
begin
increment[i] = val[i] ^ carry;
carry = val[i] & carry;
end
end
endfunction
always @ (posedge clk or posedge reset)
if (reset)
count = #tpd_reset_to_count 8'h00;
else
count <= #tpd_clk_to_count increment(count);
/*****************************************************************
Use the following block to make the design synthesizable.
always @ (posedge clk or posedge reset)
if (reset)
count = 8'h00;
else
count <= count + 8'h01;
******************************************************************/
endmodule
我的仿真文件:tcounter.v
//
// Copyright 1991-2013 Mentor Graphics Corporation
//
// All Rights Reserved.
//
// THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF
评论5