一个verilog里在case中赋值的问题, 求大家帮帮助, 如下例, 谢谢先.
moduletry(S,pbit);inputS;outputregpbit;parameterzero=1'b0;parameterone=1'b1;always@(*...
module try (S, pbit);
input S;
output reg pbit;
parameter zero = 1'b0;
parameter one = 1'b1;
always @ (*)
begin
case(S)
0: pbit = zero;
1: pbit = zero;
2: pbit = one;
3: pbit = one;
endcase
end
endmodule
下面是我的testbench:
`timescale 1ns/100ps
module testbench ();
reg S;
wire pbit;
try DUT (
.S(S),
.pbit(pbit)
);
initial begin
S = 0;
#10
S = 1;
#10
S = 2;
#10
S = 3;
end
结果仿真出来, pbit永远不会跟据S的改变而变化. 实是不知道怎么办了. 求大神帮帮我. 谢谢 展开
input S;
output reg pbit;
parameter zero = 1'b0;
parameter one = 1'b1;
always @ (*)
begin
case(S)
0: pbit = zero;
1: pbit = zero;
2: pbit = one;
3: pbit = one;
endcase
end
endmodule
下面是我的testbench:
`timescale 1ns/100ps
module testbench ();
reg S;
wire pbit;
try DUT (
.S(S),
.pbit(pbit)
);
initial begin
S = 0;
#10
S = 1;
#10
S = 2;
#10
S = 3;
end
结果仿真出来, pbit永远不会跟据S的改变而变化. 实是不知道怎么办了. 求大神帮帮我. 谢谢 展开
展开全部
当然不会变化,你的S信号位宽是1bit,它永远不可能等于2或者3,所以不可能变化,位宽加大
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把阻塞赋值都改为非阻塞赋值试一试,还有就是不要这样把try和testbench分开写,直接把它们写在一起,也就是一个module和endmodule之间,而且是一个.V文件,试一试
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然不会变化,你的S信号位宽是1bit,它永远不可能等于2或者3,所以不可能变化,位宽加大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询