quartusii调用modelsim仿真出现问题
时间:10-02
整理:3721RD
点击:
初学FPGA,可能问题比价弱智,望指教
ex05中包含count和decoder
==========================
ex05中的代码:
module ex05(clk,rst,y);
input clk,rst;
output[4:0] y;
wire[2:0] i;
count ct1
(
.clk(clk),
.rst(rst),
.q(i)
);
decoder dr1
(
.i(i),
.y(y)
);
endmodule
==========================
count中的代码:
module count(clk,rst,q);
input clk,rst;
output[2:0] q;
reg[2:0] q;
always@(posedge clk or negedge rst)
if(rst == 0)
q<=3'b000;
else if(q<3'b100)
q<=q+3'b001;
else
q<=3'b000;
endmodule
==========================
decoder中的代码:
module decoder(i,y);
input[2:0] i;
output[4:0] y;
reg[4:0] y;
always@(i) //如果这里改为always,当调用modelsim做仿真的时候就出不了波形,好像会卡住一样
egin
case(i)
3'b000:y[4:0]=5'b00001;
3'b001:y[4:0]=5'b00010;
3'b010:y[4:0]=5'b00100;
3'b011:y[4:0]=5'b01000;
3'b100:y[4:0]=5'b10000;
default:y[4:0]=5'b00001;
endcase
end
endmodule
===========================
testbench里面就是一个rst还有clk,没别的,问题就处在decoder的always那里,似乎必须要给出条件,不知为何
ex05中包含count和decoder
==========================
ex05中的代码:
module ex05(clk,rst,y);
input clk,rst;
output[4:0] y;
wire[2:0] i;
count ct1
(
.clk(clk),
.rst(rst),
.q(i)
);
decoder dr1
(
.i(i),
.y(y)
);
endmodule
==========================
count中的代码:
module count(clk,rst,q);
input clk,rst;
output[2:0] q;
reg[2:0] q;
always@(posedge clk or negedge rst)
if(rst == 0)
q<=3'b000;
else if(q<3'b100)
q<=q+3'b001;
else
q<=3'b000;
endmodule
==========================
decoder中的代码:
module decoder(i,y);
input[2:0] i;
output[4:0] y;
reg[4:0] y;
always@(i) //如果这里改为always,当调用modelsim做仿真的时候就出不了波形,好像会卡住一样
egin
case(i)
3'b000:y[4:0]=5'b00001;
3'b001:y[4:0]=5'b00010;
3'b010:y[4:0]=5'b00100;
3'b011:y[4:0]=5'b01000;
3'b100:y[4:0]=5'b10000;
default:y[4:0]=5'b00001;
endcase
end
endmodule
===========================
testbench里面就是一个rst还有clk,没别的,问题就处在decoder的always那里,似乎必须要给出条件,不知为何
没人回答嘛,自己顶起来
我也是个新人,也没有人回答我的问题
对你的问题我说下我的看法吧
你是希望直接用下面的形式来执行吗?
always
begin
case(i)
3'b000:y[4:0]=5'b00001;
3'b001:y[4:0]=5'b00010;
3'b010:y[4:0]=5'b00100;
3'b011:y[4:0]=5'b01000;
3'b100:y[4:0]=5'b10000;
default:y[4:0]=5'b00001;
endcase
end
我没有试过always后面不加条件的用法,但是我觉得一直always就相当于电脑要不停的做下面的判断,然后估计资源就不够用了吧-
像一般用always都是有 always@(*) 或者 always #5 之类的,总之可以保证是有一定的时间间隔才刷新
加了@(*)是没问题的,这个我试过,至于加一个延时是否有效果,明天我去试一下看看,但是系统资源不够用应该不会,这种语句也是因为在书本上出现,所以才会写上去的,如果编者连这个都没有考虑到,未免太失专业
原来可以这样用啊- -! 看来我还要再好好修炼修炼了。 你方便的话可不可以把那个例子搬过来啊,我想学一下
书我看得是《基于Quartus II的数字系统Verilog HDL设计实例详解》,网上可以下到PDF,不过据说这本书不怎么样,我只是随便看看
OK~
我也是刚学的,不太懂
