Reg不在同步始终块中递增

时间:2014-04-27 00:46:10

标签: verilog

我在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

这里出了什么问题?

1 个答案:

答案 0 :(得分:1)

在第一个代码中,i_Count仅在时钟具有上升沿时递增,而i_Valid在时钟从0转换为1(i_clk的上升沿)时为1。 ,当时钟转换时,i_Valid不为真(1)。

在第二个代码中,当i_Valid没有阻塞i_Count时,它会递增每个时钟信号