0

我正在构建一个流水线处理器,似乎顺序逻辑在我的 PC 中创建了 1 个周期的延迟,从 PCFetch 中的值更新。我的verilog代码如下

always@(posedge clk)
begin
   if(rst)
     PC <= 0;
   else
    PC <= PCFetch;
end

PCFetch 是另一个实例化模块的输出。因此假设时钟周期 X,PCfetch 更新为 0002。但是,PC 的更新仅发生在时钟周期 x+1。我听说这是由于顺序逻辑引起的传播延迟。有什么办法可以解决。

4

1 回答 1

0

在时序逻辑中,您总是会有传播延迟。顺序逻辑是指在两个触发器之间传播的逻辑。信号传播的最快速度是两个触发器之间的 1 个时钟周期。

如果您不想使用顺序逻辑,则可以使用组合(组合)逻辑。对于上面的示例,它看起来像这样:

assign PC = PCFetch;

这不会一直处于阻塞状态。

于 2013-11-14T12:48:24.040 回答