我具有低于输出不更新,直到下一个时钟周期
always @(posedge Clk) begin
ForwardA = 0;
ForwardB = 0;
//EX Hazard
if (EXMEMRegWrite == 1) begin
if (EXMEMrd != 0)
if (EXMEMrd == IDEXrs)
ForwardA = 2'b10;
if (EXMEMrd == IDEXrt && IDEXTest == 0)
ForwardB = 2'b10;
end
//MEM Hazard
if (MEMWBRegWrite == 1) begin
if (MEMWBrd != 0) begin
if (!(EXMEMRegWrite == 1 && EXMEMrd != 0 && (EXMEMrd == IDEXrs)))
if (MEMWBrd == IDEXrs)
ForwardA = 2'b01;
if (IDEXTest == 0) begin
if (!(EXMEMRegWrite == 1 && EXMEMrd != 0 && (EXMEMrd == IDEXrt)))
if (MEMWBrd == IDEXrt)
ForwardB = 2'b01;
end
end
end
end
代码模块的问题是输出,该输出是ForwardA和ForwardB没有不更新在上升时钟沿,而不是下一个上升时钟边缘...这是为什么?我该如何解决,以便输出在相同的正上升时钟边沿上更新?
这里就是我的意思是: alt text http://img693.imageshack.us/img693/8660/timing.jpg
ForwardA与2在下一个时钟上升沿,而不是在同一个时钟上升沿
对不起很挑剔,但是你的意思是“不是在不是上升的时钟沿而是在下一个上升的时钟沿上更新”?你想删除其中一个不是? (我应该是更重要的事情,但它是我的决赛周,我真的不应该现在在StackOverflow,lol) – 2010-05-05 01:48:48
如果你看图片,并看看ForwardA信号... 2更新在下一个上升时钟边缘...我希望它在黄色线的上升时钟边缘更新,因为在黄色线EXMEMrd == IDEXrs ...我希望这是有道理的 – aherlambang 2010-05-05 03:09:18