module pinlvji(clk,datain,reset,enclk,outdata);
input clk,datain,reset,enclk;
output [9:0]outdata;
reg [9:0]outdata;
reg [9:0]tep;
always @(posedge datain or posedge reset)
begin
if(reset)
tep<=0;
else if(enclk)
begin
tep<=tep+1;
end
else if(!enclk)
tep<=0;
end
always @(negedge enclk or posedge reset)
begin
if(reset)
outdata<=0;
else
outdata<=tep;
end
endmodule
可以看到第一个always中有这么一句
if(!enclk)
tep<=0;
而第二个always中
always @(negedge enclk or posedge reset)
用enclk做了下降沿,并且把tep的值赋给了outdata,那么tep<=0,先执行,还是outdata<=tep现执行呢?这两个差别太大了,求高手指点,我现在对两个always中的数据谁先谁后执行快崩溃了,各位帮帮忙吧,谢谢啦!
不知道怎么回事,仿真的结果是正确的。那么对于我这个问题该怎么改正呢?
追答你说仿真是正确的,一定是你仿真的test case不全面,只仿到了其中的一种情况,覆盖率太低。简单地说,就是你碰巧把你想像的情况仿出来了,而实际上电路的输入信号是随机的。建议你先把设计改成只有一个时钟再说吧。