资源描述:
《单周期cpu设计文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、CPU设计文档一、模块规格1.IFU模块接口信号名方向描述IfBeqI当前指令是否为beq指令的标志1:当前指令是beq指令0:当前指令不是beq指令ZeroIALU计算结果为0的标志1:计算结果是00:计算结果不是0ClkI时钟信号ResetI复位信号1:复位0:无效Instr[31:0]O32位MIPS指令功能定义序号功能描述1复位当复位信号有效时,PC被设置为0x000000002取指令根据PC从IM中取出指令3计算下一条指如果当前的指令不是beq指令,PC=PC+4如果当前指令令的地址是beq指令,且Zero=1则PC=P
2、C+4+offset2.GPR模块接口信号名方向描述RegData[31:0]I32位写入数据RegWriteI写入控制信号ClkI时钟信号ResetI复位信号1:复位0:无效A1[4:0]I读寄存器地址1A2[4:0]I读寄存器地址2RegAddr[4:0]I写寄存器地址Rd1[31:0]O32位输出数据1Rd2[31:0]O32位输出数据2功能定义序号功能描述1复位当复位信号有效时,所有寄存器被设置为0x000000002读寄存器根据输入的寄存器地址读出数据3写寄存器根据输入的地址,把输入的数据写进选中的寄存器3.ALU模块接
3、口信号名方向描述A[31:0]I32位输入数据1B[31:0]I32位输入数据2F[2:0]I控制信号000:加001:减010:或运算11:比较大小C[31:0]O32位数据输出功能定义序号功能描述1加C=A+B2减C=A-B3或C=A
4、B4比较大小If(A
5、6位补05.DM模块接口信号名方向描述MemData[31:0]I32位写入数据MemWriteI写入控制信号1:写操作MemtoregI读出控制信号1:读操作MemAddrI5位写入地址ClkI时钟信号ResetI复位信号1:复位0:无效Out[31:0]O32位数据输出功能定义序号功能描述1复位当复位信号有效时,所有数据被设置为0x000000002读根据输入的寄存器地址读出数据3写根据输入的地址,把输入的数据写入6.Controller模块接口信号名方向描述opcode[5:0]I六位输入func[5:0]I六位输入Regd
6、stO写地址控制1:写寄存器的目标寄存器来自rd字段(位于15:11)0:写寄存器的目标寄存器来自rt字段(位于20:16)AlusrcOALU第二操作数选择控制1:第二个ALU操作数为指令低16位的符号拓展0:第二个ALU操作数来自寄存器堆的第二个输出(读数据2)MemtoregODM读控制1:写入寄存器的数据来自数据存储器0:写入寄存器的数据来自ALURegWriteOGRF写入控制信号1:寄存器堆写使能有效0:无MemWriteODM写入控制信号1:数据存储器写使能有效0:无nPC_selOBeq指令标志1:指令为beq0:
7、指令不是beqExtopO控制ext拓展方式00:无符号扩展01:高16位补010:低16位补0Aluop[2:0]O控制cpu进行相应的运算000:加001:减010:或011:大小比较二、控制器设计Func[5:0]100001100011000000Opcode[5:0]000000000000001101100011101011000100001111000000addusubuorilwswbeqluinopRegDst1100XX0XRegWrite1111001XALUsrc0011101XMemtoReg0001X
8、XXXMemWrite0000100XnPC_sel0000010XExtop[1:0]XXXX000101XX10XXAluop[1:0]000001010XXXXXXXXXXXXXXX三、测试CPU测试程序:lui$t1,0xfbeq$zero,$t1,labe1ori$t1,$t1,0xabgez$t1,labe1labe1:addu$t4,$t1,$t1bne$t1,$t1,labe2subu$t2,$t4,$t1nopnopnopsw$t2,8($zero)lw$t3,8($zero)sw$t4,4($zero)andi
9、$t5,$t2,0xfsw$t5,16($zero)labe2:测试期望:$9存入0x000f_000a$10存入0x000f_000a$11存入0x000f_000a$12存入0x001e_0014$13存入0x0000_000a地址0x0000