1、2实验八 单周期处理器的实现实验目的:进一步理解数据通路、控制通路等基本概念掌握处理器中控制器的基本设计方法进一步理解单周期处理器以及多周期处理器的工作原理和设计思路实验要求:设计和实现一个单周期处理器(60%)可执行至少 7 条 MIPS 指令,add、sub、ori、lw、sw 、beq、j编写测试程序的二进制代码,测试实现的电路撰写实验报告,dead line:5.19设计和实现一个多周期处理器(40%)Dead line:6.6。实验报告:(1) 实验过程1 控制器的设计与实现控制器的功能根据当前指令,生成处理器内部各部件所需要的控制信号控制器的输入输出输入:op5:0,func5:0
2、3输出:RegDst,ALUSrc ,MemtoReg,RegWrite,MemWrite,Branch,Jump,ExtOp,ALUctr2:0图表 1 主控的设计图表 2 ALUCTR 的设计4图表 3 控制器的封装2 ALU 的设计与实现ALU 的功能根据控制信号 ALUctr2:0,将输入端口的两个 32 位的数据进行加、减、与、或操作,并判断结果是否为 0ALU 的输入输出输入:A31:0,B31:0,ALUctr2:0输出:OUT31:0,ZeroALU 的实现将运算器实验中实现的加减法扩展为 32 位5增加 32 位与、或功能增加结果判零电路根据 ALUctr2:0信号确定 AL
3、U 的输出图表 4 加法器的设计与封装(由于上一个实验已做成 ALU,这里不再赘述加法器的制作)根据 ADD/SUB 信号判断实现加法或是减法,并且设置Zero 项输出,用作 Beq 指令的判定依据6图表 5 加减法器的设计图表 6 ALU 的封装7三 寄存器文件的设计与实现寄存器文件的功能寄存器读:根据 Rs, Rt 的值读出相应寄存器的值,Rs 对应BusA,Rt 对应 BusB。用多路选择器实现寄存器数据的选择。寄存器写:当 RegWR=1 时,clk 上升沿,将 busW 的值写入 Rw 对应的寄存器。用译码器实现寄存器的实现。寄存器文件的输入输出输入:Rs, Rt,Rw,RegWr,
4、busW,clk输出:BusA,BusB寄存器文件的实现使用 Memory 库中的 register 元件搭建图表 7 寄存器文件的实现四 立即数扩展部件的设计与实现立即数扩展部件的功能根据控制信号 Extop 的值,将十六位的立即数进行符号位扩展(Extop = 1)或者无符号扩展( Extop = 0)8立即数扩展部件的输入输出输入:imm16,Extop输出:imm32立即数扩展部件的实现当 Extop = 1,并且 imm16 的高位为 1 时,imm32 的高 16 为全为1否则,imm32 的高 16 位全为 0。因此立即数的高位与 ExtOp 信号做“与”操作,当且仅当结果为一时
5、做逻辑扩展。图表 8 位扩展的实现五 取指部件以及指令存储器的设计与实现取指部件的功能根据当前 PC 及当前指令,计算下一 PC使用当前 PC 到指令存储器取指令取指部件的输入输出输入:Jump ,Branch,Zero,Imm32,CLK输出:Instruction31:09取指部件的实现当前指令为普通指令时,PC=PC+4当前指令为 beq 指令时,若 Zero=1,则 PC = PC + 4 +SignExtimm16;否则 PC=PC+4当前指令为 j 指令时,PC=PC,target ,“00”数据在取指传输通路中为 30 位,当其进入 PC 时,扩展为 32 位,但 RAM地址只有 24 位,考虑地址输入到本实验中指令数目较少,只取数据的低二十四位作为 RAM 地址输入图表 9 取指部件的实现六 处理器的封装10七 处理器的执行第 1 条指令 执行一号寄存器加二号寄存器的值,以 3+7 为例。并将结果存入三号寄存器。第二条指令将三号寄存器的值存入数据存储器的九号单元第 3 条指令将数据存储器九号单元的数据存入四号寄存器