我在i_Count
发出信号
i_Valid
always @(posedge i_clk)
begin
if(i_Valid)
i_Count <= i_Count+1; //Increments to 1 then stops
end
但是,我的i_Count
仅计为1,然后对于所有i_Valid
信号,它将保持为1。
我检查了i_Valid
波形并且工作正常,我还尝试将增量语句放在if-block的之外,它也能正常工作。
always @(posedge i_clk)
begin
i_Count <= i_Count+1; //Works fine
end
这里出了什么问题?
答案 0 :(得分:1)
在第一个代码中,i_Count
仅在时钟具有上升沿时递增,而i_Valid
在时钟从0转换为1(i_clk
的上升沿)时为1。 ,当时钟转换时,i_Valid
不为真(1)。
在第二个代码中,当i_Valid
没有阻塞i_Count
时,它会递增每个时钟信号