收藏 分享(赏)

MIPS单周期CPU实验报告.doc

上传人:weiwoduzun 文档编号:3677305 上传时间:2018-11-15 格式:DOC 页数:26 大小:20.62MB
下载 相关 举报
MIPS单周期CPU实验报告.doc_第1页
第1页 / 共26页
MIPS单周期CPU实验报告.doc_第2页
第2页 / 共26页
MIPS单周期CPU实验报告.doc_第3页
第3页 / 共26页
MIPS单周期CPU实验报告.doc_第4页
第4页 / 共26页
MIPS单周期CPU实验报告.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、计算机组成原理实验计算机组成原理实验实验报告(实验二)学院名称 :专业(班级):学生姓名 :学号 :时间 : 2017 年 11 月 25 日计算机组成原理实验成绩 :实验二 : 单周期CPU设计与实现 一. 实验目的(1) 掌握单周期 CPU 数据通路图的构成、原理及其设计方法;(2) 掌握单周期 CPU 的实现方法,代码实现方法;(3) 认识和掌握指令与 CPU 的关系;(4) 掌握测试单周期 CPU 的方法;(5) 掌握单周期 CPU 的实现方法。二. 实验内容设计一个单周期的MIPSCPU,使其能实现下列指令:= 算术运算指令(1)add rd , rs, rt (说明:以助记符表示,

2、是汇编指令;以代码表示,是机器指令)000000 rs(5 位 ) rt(5 位) rd(5 位) reserved功能:rdrs + rt 。reserved 为预留部分,即未用,一般填“0” 。(2)addi rt , rs ,immediate 000001 rs(5 位 ) rt(5 位) immediate(16 位)功能:rtrs + (sign-extend)immediate;immediate 符号扩展再参加“加”运算。(3 )sub rd , rs , rt000010 rs(5 位 ) rt(5 位) rd(5 位) reserved功能:rdrs - rt= 逻辑运算指

3、令(4)ori rt , rs ,immediate 010000 rs(5 位 ) rt(5 位) immediate(16 位)功能:rtrs | (zero-extend)immediate;immediate 做“0”扩展再参加“或”运算。(5)and rd , rs , rt010001 rs(5 位 ) rt(5 位) rd(5 位) reserved功能:rdrs 26. ramaddress+1 = DataIn23:16; 27. ramaddress+2 = DataIn15:8; 28. ramaddress+3 = DataIn7:0; 29. end 30. end

4、31. end 32. endmodule 仿真截图:3.测试程序:计算机组成原理实验测试程序如下:指令代码地址 汇编程序 op(6)rs(5) rt(5) rd(5)/immediate (16)16 进制数代码0x00000000 addi $1,$0,8 000001 00000 00001 0000 0000 0000 1000 0401 00080x00000004 ori $2,$0,2 010000 00000 00010 0000 0000 0000 0010 4002 00020x00000008 add $3,$2,$1 000000 00010 00001 00011 0

5、0000 000000 0041 18000x0000000C sub $5,$3,$2 000010 00011 00010 00101 00000 000000 0862 28000x00000010 and $4,$5,$2 010001 00011 00010 00100 00000 000000 4462 20000x00000014 or $8,$4,$2 010010 00100 00010 01000 00000 000000 4882 40000x00000018 sll $8,$8,1 011000 00000 01000 01000 00001 000000 6008 4

6、0400x0000001C bne $8,$1,-2 (,转18) 110001 01000 00001 1111 1111 1111 1110 C501 FFFE0x00000020 slt $6,$2,$1 011100 00010 00001 00110 00000 000000 7041 30000x00000024 slt $7,$6,$0 011100 00110 00000 00111 00000 000000 70C0 38000x00000028 addi $7,$7,8 000001 00111 00111 0000 0000 0000 1000 04E1 00080x00

7、00002C beq $7,$1,-2 (,转28) 110000 00111 00001 1111 1111 1111 1110 C0E1 FFFE0x00000030 sw $2,4($1) 100110 00001 00010 0000 0000 0000 0100 9822 00000x00000034 lw $9,4($1) 100111 00001 01001 0000 0000 0000 0100 9C29 00040x00000038 bgtz $9,2 (=0) 110010 01001 00000 0000 0000 0000 0010 C920 00020x0000003

8、C addi $9,$0,15 000001 00000 01001 0000 0000 0000 1111 0409 000F0x00000040 j 0x00000038 111000 00 0000 0000 0000 0000 0000 1110 E000 000E0x00000044 halt 111111 00 0000 0000 0000 0000 0000 0000 FC00 0000机器代码(.roe):计算机组成原理实验仿真截图:(1)addi $1, $0, 8 至 bne $1, $8, -2(2)slt $6, $2, $1 至 lw $9, 4($1)(3)bgtz

9、 $9, $2 至 halt4 烧板(1) addi $1,$0,8:当前PC和下一条PC:Rs寄存器:计算机组成原理实验Rt寄存器:ALU结果及写寄存器数据:计算机组成原理实验(2) ori $2,$0,2当前PC和下一条PC:Rs寄存器:计算机组成原理实验Rt寄存器:ALU结果及写寄存器数据:(3) add $3,$2,$1当前PC和下一条PC:计算机组成原理实验Rs寄存器:Rt寄存器:ALU结果及写寄存器数据:计算机组成原理实验六. 实验心得这次实验中,在设计CPU中各个模块时,遇到的问题并不大。但是,在顶层模块中,由于以前的verilog实验中中间变量的数量远远小于这一次,因而遇到了许

10、多没有遇到过的问题。比如寄存器堆的输出ReadData2和数据存储单元的输入DataIn 是同一个变量,但在最早的顶层模块代码中我声明了两个变量,导致CPU在执行存字指令(sw)时出错。再比如在仿真时,因为发现寄存器堆写寄存器时存在问题,为了debug,我为顶层模块增加了几个输出,其中有一个输出的名称为RD,对应指令中的 rd寄存器。但是,在CPU中控制单元输出的控制信号中有一个便被命名为RD。因此,在很多次仿真中, RD都不能输出正确的结果,浪费了大量的时间。在实验中,我遇到的另一个主要的问题是在生成bit文件时多次报错(DRC 23-20 )。我询问了很多位同学,但都没有解决,最后是在网上找到一篇提及这个错误的博客。根据博客的内容和软件提供的错误信息,我添加了一个文件,并加入了一条命令:set_property SEVERITY Warning get_drc_checks LUTLP-1从而解决了这个错误,生成bit文件。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报