计算机组成原理实验报告模板Word下载.docx
《计算机组成原理实验报告模板Word下载.docx》由会员分享,可在线阅读,更多相关《计算机组成原理实验报告模板Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
![计算机组成原理实验报告模板Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/97879a03-3e1c-40a1-bf7a-57cc0c0f3e64/97879a03-3e1c-40a1-bf7a-57cc0c0f3e641.gif)
本实验报告的知识产权归属于培养单位。
本人签名:
手写签名日期:
摘要(打印在正面)
XXXX实验的实验目的是XXXX。
实验设计主要遵循XXXX。
实验内容主要包括:
实验结论为XXXX
……
关键词:
关键词1;
关键词2;
关键词3
(黑体小4)(宋体小4)
目录(自动生成)正面开始
目录(自动生成)正面开始I
1实验目的和意义(正面开始)1
1.1实验目的1
1.2实验意义1
2实验设计2
2.1概述2
2.2实验环境2
2.2.1VerilogHDL简介2
2.2.2ModelSim简介2
2.2.3MARS简介2
2.2硬件设计3
2.2.1CPU总体结构(按流水线来写)3
2.2.2程序计数器(XX)3
2.2.3寄存器设计(XX)3
2.2.4算术逻辑运算单元(XX)4
2.2.5扩展单元(XX)5
2.2.6数据存储器(XX)5
2.2.7指令存储器(XX)5
2.2.8控制器(XX)6
2.2.9模型机(MIPS)7
2.3软件设计7
2.3.1程序计数器(PcUnit)7
2.3.2寄存器(GPR)8
2.3.3算术逻辑运算单元(ALU)8
2.3.4扩展单元(Extender)8
2.3.5数据存储器(DMem)8
2.3.6指令存储器(IM)8
2.3.7控制器(Ctrl)8
2.3.8模型机(MIPS)9
2.4设计结果分析9
2.4.1测试文件9
2.4.2测试机器码(与上面对应)9
2.4.3测试结果分析(例子是按单周期写的,改成按流水线CPU来写,有数据冒险和阻塞的要分析、有控制冒险的也要分析)9
2.4.3.1lui$1,0x1000指令12
2.4.3.2ori$1,$1,0x2211指令12
结论14
参考文献15
教师评语评分16
1实验目的和意义(正面开始)
1.1实验目的
本实验……
(宋体小4,正文行间距固定为23磅,字符间距为标准)
.......
1.2实验意义
2实验设计
2.1概述
2.2实验环境
2.2.1VerilogHDL简介
2.2.2ModelSim简介
2.2.3MARS简介
2.2硬件设计
2.2.1CPU总体结构(按流水线来写)
流水线CPU总体结构如下图所示,其中包括程序计数器(PC)、指令存储器(IM)、寄存器组(RF)、运算器(ALU)、数据扩展单元(EXT)、数据存储器(DM)和控制器(Ctrl)。
。
自己画图
2.2.2程序计数器(XX)
(1)功能描述
(2)模块接口
表2.1程序计数器模块接口定义
信号名
方向
描述
2.2.3寄存器设计(XX)
2.2.4算术逻辑运算单元(XX)
ALU主要功能是完成对输入数据的进行加法、减法、与、或、左移、右移、乘法、除法运算以及判断两个操作数是否相等。
表2.3ALU模块接口定义
DataIn1[31:
0]
I
操作数A
DataIn2[31:
操作数B
ALUOp[1:
需要进行的运算
00:
加法
01:
减法
10:
或运算
Zero
O
两操作数是否相等
AluResult[31:
运算结果
2.2.5扩展单元(XX)
EXT主要功能是将16位的数据扩展为32位数据。
Imm16[15:
需要进行扩展的数据
EXTOp[1:
扩展方式的控制信号
0扩展
符号扩展
将立即数扩展到高位
Imm32[31:
扩展结果
2.2.6数据存储器(XX)
2.2.7指令存储器(XX)
(2)模块接口
2.2.8控制器(XX)
2.2.9模型机(MIPS)
其他自己编写的模块加进去
里面根据需要可以加下级目录
2.3软件设计
2.3.1程序计数器(PcUnit)
放代码和说明
2.3.2寄存器(GPR)
放代码和说明
2.3.3算术逻辑运算单元(ALU)
2.3.4扩展单元(Extender)
2.3.5数据存储器(DMem)
2.3.6指令存储器(IM)
2.3.7控制器(Ctrl)
2.3.8模型机(MIPS)
2.4设计结果分析
2.4.1测试文件
2.4.2测试机器码(与上面对应)
2.4.3测试结果分析(例子是按单周期写的,改成按流水线CPU来写,有数据冒险和阻塞的要分析、有控制冒险的也要分析)
例如:
ori$29,$0,12指令
该指令的仿真结果如下图所示,该指令表示将$0寄存器与常数12进行“或”运算,结果放入$29号寄存器。
仿真结果表明,该指令所在的PC寄存器地址为00003000(十六进制),该指令的机器码为341d000c(十六进制),rs寄存器编号为0,rt寄存器编号为1d(十进制是29),rd寄存器编号也是1d(十进制是29),寄存器写入的数据(RWD)是0000000c,与指令的预期结果是一致的,说明该指令仿真结果正确。
sw$2,0($0)指令
该指令的仿真结果如下图所示,该指令表示将$2寄存器存入$0+0的内存单元中,$0寄存器的值总是为0,因此计算的地址是0,即:
将$2寄存器存入0号内存单元。
仿真结果表明,该指令所在的PC寄存器地址为00003014(十六进制),该指令的机器码为ac02000(十六进制),rs寄存器编号为0,rt寄存器编号为02(十进制是2),rd寄存器编号也是02(十进制是2),RDout2的输出为00001234(十六进制),也就是前面指令执行后$2寄存器的内容,存储器的写入地址dmDataAdr的值为0,即写入地址为0,写入的数据即为RDout2的输出值00001234(见3.1CPU总体结构图中的连线),最终dm_dout的值为00001234(十六进制),与指令的预期结果是一致的,说明该指令仿真结果正确。
图2.1sw$2,0($0)指令仿真图
beq$2,$5,_lb2指令
该指令的仿真结果如下图所示,该指令表示将$0寄存器与$5寄存器进行“减”运算,结果不保存,通过置的zero标记来决定是否转移。
如果zero=1则表示$0寄存器与$5寄存器数据相等,转移到_lb2标号,否则就不转移。
仿真结果表明,该指令所在的PC寄存器地址为00003024(十六进制),该指令的机器码为8c050004(十六进制),rs寄存器编号为2,rt寄存器编号为5(十进制是5),rd寄存器编号也是5(十进制是5),寄存器RDout1的输出值为00001234,寄存器RDout2的输出值也为00001234,两者相等,根据测试文件程序应该专业到下面的lw$5,4($0)指令,其指令地址为0000302c,与指令的预期结果是一致的,说明该指令仿真结果正确。
2.4.3.1lui$1,0x1000指令
2.4.3.2ori$1,$1,0x2211指令
下面的自己列
lui$2,0x1000
ori$2,$2,0x4433
add$3,$2,$1
sw$3,0($0)
lui$4,0x3000
ori$4,$4,0x5566
sub$5,$3,$4
sw$5,4($0)
lw$6,0($0)
slt$7,$6,$5
beq$7,$0,L2
L1:
jL3
L2:
slt$8,$2,$3
bne$8,$0,L1
L3:
ori$9,$0,0x10
sll$10,$9,5
srl$11,$10,4
addi$13,$0,0x1234
addi$14,$0,0xff
and$15,$13,$14
lui$16,0xffff
or$17,$13,$16
addu$18,$2,$1
subu$19,$3,$4
jL0
结论
参考文献
教师评语评分
评语:
评分:
评阅人:
年月日