计算机组成原理报告.pdf
计算机组成原理课程设计报告成绩评价表报告内容报告结构报告最终成绩丰富正确基本正确口有一些问题问鹿很大完全符合要求基本符合要求口有比较多的缺陷完全不符合要求报告与Project功能一致性报告图表总体评价完全一致口基本一致口基本不一致口符合规范基本符合规范有一些错误完全不正确教师签字:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _目录Project1_Logisim完成单周期处理器开发一数据通路设计图.5二.模块描述.61.IFU.62.Controller.83.GPR.104.ALU.125.exter.136.RAM.147.MUX.14三:指令描述.15四.测试程序.16十六进制格式.16MIPS 指令:.16五:测试结果.17六.问答.18七.感想.19Project2_VerilogHDL完成单周期处理器开发一 总 体 设 计.201.设计图示.202.模块定义.20二.支持指令.21三.模块定义.211.PC.212.NPC.223.ALU.234.DM_4K.245.extender.246.GPR.257.IM.268.MUX.279.shifter.2710.CRTL.2811.MIPS.29四.问答.30五:指令描述:.31六.测试结果.32七.测试代码.32MIPS 指令.33八.总结.35Project3+VerilogHDL开发多周期处理器-MIPS-Lite2指令集一.总体设计.361.设计图示.362.模块定义.37二.支持指令.37三.模块定义.371.PC.372.NPC.383.ALU.394.DM_4K.405.extender.416.GPR.427.IM.438.MUX.449.shifter.4410.CRTL.4511.datapath.4712.数据通路中的寄存器.48四.问答.49五:指令描述:.49六.测试结果.50七.测试代码.51MIPS 指令.51八.总结.54Project1_Logisim完成单周期处理器开发一.数据通路设计图mainIFUGPRall-ALUALU-32ALU-16ALU-8ALU-4ALU-2ALU-1C ontrolex te r二.模块描述1.IFU模块描述Pc为 30-bits数据时:通过pc的值从ROM中取出指令output接口在普通情况下:pc(t+1)6pc+1Beq:pc(t+1)-pc(t)+1+sig n_extend(i mm 16)J 指令:pc(t+1)Q pc(t)+1 31:28,ins(t)25:0输入信号时钟信号:elkPc重置信号:PEset-PCBeq 信号:npc_sel,zeroJ 指令信号:jBeq跳转地址:imm16输出数据数据端口:C功能定义此 处p c为 30bits位宽数据序号功能名称功能描述1复位Reset-PC为高使能P c复位清02取指令根据pc从 IM 中取指令3计算下一条指令地址下一条指令不是跳转指令.pcWpc+1一若是 beq:若 zero=1跳转 Beq:pc(t+1)RsGPRRT-Rt4.ALU模块描述主要的计算模块,进行逻辑运算和算术运算通过zero输出端口判断输入A 与输入B 是否相等ALUCtrC00A+B01A-B10A|B11B输入A:数据通路AB:数据通路BAlU-select:选择 ALU 模式输出C:输出数据通路CZero=(A=B)?1:0;模块使用迭代概念构建的加法器模块功能定义序号功能名称功能描述1加法运算A+B-C即A与B相加的值赋给C(并支持溢出判断)2减法运算A-B9C.A与B相减的值赋给C3按位或运算A|Bf C.A与B按位或运算,值赋给C4输出BB-C.把B的值直接赋值给C5.exter模块描述使用Extop和 lui控制信号来控制立即数的拓展类型是0 拓展,符号拓展,高位移位输入:imm16:16-bits 立即数Extop:imm32=(Extop)?sign-extend(imm16):0-extend(imm16)Lui:imm32=(lui)?普通数据:imm16,0 x0000输出:Imm32:拓展或移位过的数据功能定义:序号功能名称功能描述1零拓展对16位立即数零拓展为32位数据2符号拓展对16位立即数符号拓展为32位数据3移位imm16作为高十六位,低十六位补零6.RAM内置器件模块描述储存寄存器的值,或者把储存的值送到寄存器输入:A:地址DI:输入数据C k时钟信号RAM-write:RAM 写入信号MemToReg:输出信号输出:DO:输 出RAM中储存的数据功能定义:序号功能名称功能描述1内存写入If RAM-write=1Then:DI-DMA2内存输出If MemToReg=1Then:DMA-DO7.MUXQ 选 1)模块描述通过控制信号,进行二选一位置:Output=(choose)?Bus1:BusO端口定义数据端口名称流向功能描述BusiInput数据通路1Bus2Input数据通路2ChooseInput数据通信选择oBusOutput输出结果功能定义:序号功能名称功能描述1选择数据If Choose=1Then oBus=BusiElseoBus=Bus2三:指令描述Addu无符号加法不支持溢出Subu无符号减法Ori立即数或Lw从内存中取出32bits的数据到寄存器中,取出数据位置由下式决定RamGPRrs+sign_extend(offset)-GPRrtSw将寄存器中32bits的数据存储到内存中去,存储位置由下式决定RamGPRrs+sign_extend(offset)-GPRrtBeqGPRrs=GPRrt时跳转跳转地址由sign_extend(imm16)决定GPRrs!=GPRrt时:顺序执行Lui移位指令.GPRRt=imm16,0 x0000j无条件跳转跳转内容:Npc=(pc+4)31:28,instr_index,2b00.测试程序十六进制格式34030093340600ae0066402100664823012a0021ac0900108c0a0010112a00023c0bcdcd08000c0d340befef3c09456708000c07MIPS指令:o ri$3,$0,0 x93#$3 赋值为 0 x93o ri$6,$0,0 xae#$6 赚值为 0 xaeaddu$8,$3,$6#$8=$3+$6subu$9,$3,$6addu$039,$10sw$9,16($。)Iw$10,16($。)#$9=$3-$6#$0=0(。号寄存器为常数0)#mem(sign-extend(16)-$9#mem(sign-extend(16)-$10五:测试结果GPR:Mars仿真Nam eNumber202122F24=262728阴30.31oiodoodwobacxio60dd(ipxoppoooqo8xOb6oOQ93OzjjijXCjOxjj.jjjj0 x000000“0 x00丽筋-bxoooooodoOxCOCCO-COoxoooodoobbxododbbdoOxCOOXlOWbxbdoodoociOxCQSOW。O r r K X d0 x00000000liiooooooooo n o s o s o-OxCOWOWO0 x000000000 x000000000 x000000000式0,0。二。0 x00000000OxGO&jOOM0 x10068000Ox7ffffc0 x00000000oiodioooia0 x00000000O xO O O O O O G O六.问答I.请充分利用错误!未找到引用源。中的X 可以将控制信号化简为最简单的表达式。RegDst=o5o4o3o2oloO f5 f4 f3 f2 fOALUSrc=o5 o4 o3 o2 ol o0+o5 o4 o2 ol oOMcmtoReg=o5 o4 o3 o2 ol oORegWrite=o5-o4-o3o2-olo0 f5 f4 f3 f2 ft)+o5 o4 o3 o2 ol o0+o5 o4 o3-o2 ol oOnPC_sel=-o5 o4 o3 o2 o 1 o0ExtOp|0=o5 o4 o2 ol oOExtOpl=-op5 op4 op3 op2 opl opOMemWrite=op5 op4 op3 op2 op 1 opO2.对于错误!未找到引用源。、错误!未找到引用源。中的与或阵列来说,1个 3 输入与门最终转化为2 个 2 输入与门,1个 4 输入与门最终转化为3 个 2 输入与门,依次类推。或阵列也类似计算。那么a)请给出采用错误!未找到引用源。、错误!未找到引用源。中的方法设计的每个控制信号所对应的2 输入与门、2 输入或门、非门的数量。RegDst=22,l,19ALUsrc=20,3,5MemloReg=5,0,3RegWrite=32,4,10MemWrite=5,0,2nPC_sel=5,0,5ExtOp=l 0,1,5ALUctr 11=6,0,6ALUctr0=10,l,10b)第二种.通过先细分指令类型然后再判断指令内容可以尽量简化电路设计,减少工作量和出错几率.七.感想1.设计时,自顶向下是很好的设计方法,一般能避免整体架构不美观2.执行时,出现问题:“GPR中没有值”.应该点击 View GPR1)0000000-00000000000000000000000:00000000*00000000;-(ALUCtt|Show AttributesView GPRALUsrc0000000000000000|RAM-wfiteyxxxxxxxxxxxxxx这样自动测试和手动调试都能执行成功3.在构建模块后,应充分测试模块的功能.这样在总体结果出错时,不用去考虑模块自身问题,而去考虑模块间配合问题,即尽量降低模块间耦合度.Project2_VerilogHDL完成单周期处理器开发一.总体设计1.设计图示1 P3)-阴 2.模块定义code.txt-H control一R ctrl.v-H datapathR alu.vX|dm.v与 extender.vR GPR.vX|im.v*mux.v足 npc.v*pc.v shifter.vhead-mips.vmips.vp2-test.txttest bench.vText-Folder“Verilog 3Folder,Verilog 4,Venlog 5,Verilog 6彳 Verilog 7,Verilog 8:Verilog 9,Verilog 10,Verilog 11,Verilog 12,Verilog 0,Verilog 1Text 彳 Verilog 2二.支持指令a)MIPS-Litel=MIPS-Lite,addi,addiu,sit,jal,jrob)MIPS-Lite 指 令 集:addu,subu,ori,Iw,sw,beq,lui,joc)addi应 支 持 溢 出。三.模块定义1.PC基本描述PC输出当前指令地址,并计算下一条指令的地址.复位后,PC的值为0 x0000_3000.指向第一条指令的地址信号接口接口名流向描述ClkI时钟信号RstI复位清零信号NPCI计算后的PC值PC0输出的PC值功能定义序号功能名称功能描述1复位复位信号有效时,PC复位为0 x0000_30002存储NPC并输出储 存 NPC的值并输出2.NPC基本描述计算下一条指令的地址信号接口端口名称流向描述PC 31:2I上一条指令的地址Imm 25:0I用于j 型指令的跳转AFR 31:0I寄存器存储的地址ZeroI寄存器两数据通路相等使能信号Npc_op1:0I控制NPC输出信号Npc31:20输出地址Pc+431:00输出PC+4功能定义序号功能名称功能描述1普通寻址NPCGPC+12Beq指令跳转(BEQ&zero)=1 时NPC pc+131:28,sign_extend(imm15:0)3j 指令跳转NPCPC31:28,imm4J r指令跳转NPC AFR31:25Jal指令跳转NPC-PC31:28,immPc+4 G PC2bOO+43.ALU基本描述主要的算术和逻辑运算器件信号接口端口名称流向描述A31:0I输入数据1B31:0I输入数据2ALU_op1:0I选择计算模式AddLselIAddi指令来临信号Zero0If A=B:zero=1Else zero=0Overflow0Addi结果溢出使能Result(31:00计算结果功能定义序号功能名称功能描述1无符号加法进行无符号的加法运算,不考虑溢出2无符号加法进行无符号的减法,不考虑溢出If A=B:zero=1Else:zero=03或运算A 与 B 按位或4A 与 B 比较If ADMaddr2输出DMaddr Dout5.extender基本描述将 16位立即数扩展位32位信号接口信号名流向描述lmm15:0I输入的16bits立即数Ext_opI选择扩展类型Ext31:00扩展后的数据功能定义序号功能定义功能描述10 拓展if Ext_op=0:ExtS16b0,imm2符号拓展If Ext_op=1:Ext-16imm15,imm6.GPR基本描述寄存器堆,CPU中心器件信号接口信号名称流向描述R14:0IRD1选择输出信号R24:0IRD2选择输出信号WR4:0I写入选择信号WD31:0I写入寄存器信号WEI写使能elkI时钟信号RD131:00寄存器R1数据输出RD231:00寄存器R2数据输出功能定义序号功能定义功能描述1写入数据向寄存器输入数据WDGPRWR2输出数据把寄存器数据输出GPRR1RD1GPRR2TRD27.IM基本描述存储指令的器件,通 过PC输入的信号,来取出指令.信号接口名称流向描述Addr11:2I通过地址寻址,输出指令Dout31:00输出指令功能定义序号功能定义功能描述输出指令根据addr的地址,输出指令8.MUX基本描述多路选择器.信号接口(以二选一为例)信号名称流向描述D_inO31:OI端口 0DJn131:0I端口 1CtrlI选择信号D_out31:00输出端口功能定义序号功能定义功能描述1根据选择信号输出D_out=(crtl)?d_in1:dJnO9.shifter基本描述将输入数据左移16位,低位补零.信号接口名称流向描述DJn31:0I输入的数据D_out31:00移位后输出的数据功能定义序号功能定义功能描述1移位输入数据左移16位,低位补010.CRTL基本描述通过解析输入的指令,通过输出多个控制信号,控制其他器件运行信号接口名称流向描述INSTR31:0IIM 输出的指令NPC_OP1:00控制NPC值ALU_OP1:00控制ALU模式ALU_Sel0选择输入ALU的端口数据MemWrite0内存写入使能信号RegWrite0GPR写入使能WR_sel1:00控制写入GPR地址WD_Sel1:00控制写入GPR数据Extop0立即数扩展选择Addi_sel0Addi指令使能功能定义序号功能定义功能描述1输出控制信号根据指令内容输出控制信号11.MIPS基本描述顶层文件通过调用各个器件,完成CPU的功能信号接口名称流向描述ClkI时钟信号RstIPC复位信号Oversignal0Addi溢出信号功能定义序号功能定义功能描述1普通运行根据elk上升沿,控制时序电路运行2;/主月委爷PC(32bits)复位为 0 x0000_30003Addi溢出信号当 addi 溢出时,oversignal 为 1.问答1.addi的溢出处理由自己定义Operation:temp 一 (GPRrs)3il|GPRrs 31.0)+sign_extnd(immediate)if temp32*tempjj thenSignalExcept ion(IntegerOverflow)elseGPRrt-tempendifaddiu并不考虑溢出Operation:temp GPRrs+sign_extend(immediate)GPRrt-temp所以忽略溢出时:addi与 addiu结果相同并且结果与入GPR故二者等价.2.add描述:Operation:temp-(GPR(rs3 1|GPRrs3 1_0)+(GPRrt3 1|GPRrt3 1,if temp32/tempjj thenSignalException(Integeroverflow)elseGPRrd-tnpendifa d d u 描述:Operation:temp J GPR(rs+GPR(rtGPRrd GPRrtOri001101立即数或(立即数为0 拓展)Sit000000101010ifGPRrsGPRrt:GPRrd-32blelse GPRrd 6 32bOSubu000000100011无符号减法Sw101011Sign_extend(offset)+GPRrs GPRrt六.测试结果仿真数据:OOOOOOlf000000150000000b00000001000030b0 00000000 00000000 00000000 00000000 00000000 00000001 ababcdd2 0000000000000000 00000000 efefOOOO 00000002 00000001 00000003 80000004 80000002 000*0000 OOOOabab00000000 0090000 2babcddl 2babcddl 00000000 00000000 80000002 2babcddl ababcdcd&babcdd3ababcdcd 00000000MARS运行结果NameNumberValue0OxOODOOOOO1Oxababcdcd2Oxababcdd3Oxababedcd40 x2b&d dl50 x8000000260 x000000000 x0000000080 x2bbcddl90 x2babcddl100 x0069000011OxOOOOOCKX)12OxOOOOebb13OxOOOoOOOO140 x80000002190 x80DD0CO40 x000000030 x000000010 x00000002OxefRXX0 x00000000OxOOOODOCO:$s60 x00000000OxahabcddZ;tt8O x fffffff卜90 x000000010 x00000000|Skl0 x000000030 x00001800SSPOxOOOOZffcOxOODDOOOO(ra310 x000030boPCOx000030dShi0 x000000001 0oxoaxxxxw七.测试代码十六进制341000013411000334080001340cabab3c0d000a00102021000828210c000c3200028021022888231211fffa340800043c017fff3421ffff0001c02127090003270a000523160006ad0900008d0e0000ad0a00048d0f0004ad04fffc8d12fffc00082021000928210c000c320148c82a132000180184a02a 128000013c0cffff340000013 d 3efef3c01 abab3421 cdcdOO01182124640002207700050c000c320002402100082021000928210c000c3200024821010048213c0a0069110900011000fff408000c36008510212180123403e00008201a5678MIPS指令:ori$16,$0,1#立即数或ori$17,$0,3#立即数或ori$8,$0,1#立即数或ori$12,$0,0 xabab#立即数或lui$13,10#移位指令start:addu$4,$0,$16#无符号加法addu$5,$0,$8#无符号加法jal newadd#跳转到newadd并且存储下一条指令地址addu$16,$0,$2#无符号加法subu$17,$17,$8#无符号减法$17-beq$16,$17,start#当$16=$17 时,跳转到 start 地址ori$8,$0,4#立即数或addiu$24,$0,0 x7fffffff#无符号立即数加法lw$14,0($8)addiu$9,$24,3#无符号立即数加法addiu$10,$24,5#无符号立即数加法addu$0,$0,$0#$0=0#addi$22,$24,6#立即数加法start2:sw$9,0($8)#储存数据到内存#从内存读取数据sw$10,4($8)#储存数据到内存lw$15,4($8)#从内存读取数据sw$4,-4($8)#储存数据到内存+sing_extend(-4)lw$18,-4($8)#从内存读取数据MEM$8+sign_extend(-addu$4,$0,$8#无符号加法addu$5,$0,$9#无符号加法jal newadd#跳转到newadd存储下一条指令地址sit$25,$10,$8#比较$10 与$8 的值,$25=($10$8)?1:0beq$25,$0,end2#若$25=0跳转到end2sit$20,$12,$4#比较$12 与$4 的值,$20=($12$4)?1:0beq$20,$0,end1#若$20=0跳转到end1lui$12,65535#移位指令end1:ori$0,$0,1#$0=0lui$19,Oxefef#移位指令addiu$3,$0,0 xababcdcd#立 艮 1 数无符号力口法$3start3:addiu$4,$3,2#立即数无符号加法addu$8,$0,$2#无符号加法,内容是MOV指令addi$23,$3,5#立即数加法jal newadd#跳转到newadd存储下一条指令地址addu$4,$0,$8#无符号加法,内容是MOV指令addu$5,$0,$9#无符号加法,内容是MOV指令jal newadd#跳转到newadd存储下一条指令地址addu$9,$0,$2#无符号加法,内容是MOV指令addu$9,$8,$0#无符号加法,内容是MOV指令lui$10,0 x69#移位指令beq$8,$9,start4#若$8=$9 跳转至I start4beq$0,$0,starts#$0=0直接跳转到start3start4:j end#无条件跳转到endnewadd:addu$2,$4,$5#无符号加法addi$0,$12,0 x1234#立即数加法 但$0=0jr$31#跳转到$31存储的地址end2:addi$26,$0,0 x5678#立即数加法end:八,总结1.最难写的是顶层文件-m ips.v文件2.自己对verilog的语法还是不熟悉3.注意对组合和时序电路的区分4.临时变量要考虑慎重再去决定是否添加5.modelsim仿真时注意观察前1300ns前的数据6.project2架构基本与projectl相同7.应注意addi溢出处理8.写入GPR信号控制复杂,以及其他数据通路mux数量过多导致控制信号过难,控制器过大Project3+VerilogHDL开发多周期处理器-MIPS-LJte2指令集一.总体设计1 .设计图示2.模块定义ab.valu.valuout.vBEext.vctrl.vdataext.vdatapath.vdm.vDR.vextender,vhead.vim.vIR.vmips.vmux.vnpc.vp3-test.txtPC.vregfile.vtestbench,v0123456789101112131415-16018lomgmloglogloglogloglomgloglogloglomglotgmloglogerlerlerlefslserlefieflenserlenloenerleriloexerlenerlVVVVVVVVVVVVVVVVTVVV二.支持指令a)MIPS-Lite2=MIPS-Litel,lb,sb。b)MIPS-Lite 1 =addu,subu,ori,Iw,sw,beq,lui,addi,addiu,sit,jal,jro处理器为多周期三.模块定义1.PC基本描述PC输出当前指令地址,并计算下一条指令的地址.复位后,PC的值为0 x0000 3000.指向第一条指令的地址信号接口接口名流向描述Clk1时钟信号Rst1复位清零信号NPC1计算后的PC值PC0输出的PC值功能定义序号功能名称功能描述1复位复位信号有效时,PC复位为0 x0000_30002存储NPC并输出储 存 NPC的值并输出2.NPC基本描述计算下一条指令的地址信号接口端口名称流向描述PC 31:2I上一条指令的地址Imm 25:0I用于j 型指令的跳转AFR 31:0I寄存器存储的地址ZeroI寄存器两数据通路相等使能信号Npc_op1:0I控制NPC输出信号Npc31:20输出地址Pc+431:00输出PC+4功能定义序号功能名称功能描述1普通寻址NPCGPC+12Beq指令跳转(BEQ&zero)=1 时,NPC pc+131:28,sign_extend(imm15:0)3j 指令跳转NPCPC31:28,imm4J r指令跳转NPC AFR31:25Jal指令跳转NPCPC31:28,immPc+4 R PC,2b00+43.ALU基本描述主要的算术和逻辑运算器件信号接口端口名称流向描述A31:0I输入数据1B31:0I输入数据2ALU_op1:0I选择计算模式Addi_selIAddi指令来临信号Zero0If A=B:zero=1Else zero=0Overflow0Addi结果溢出使能Result31:00计算结果功能定义序号功能名称功能描述1无符号加法进行无符号的加法运算,不考虑溢出2无符号加法进行无符号的减法,不考虑溢出If A=B:zero=1Else:zero=03或运算A 与 B 按位或4A 与 B 比较If AB:Result=1Else Result=05立即数加法有符号的加法,考虑溢出4.DM_4K基本描述主要存储器件,容量4K信号接口信号名称流向 功能描述Addr11:2I 数据寻址Din31:0I 输入数据WeI 写使能ClkI 时钟信号Be3:0I Lw/lb选择指令Dout31:00 输出数据功能定义序 号 功 能 名 称功能描述1 lw 写入If we=1&clk is posedge:DinDMaddr2 Lb写 入 1If we=1&clk is posedge:dmaddr 7:0=din7:03 Lb写入2If we=1&clk is posedge:dmaddr 15:8=din7:04 Lb写入3If we=1&clk is posedge:dmaddr 23:16=din7:05 Lb写入4If we=1&clk is posedge:dmaddr 31:24 Dout5.extender基本描述将 16位立即数扩展位32位信号接口信号名流向描述lmm15:0I输入的16bits立即数Ext_opI选择扩展类型Ext31:00扩展后的数据功能定义序号功能定义功能描述10 拓展if Ext_op=0:Ext16b0,imm2符号拓展If Ext_op=1:ExtGPRWR2输出数据把寄存器数据输出GPRR1RD1GPRR2RD27.IM基本描述存储指令的器件,通 过PC输入的信号,来取出指令.信号接口名称流向描述Addr11:2I通过地址寻址,输出指令Dout31:00输出指令功能定义序号功能定义功能描述1输出指令根据addr的地址,输出指令8.MUX基本描述多路选择器.信号接口(以二选一为例)信号名称流向描述DJn031:0I端口 0DJn131:0I端口 1CtrlI选择信号D_out31:00输出端口功能定义序号功能定义功能描述1根据选择信号输出D_out=(crtl)?d_in1:d_inO9.shifter基本描述将输入数据左移16位,低位补零.信号接口名称流向描述DJn31:0I输入的数据D_out31:00移位后输出的数据功能定义序号功能定义功能描述1移位输入数据左移16位,低位补010.CRTL基本描述通过解析输入的指令,通过输出多个控制信号,控制其他器件运行信号接口名称流向描述Funct5:0IIR 输出Op5:0IIR输出zeroIBeq信号elkI时钟信号rstI清零信号OversignalI溢出信号Pcwr0Pc写使能Irwr0IR 写使能Regdst1:00选择写入寄存器堆数据通路信号Regwe0GPR写使能Memtoreg1:00选 择 lw/lbAlusrc0Alu数据通路选择Memwe0DM写信号Branch1:00分支信号Jump1:00跳转信号Extop1:00拓展选择信号Aluop1:00Alu计算信号Turn0取下一条指令功能定义序号功能定义功能描述1输出控制信号根据指令内容输出控制信号2溢出信号若溢出不写入寄存器3清空清零4Beq判断若为分支语句,设置相应状态11.datapath基本描述数据通路描述模块信号接口名称流向描述PCwrIP c可写使能IRwrIIr可写使能Regdst1:0I写入GPR选择信号alusrcIAlu数据通路选择信号Memtoreg1:0ISw/sb选择信号regweIGPR写使能memweIMen写使能Branch1:0I分支选择信号Jump1:0I跳转选择信号Extop1:0I立即数拓展选择信号Aluop1:0Ialu选择信号elkI时钟信号rstI清零信号turnI下一条指令zero0Alu结果相等more0其他支持oversignal0alu溢出信号lnsrt31:00指令输出功能定义序号功能定义功能描述1运行根据crtl的控制信号运行2清零对数据通路清零12.数据通路中的寄存器基本描述多周期处理器的必要部件信号接口名称流向描述Din?:0I输入数据RstI清零信号ClkI时钟信号Dout?:00输出数据功能定义序号功能定义功能描述储存数据储存输入数据寄存器清零.问答设计思路:mips中 lw/lb/.sw/sb/指令为与储存器进行数据交换的指令故单列出来s2,s3,s4为“L 型”指令s2,s5为“S 型”指令s6,s7R/l型指令为算术或逻辑运算指令S8为分支状态,比如beqS9为j/jmp跳转最大程度上复用状态以此简化状态机状态个数,简化电路设计五:指令描述:a)MIPS-Lite2=MIPS-Litel,lb,sb。b)MIPS-Litel=addu,subu,ori,Iw,sw,beq,lui,addi,addiu,sit,jal,jr0助记符机器指令代码 Func功能opAddiAddiu001000立即数加法001001立即数无符号加法Addu000000100001无符号加法Beq000100相等跳转,不等顺序执行J000010无条件跳转JalJr000011跳转,并将下一条地址存入GPR31000000001000跳转到GPR的地址Lui001111左 移16位Lw100011Sign_extend(offset)+GPRrs-GPRrtOriSit001101立即数或(立即数为0拓展)000000101010ifGPRrsGPRrt:GPRrd-32b1else GPRrd R 32bOSubu000000100011无符号减法SwLb101011Sign_extend(offset)+GPRrs-GPRrt100000dout=(be=4b0001)?24din7,din7:0:(be=4b0010)?24din15,din15:8):(be=4b0100)?24din23,din23:16:(be=4bl000)?24din31,din31:24):32bx;Sb101000Case(be)41b0001:dmaddr7:0=din7:0 4*b0010:dmaddr15:8=din7:0 4b0100:dmaddr23:16=din7:04*bl000:dmfaddr31:24=din7:0六.测试结果仿真数据:000030b4 00000000 00000000 00000000 00000000 00000000 00000001 ababc4d2 00000000 00000000 00000000 efefOOOO ffffffSO 0000000100000003 abOOOOOO 0000007f OOOaOOOO OOOOabab 00000000 0090000 2babcddl 2babcddl 00000000 00000000 80000002 2babcddl ababcdcd ababcdd3ababcdcd 00000000MARS运行结果Registers Coproc 1 Coproc 0N a m eNu m b e rVa l u eSzero00 x00000000$at1Oxababcdcd$v020 xababcdd3!$vl3Oxababcdcd$a040 x2babcddli$al50 x80000002$a260 x00000000:$a370 x00000000$t 080 x2babcddl$t l90 x2babcddl$t21 00 x00690000$t3110 x00000000$t41 2OxOOOOabab$t 513OxOOOaOOOO$t6140 x0000007:$t 715OxabOOOOOO$s01 60 x00000003i$sl170 x00000001$s218OxffffffBO$s319OxefefOOOO$s4200 x00000000$s5210 x00000000$s6220 x00000000命7230 xababcdd2$t82 4Ox7ff$t9250 x00000001$ko260 x00000000270 x00000000$2P280 x00001800$sp290 x00002任c$fp300 x00000000$ra310 x000030b4PC0 x000030dc!hi0 x00000000;1。0 x00000000七,测试代码十六进制341000013411000334080001340cabab3c0d000a00102021000828210c000c3300028021022888231211fffa340800043c017fff3421ffff0001c02127090003270a000500000021adO9fffcadO10000810e0003a10c00078d0f0004a104fffd8112ffff00082021000928210c000c330148c82a132000180184a02a128000013c0cffff340000013c13efef3c01abab3421cdcd0001182124640002207700050c000c330002402100082021000928210c000c3300024821010048213cOaO069110900011000fff408000c37008510212180123403e00008201a5678MIPS指令:ori$16,$0,1ori$17,$0,3ori$8,$0,1#$16 I#$17 V 3ori$12,$0,0 xabab#$12-Oxabablui$13,10#$13 如 0 x000a_0000start:addu$4,$0,$16#$4-$16add