我正在建立一个流水线处理器,似乎顺序逻辑在我的PC中创建一个1周期的延迟,从PCFetch中的值更新。我的verilog代码如下
always@(posedge clk)
begin
if(rst)
PC <= 0;
else
PC <= PCFetch;
end
PCFetch是另一个实例化模块的输出。因此,假设时钟周期X,PCfetch更新为0002.然而,PC的更新仅在时钟周期x + 1发生。我听说这是由于顺序逻辑导致的传播延迟。有没有办法解决它。
答案 0 :(得分:0)
您总是会在顺序逻辑中出现传播延迟。顺序逻辑意味着在两个触发器之间传播的逻辑。信号传播的最快时间是两个触发器之间的1个时钟周期。
如果您不想使用顺序逻辑,则可以使用组合(组合)逻辑。对于上面的例子,它看起来像这样:
assign PC = PCFetch;
这不会一直存在。