单周期处理器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八单周期处理器的实现
实验目的:
进一步理解数据通路、控制通路等基本概念
掌握处理器中控制器的基本设计方法
进一步理解单周期处理器以及多周期处理器的工作原理和设计思路实验要求:
设计和实现一个单周期处理器(60%)
可执行至少7条MIPS指令,add、sub、ori、lw、sw、beq、j
编写测试程序的二进制代码,测试实现的电路
撰写实验报告,dead line:5.19
设计和实现一个多周期处理器(40%)
Dead line:6.6
。
实验报告:
(1)实验过程
1 控制器的设计与实现
控制器的功能
根据当前指令,生成处理器内部各部件所需要的控制信号
控制器的输入输出
输入:op[5:0],func[5:0]
输出:RegDst,ALUSrc,MemtoReg,RegWrite,MemWrite,Branch,Jump,ExtOp,ALUctr[2:0]
图表1 主控的设计
图表2 ALUCTR的设计
图表3 控制器的封装
2 ALU的设计与实现
ALU的功能
根据控制信号ALUctr[2:0],将输入端口的两个32位的数据进行加、减、与、或操作,并判断结果是否为0
ALU的输入输出
输入:A[31:0],B[31:0],ALUctr[2:0]
输出:OUT[31:0],Zero
ALU的实现
将运算器实验中实现的加减法扩展为32位
增加32位与、或功能
增加结果判零电路
根据ALUctr[2:0]信号确定ALU的输出
图表4 加法器的设计与封装
(由于上一个实验已做成ALU,这里不再赘述加法器的制作)
根据ADD/SUB信号判断实现加法或是减法,并且设置Zero
项输出,用作Beq指令的判定依据
图表5 加减法器的设计
图表6 ALU的封装
三寄存器文件的设计与实现
寄存器文件的功能
寄存器读:根据Rs,Rt的值读出相应寄存器的值,Rs对应
BusA,Rt对应BusB。用多路选择器实现寄存器数据的选择。
寄存器写:当RegWR=1时,clk上升沿,将busW的值写入
Rw对应的寄存器。用译码器实现寄存器的实现。
寄存器文件的输入输出
输入:Rs,Rt,Rw,RegWr,busW,clk
输出:BusA,BusB
寄存器文件的实现
使用Memory库中的register元件搭建
图表7 寄存器文件的实现
四立即数扩展部件的设计与实现
立即数扩展部件的功能
根据控制信号Extop的值,将十六位的立即数进行符号位扩展(Extop = 1)或者无符号扩展(Extop = 0)
立即数扩展部件的输入输出
输入:imm16,Extop
输出:imm32
立即数扩展部件的实现
当Extop = 1,并且imm16的高位为1时,imm32的高16为全为1 否则,imm32的高16位全为0。因此立即数的高位与ExtOp信号做“与”操作,当且仅当结果为一时做逻辑扩展。
图表8 位扩展的实现
五取指部件以及指令存储器的设计与实现
取指部件的功能
根据当前PC及当前指令,计算下一PC
使用当前PC到指令存储器取指令
取指部件的输入输出
输入:Jump,Branch,Zero,Imm32,CLK
输出:Instruction[31:0]
取指部件的实现
当前指令为普通指令时,PC=PC+4
当前指令为beq指令时,若Zero=1,则PC = PC + 4 +SignExt[imm16];否则PC=PC+4
当前指令为j指令时,PC={PC<31:28>,target<25:0> ,“00”}
数据在取指传输通路中为30位,当其进入PC时,扩展为32位,但RAM地址只有24位,考虑地址输入到本实验中指令数目较少,只取数据的低二十四位作为RAM地址输入
图表9 取指部件的实现
六处理器的封装
七处理器的执行
第一条指令执行一号寄存器加二号寄存器的值,以3+7为例。并将
结果存入三号寄存器。
第二条指令将三号寄存器的值存入数据存储器的九号单元
第三条指令将数据存储器九号单元的数据存入四号寄存器
第四条
11