|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 gn165625076 于 2010-4-24 22:54 编辑
module ex4(a,b,c,d);
input a,b;
output [3:0]c,d;
reg [3:0]c,cc,d,dd;
begin
c=4'b1111;
d=4'b1111;
end
always @(negedge a)
begin
i f (!b) cc=cc+4'b1; //阻塞赋值
c=~cc;
end
always @(negedge a)
begin
if(!b) dd<=dd+4'b1; //非阻塞赋值
d=~dd;
end
endmodule
实验结果信号d落后于信号c(正常的)
module ex4(a,b,c,d);
input a,b;
output [3:0]c,d;
reg [3:0]c,cc,d,dd;
initial
begin
c=4'b1111;
d=4'b1111;
end
always @(negedge a)
begin
if (!b) cc=cc+4'b1;
c<=~cc; //非阻塞赋值
end
always @(negedge a)
begin
if(!b) dd<=dd+4'b1; //非阻塞赋值
d=~dd;
end
endmodule
实验结果信号d仍然落后于信号c
为什么呢?应该是将~cc的上个时钟信号赋给c才对啊
module ex4(a,b,c,d);
input a,b;
output [3:0]c,d;
reg [3:0]c,cc,d,dd;
initial
begin
cc=4'b0;
dd=4'b0;
c=~cc;
d=~dd;
end
always @(negedge a)
begin
if (!b)
begin
cc=cc+4'b1;
c<=~cc;
end
end
always @(negedge a)
begin
if(!b)
begin
dd<=dd+4'b1;
d=~dd;
end
end
endmodule
实验结果为信号d落后于信号c
还是搞不懂 |
|