(1)取指阶段
lPC模块:给出指令地址,其中实现指令指针寄存器PC,该寄存器的值就是指令地址。对应pc_reg.v文件
lIF/ID模块:实现取指与译码阶段之间的寄存器,将取指阶段的结果(取得的指令、指令地址等信息)在下一个时钟传递到译码阶段。对应if_id.v文件
(2)译码阶段
lID模块:对指令进行译码,译码结果包括运算类型、运算操操作数、要写的目的寄存器信息等。对应id.v文件。
lRegfile模块:实现了32个32位通用整数寄存器,可以同时进行两个寄存器的读操作和一个寄存器的写操作。对应regfile.v文件。
lID/EX模块:实现译码与执行阶段之间的寄存器,将译码阶段的结果在下一个时钟周期传递到执行阶段。对应id_ex.v文件。
(3)执行阶段
lEX模块:依据译码阶段的结果,进行指定的运算,给出运算结果。对应ex.v文件。
lDIV模块:进行除法运算的模块。对应div.v文件。
lEX/MEM模块:实现执行与访存阶段之间的寄存器,将执行阶段的结果在下一个时钟周期传递到访存阶段。对应ex_mem.v文件。
(4)访存阶段
lMEM模块:如果是加载、存储指令,那么会对数据存储器进行访问,还在该模块进行异常判断。对应mem.v文件。
lMEM/WB模块:实现访存与回写阶段之间的寄存器,将访存阶段的结果在下一个时钟周期传递到回写阶段。对应mem_wb.v文件。
(5)回写阶段
lCP0模块:对应MIPS架构中的协处理器CP0。
lLLbit模块:实现寄存器LLbit,在指令ll、sc的处理过程中会使用到该寄存器。
lHILO模块:实现寄存器HI、LO,在乘法、除法指令的处理过程中会使用这两个寄存器。
另外,还有一个CTRL模块,这个模块是用来控制整个流水线的(比如:流水线暂停、流水线清除等),所以不便于将其归入流水线其中一个阶段,在上图的上部单独画出。