Testbench中使用while的问题
时间:10-02
整理:3721RD
点击:
使用以下语句:
reg rx_rdy;
wire rx_rdy1= memory read回来的值;
rx_rdy = 0;
while(rx_rdy != 1)
begin
memory_read8( ADDR, 1);
rx_rdy = rx_rdy1;
end
意思是读取ADDR地址的值,取其中一位,赋给rx_rdy。当rx_rdy =1 时,就跳出循环,其它时间则不停的读取该地址的值。
但在实际仿真时, rx_rdy = rx_rdy1;这条语句没有正确执行。
若写成 @(posedge CLK) rx_rdy = rx_rdy1; 则完全没有问题。我没有完全想明白。
reg rx_rdy;
wire rx_rdy1= memory read回来的值;
rx_rdy = 0;
while(rx_rdy != 1)
begin
memory_read8( ADDR, 1);
rx_rdy = rx_rdy1;
end
意思是读取ADDR地址的值,取其中一位,赋给rx_rdy。当rx_rdy =1 时,就跳出循环,其它时间则不停的读取该地址的值。
但在实际仿真时, rx_rdy = rx_rdy1;这条语句没有正确执行。
若写成 @(posedge CLK) rx_rdy = rx_rdy1; 则完全没有问题。我没有完全想明白。
不加@(posedge CLK) ,while语句在memory_read后立即执行rx_rdy = rx_rdy1,又立即回到while条件的判断,没有任何时间延时。你的没有执行是什么意思呢?
学习。学习
2楼说的应该是关键所在。
貌似2楼正解~
谢谢回复,从语句上的确可以这么理解,但从波形上看就像该语句没有执行一样
Wire ready1 n那句只是初始化赋值一次 后面不会改变
