|
|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 matlinsas 于 2012-4-14 15:06 编辑
在CPU设计中,寄存器模块通常都是用的时序器件,这样的话不是相当于在流水线中间插入了一级吗?
如图所示,图中的Regfile就是是时序器件。
补充说明一下:
举个MIPS五级流水线的例子,IF,ID,EX,MEM,WB
时钟1上升沿时,在ID级输出访问的寄存器地址,但是由于寄存器模块是时序的(我的理解是:时钟上升沿输出,如下面代码所示),到时钟2的上升沿,才会输出结果;
而ID/EX寄存器又是时序的;
这样的话。ID级访问寄存器,访问结果不是需要两个时钟才能输出到EX段吗?
而且看到好多代码中都是这样写的(OR1200 、ucore )。。求指导。谢谢。。
always @(posedge clk_i or posedge rst_i)
begin
if(rst_i)
begin:INITIAL_SECTION
integer i;
for(i=0;i<32;i=i+1) mem <= 32'b0;
end
else begin
douta <= ena?mem[porta]:32'b0;
doutb <= enb?mem[portb]:32'b0;
if (enc && portc != 0)
begin
mem[portc] <= dinc;
end
end
end
谢谢。。 |
|