muwu324 发表于 2010-8-4 22:57:28

为什么一模一样的程序在quartus和modelsim中仿真不同,呵呵。

为什么一模一样的程序在quartus和modelsim中仿真不同,呵呵。

程序:
module state_ctrl(clk,en,reset,en1,en2,wen,ren,adder);

input clk,en,reset;
output en1;
output en2;
output wen;
output ren;

output adder;
reg state;
reg adder;

always @(posedge clk or negedge reset)

begin
if(!reset)
    adder<=0;
else if(!en)
       begin if(adder==60000)
         adder<=0;
       else
         adder<=adder+1;
       end
elseadder<=0;
end
assign {en1,en2,wen,ren}=state;

always @(adder)
begin
   case(adder)
32'd0:state<=4'b1111;
32'd2:state<=4'b1001;
32'd3:state<=4'b1010;
32'd45:state<=4'b0111;
default:state<=state;
endcase
end
endmodule
-----------------------------------
测试文件:

module tb_state_ctrl;
reg clk,en,reset;
wire en1;
wire en2;
wire wen;
wire ren;

wire adder;

state_ctrl state_ctrl(.clk(clk),.en(en),.reset(reset),.en1(en1),.en2(en2),.wen(wen),.ren(ren),.adder(adder));

initial
begin
clk=0;
forever #50 clk=!clk;
end
initial
begin
reset=0;
en=0;
#100 reset=1;
end
endmodule

过去的过去 发表于 2010-8-5 08:20:01

恩,好好向这里学习知识的

过去的过去 发表于 2010-8-5 08:20:54

我其实还不会仿真的

芙蓉帐暖 发表于 2010-8-5 15:33:05

我觉得主要是仿真软件本身的延时问题把,结果还是一样的。你注意一下en1,en2,wen..

hng1123 发表于 2011-4-5 09:06:11

多谢各位了,我来学习一下啊

hys601406441 发表于 2011-8-23 18:51:21

:D 学习学习

liujilei311 发表于 2011-8-24 07:51:15

感觉很奇妙,呵呵,学习一下!!!!!!!

wushimin6 发表于 2011-8-24 10:39:34

一本学习FPGA不错的书

wushimin6 发表于 2011-8-24 10:52:00

你在quartus里仿真用的是创建波形的模式吧,但是在modelsim里是通过写testbench来做的仿真,出现这种错误的原因很可能是你创建波形给的激励和你写tesetbench给的激励不一样。

snowinmoon 发表于 2011-8-24 13:11:50

同意楼上的说法,虽然我也是刚学Verilog
页: [1] 2
查看完整版本: 为什么一模一样的程序在quartus和modelsim中仿真不同,呵呵。