Project3Logisim完成单周期处理器开发实验报告一.总体设计二.模块定义(1)IFU(2)GPR(3)ALU(4)EXT(5)DM(6)Controller四.控制器设计单周期真值表Func100000100010N/AOp000000000000001101100011000100001111addsuborilwswbeqluiRegDst1100XX0ALUSrc0011101MemtoReg0001XXXRegWrite1111002MemWrite0000100nPC_sel0000010ExtOpXX000X1ALUctrAddSubtractOrAddAddSubtractX五.测试要求16.测试程序lui$t0,0x0004#lui测试程序要实现:立即数0x0004加载至t0寄存器的高位lui$t1,0x0008#lui测试程序要实现:立即数0x0008加载至t1寄存器的高位ori$t3,$zero,0x00002000#ori测试程序要实现:zero寄存器中的内容与立即数0x00002000进行或运算,储存在t3寄存器中sw$t0,4($t3)#sw测试程序要实现:把t0寄存器中值(1Word),存储到t3的值再加上偏移量4,所指向的RAM中sw$t0,8($t3)#sw测试程序要实现:把t0寄存器中值(1Word),存储到t3的值再加上偏移量8,所指向的RAM中loop:add$t2,$t2,$t1#add测试程序要实现:t1寄存器中的值加上t2寄存器中的值后存到t2寄存器中lw$t4,4($t3)#lw测试程序要实现:把t3寄存器的值+4当作地址读取存储器中的值存入t4lui$t5,0x0004#lui测试程序要实现:立即数0x0004加载至t5寄存器的高位sub$t7,$t6,$t5#sub测试程序要实现:t6寄存器中的值减去t5寄存器中的值后存到t7寄存器中add$t0,$t0,$t5#sub测试程序要实现:t0寄存器中的值减去t5寄存器中的值后存到t0寄存器中add$t6,$t6,$t0#add测试程序要实现:t6寄存器中的值加上t0后存到t6寄存器中beq$t0,$t1,loop#beq测试程序要实现:判断t0的值和t1的值是否相等,相等转loopadd$t0,$t0,$t5#add测试程序要实现:t0寄存器中的值加上t5后存到t0寄存器中lui$v0,0x0001#lui测试程序要实现:立即数0x0001加载至v0寄存器的高位lui$v1,0x0002#lui测试程序要实现:立即数0x0002加载至v1寄存器的高位add$v0,$v0,$v1#add测试程序要实现:v0寄存器中的值加上v1后存到v0寄存器中add$v1,$v0,$v1#add测试程序要实现:v0寄存器中的值加上v1后存到v1寄存器中ori$a0,$v0,0xffff#ori测试程序要实现:v0寄存器中的内容与立即数0xffff进行或运算,储存在a0寄存器中sub$a1,$a0,0x0000ffff#sub测试程序要实现:a0寄存器中的值减去立即数0x0000ffff后存到a1寄存器中loop2:sub$a2,$v1,$v0#sub测试程序要实现:v1寄存器中的值减去v0中的值后存到a2寄存器中add$a1,$a2,$a1#add测试程序要实现:a2寄存器中的值加上a1后存到a1寄存器中beq$a1,$v1,loop2#beq测试程序要实现:判断a1的值和v1的值是否相等,相等转loop2机器码:3c0800043c090008340b2000ad680004014950208d6c00043c0d000401cd7822010d402001c870201109fff9010d40203c0200013c03000200431020004318203444ffff3c0100003421ffff008128220062302200c5282010a3fffdMARS模拟结果:Logism:GPR:DM:六、问答18.对于Figure5、Figure6中的与或阵列来说,1个3输入与门最终转化为2个2输入与门,1个4输入与门最终转化为3个2输入与门,依次类推。或阵列也类似计算。那么a)请给出采用Figure5、Figure6中的方法设计的每个控制信号所对应的2输入与门、2输入或门、非门的数量。19.2输入与门2输入或门非门RegDst17110RegWrite32410ALUsrc2035PCsrc505MemWrite502MemRead503MemtoReg503ExtOp1524ALUctr[1]1013ALUctr[0]2129a)请与第17项对比,你更喜欢哪种设计方法。为什么第一种的每个控制信号都需要对其分配单独的与门、或门,因为它是直接对op、func的12位或6位信号的逻辑表达式,所以没有针对性并且浪费元件。而第二种是先把op、func变成相应的指令信号,再由指令信号生成控制信号。当一种指令对应多种控制信号为1时,不必再对每个信号再单独为这个指令分配与门,而可以共用这个指令的信号,再添加或门就可以了。