logo资料库

华中科技大学计算机组成原理实验报告-CPU设计实验.docx

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
1CPU设计实验
1.1设计要求
1.2方案设计
1.2.1设计单周期MIPS CPU数据通路
1.2.2设计单周期MIPS CPU硬布线控制器
1.2.3设计多周期MIPS CPU数据通路
1.2.4设计多周期MIPS CPU微程序控制器
1.2.5设计多周期MIPS CPU硬布线控制器
1.3实验步骤
1.3.1构建单周期CPU数据通路
1.3.2构建单周期CPU硬布线控制器
1.3.3构建多周期CPU数据通路
1.3.4构建多周期CPU微程序控制器
1.3.5构建多周期CPU硬布线控制器
1.4故障与调试
1.4.1故障1
1.4.2故障2
1.5测试与分析
1.5.1单周期CPU执行sort.hex测试程序
1.5.2多周期CPU(微程序)执行sort.hex测试程序
1.5.3多周期CPU(硬布线)执行sort.hex测试程序
2总结与心得
2.1实验总结
2.2实验心得
参考文献
2019 计算机组成原理 ·实验报告· 专 业: 计算机科学与技术 班 级: CS17xx 学 号: U2017xxxxx 姓 名: Xxx 电 话: 1xxxxxxxxxx 邮 件: xxxxxxxxx@qq.com 完成日期: 2019-11-27 计算机科学与技术学院
华 中 科 技 大 学 课 程 实 验 报 告 目 录 1 CPU 设计实验........................................................................................ 2 1.1 设计要求..........................................................................................2 1.2 方案设计..........................................................................................2 1.3 实验步骤........................................................................................13 1.4 故障与调试....................................................................................22 1.5 测试与分析....................................................................................23 2 总结与心得..........................................................................................25 2.1 实验总结........................................................................................25 2.2 实验心得........................................................................................25 参考文献................................................................................................... 27 I
华 中 科 技 大 学 课 程 实 验 报 告 1 CPU 设计实验 1.1 设计要求 (1) 在 logisim 平台利用已给出的组件构建一个 32 位 MIPS 单周期 CPU,该 CPU 支持如表 1. 1 列出的核心指令集中的 8 条指令。要求绘制单周期 MIPS CPU 数 据通路、实现单周期硬布线控制器,并最终能在完成的 CPU 上运行冒泡排序的 测试程序 sort.hex 且获得正确的输出结果。 (2) 在 logisim 平台利用已给出的组件构建一个 32 位 MIPS 多周期 CPU,该 CPU 支持如表 1. 1 列出的核心指令集中的 8 条指令。要求绘制多周期 MIPS CPU 数 据通路,以两种方式实现控制器,即分别实现微程序控制器和硬布线控制器。 并最终能在完成的 CPU 上运行冒泡排序的测试程序 sort.hex 且获得正确的输出 结果。 # MIPS 指令 1 2 3 4 5 6 7 8 add $rd,$rs,$rt slt $rd,$rs,$rt addi $rt,$rs,imm lw $rt,imm($rs) sw $rt,imm($rs) beq $rs,$rt,imm bne $rs,$rt,imm syscall 1.2 方案设计 表 1. 1 8 条核心指令集 格式 R[$rd]←R[$rs]+R[$rt] 溢出时产生异常,且不修改 R[$rd] R[$rd]←R[$rs]
华 中 科 技 大 学 课 程 实 验 报 告 达到停机的目的,而针对其他 7 条指令则另需设计数据通路。取指令阶段也需设计数 据通路。 图 1. 1 取指令数据通路 图 1. 2 R 型运算指令(add 和 slt)数据通路 3
华 中 科 技 大 学 课 程 实 验 报 告 图 1. 3 addi 指令数据通路 图 1. 4 lw 指令数据通路 图 1. 5 sw 指令数据通路 图 1. 6 beq 和 bne 指令数据通路 4
华 中 科 技 大 学 课 程 实 验 报 告 将已设计的不同指令的数据通路进行综合,在有多个输入来源的地方增加数据选 择器 MUX,且将控制信号作为数据选择器的选择端,构建综合数据通路(如图 1. 7 所示)。 图 1. 7 单周期 MIPS 参考数据通路示意图 1.2.2 设计单周期 MIPS CPU 硬布线控制器 单周期MIPS CPU 硬布线控制器输入信号功能为提供CPU 运行过程中的各种控制 信号。已封装好的控制器如图 1. 8 所示。输入为指令的 Op 字段和 Func 字段 ,输出 为各种控制信号。分析各指令各自执行时的数据通路,得到各指令分别需要何种控制 信号。完成后绘制控制信号功能表如表 1. 2 所示。 5
华 中 科 技 大 学 课 程 实 验 报 告 图 1. 8 单周期 CPU 硬布线控制器封装图 表 1. 2 控制信号功能说明表 控制信号 信号说明 写内存控制信号 Beq 指令译码信号 Bne 指令译码信号 MemToReg 写入寄存器的数据来自寄存器 MemWrite Beq Bne AluOP AluSrcB RegWrite RegDst Halt 写入寄存器选择控制信号 运算器操作控制符 运算器第二输入选择 寄存器写使能控制信号 停机信号 产生条件 lw 指令 sw 指令 Beq 指令 Bne 指令 加法,比较两种运算 Lw 指令,sw 指令,addi 寄存器写回信号 R 型指令 syscall 指令 # 1 2 3 4 5 6 7 8 9 (1) 指令译码逻辑 指令译码逻辑将指令的操作码字段转换为对应的运算信号,如 addi 信号,lw 信号, sw 信号等。输入为 Op 字段和 Func 字段,输出共 6 个,R_TYPE、ADDI、LW、SW、 BEQ、BNE、SysCall。 查询实验包内的《MIPS32 指令手册》得到 LW、SW、BEQ、BNE、ADDI 指令的 OP 字段如表 1. 3 所示。 表 1. 3 部分指令 OP 字段值 指令 LW SW BEQ BNE ADDI OP 字段 0x23 0x2b 0x04 0x05 0x08 只需使用比较器将 OP 与各指令的 OP 字段值进行比较便可得到以上指令对应的控 制信号。 6
华 中 科 技 大 学 课 程 实 验 报 告 而对于信号 R_TYPE,它是 R 型运算指令的控制信号,对于本次设计而言,共 3 条 R 型指令,分别为 ADD、SLT、SysCall。其中 ADD 和 SLT 指令为 R 型运算指令。故 R_TYPE 在 SysCall 对应的指令无效,而 ADD 对应的控制信号或 SLT 对应的控制信号 有效时有效。即 R_TYPE = ( ADD + SLT ) & ~SysCall 。故需先得到 ADD、SLT 和 SysCall 信号。R 型指令的 OP 字段为 0,具体功能需看 Func 字段,故需再次查阅实验 包内的《MIPS32 指令手册》得到 ADD、SLT、SysCall 指令的 Func 字段值,如表 1. 4 所示。 表 1. 4 部分 R 型指令 Func 字段值 指令 ADD SLT SysCall Func 字段 0x20 0x2a 0x0c 只需将 FUNC 和各指令对应字段比较相等的信号与 OP 和 0 比较相等的信号作与 运算即可得到相应的控制信号 ADD、SLT 和 SysCall。 这样,我们就得到了 R_TYPE、ADDI、LW、SW、BEQ、BNE、SysCall 这 6 个 指令译码信号。 (2) ALU 控制逻辑 ALU 控制逻辑负责控制运算器的功能,输出信号 ALU_OP 送入运算器 ALU 的功 能选择端,输入仍为指令的 OP 字段和 FUNC 字段。由于运算器只进行加法和比较大 小两种运算,且只有在运行 SLT 指令时才需要进行比较大小运算,故使用 SLT 指令时 使 ALU_OP 控制信号控制 ALU 进行比较大小运算其余时候都作加法运算即可。查看 ALU 内部逻辑(如图 1. 9 所示)可知加法运算操作码为 0x5,比较大小运算操作码为 0xb。将 0x5 和 0xb 作为二路选择器的输入端,SLT 信号作为选择端即可。 7
分享到:
收藏