# mips 五级流水线 CPU 设计
## **1.** 设计的目的和意义
目的:
1)、在掌握部件单元电路实验的基础上,进一步将其组成系统,构造一台基本模型计算机。
2)、为其定义 20 条机器指令,并编写相应的微程序,具体上机调试掌握整机概念。
3)、在以上实验的基础上再扩展其他的机器指令,并编写相应的微程序,上机调试运行。
意义:
通过本课程设计,加深对计算机组成原理学习知识的升华和理解,使学生掌握计算机硬件系统各功能部件的工作原理、设计和实现方法,加深对计算机软、硬件关系的理解,培养对硬件系统的分析、开发和使用能力,最终达到从系统的角度理解计算机系统的组成原理与内部运行机理,为学习后续专业课程打下良好的基础。
## 2 系统方案设计
### 2.1 系统目标定义
本次课程设计主要实现的是 Openmips 处理器,是一款具有哈佛结构的 32 标量处理器,兼容 MIPS32 Relerase1 指令集的结构,这样的好处是可以使用现有的 mips 编译环境实现,如 GCC 编译器等,具体的设计目标如下:
1)五级整数流水线,分别是:取指、译码、执行、访存、回写
2)哈佛结构,分开的指令、数据结构
3)32 个 32 位整数寄存器
4)大端模式
5)向量化异常处理,支持精确的异常处理
6)支持 6 个外部中断
7)具有 32bit 数据、地址总线宽度
8)能实现单周期乘法
9)支持延迟转移
10)兼容 MIPS32 指令集架构,支持 MIPS32 指令集中的整数指令
11)大多数指令可以在一个时钟周期中完成
### 2.2 系统功能划分与系统组成设计
1、五级流水线的各模块设计说明:
1)取指阶段:
PC 模块:给出指令地址,其中实现指令指正寄存器 PC,该寄存器的值就是指令地址。
IF/ID 模块:实现取指与译码阶段之间的寄存器,将取指阶段的结果在下一个时钟传递到译码阶段。
2)译码阶段:
ID 模块:对指令进行译码,译码结果包括包括运算类型、运算所需要的源操作数,需要写入的目的寄存器的地址等。
Regfile 模块:实现了 32 个 32 位通用整数寄存器,可以同时进行两个寄存器的读写和一个寄存器的写操作。
ID/EX 模块:实现译码阶段与执行阶段之间的寄存器,将译码阶段的结果在下一个时钟周期传递到执行阶段。
3)执行阶段:
EX 模块:根据译码阶段的结果进行指定的运算,给出运算结果。
DIV 模块:进行除法运算的模块。
EX/MEM 模块:实现执行与访存阶段之间的寄存器,将执行阶段的结果在下一个时钟周期传递到访存阶段。
4)访存阶段:
MEM 模块:如果是加载、存储指令,那么会对数据存储器进行访存,此外还会在该模块进行异常判断。
MEM/WB 模块:实现访存与回写阶段之间的寄存器,将访存阶段的结果在下一个时钟周期传递到回写阶段。
5)回写阶段:
CP0 模块:对应 MIPS 结构中的协处理器 CP0
LLbit 模块:实现寄存器 LLbit,在链接加载指令 II,条件存储指令 SC 的处理过程中会用到该寄存器。
HILO 模块:实现寄存器 HI、LO。
2、系统形体结构图:
![](https://www.writebug.com/myres/static/uploads/2021/11/10/1a758a64e3552912aaa8b4c38b7af581.writebug)
图 1 系统整体架构图
![](https://www.writebug.com/myres/static/uploads/2021/11/10/6574c0088fe8ea415c3af77d0b66ae9a.writebug)
图 2 系统流水线架构图
3、五级流水线示意图:
表 1 五级流水线模拟
![](https://www.writebug.com/myres/static/uploads/2021/11/10/d4f2d8dc782a667e5e033ced6ca70db9.writebug)
## 3 子模块详细设计
### 3.1 算术逻辑运算器 ALU 的设计
算术逻辑运算单元(ALU)能够完成较为常用的多种算术运算和逻辑运算,是计算机内部运算器的核心部件,并且被广泛用于信号处理、通信和多媒体信息处理等专用集成电路中。算术逻辑运算单元包括算术运算和逻辑运算,在实际系统中输入数据通常采用补码形式。此次实验的寄存器为 32 位,即一次运算位宽为 32 位,状态标志位 CF、ZF 各 1 位。算术逻辑运算器的控制信号与 MIPS 32 位 CPU 的操作控制字段保持一致。
![](https://www.writebug.com/myres/static/uploads/2021/11/10/2aee7f67e61057cd9db348cb286aedc3.writebug)
图 3 算术逻辑运算器原理框图
表 2 算术逻辑运算功能表
| 指令功能 | 控制信号 func[5:0] | 详细描述 |
| -------- | ------------------ | ------------------------------- |
| add | 100000 | Ra + Rb -> Rd, ZF, CF |
| sub | 100010 | Ra – Rb -> Rd, ZF, CF |
| and | 100100 | Ra & Rb -> Rd, ZF |
| or | 100101 | Ra \| Rb -> Rd, ZF |
| xor | 100110 | Ra ^ Rb -> Rd,ZF |
| sll | 000000 | Rb << Ra[4:0] -> Rd, 左移。 |
| srl | 000010 | Rb >> Ra[4:0] -> Rd, 逻辑右移。 |
| sra | 000011 | 算术右移 |
移位运算说明:将寄存器 Rb 中的 32 位数据,进行左移或右移(逻辑右移或算术右移)。移位位数由 Ra 中低 5 位的数据决定。将移位后的结果写入 Rd 寄存器中。左移时,右部空出位补零。逻辑右移时,左部空出位补零。算术右移时,左部空出位补符号位(最高位)。例如:
左移 Rb = 32’b0110, Ra = 32’b0001, 则运行结果为 Rd = 32’b1100
逻辑右移:Rb = 32’b0110, Ra = 32’b0001, 则运行结果为 Rd = 32’0011
算术右移:Rb=32’h8000_0000, Ra=32’b0001, 则运行结果为 Rd=32’hc000_0000
### 3.2 指令格式和功能详细设计
MIPS 32 位处理器的指令格式分为 R 型、I 型和 J 型。R 型为寄存器型,即两个源操作数和目的操作数都是寄存器性。I 型为操作数含有立即数。而 J 型特指转移类型指令,如图 1 所示。
![](https://www.writebug.com/myres/static/uploads/2021/11/10/20f2ed39310b8ad0718dede6f6a90dd8.writebug)
图 4 MIPS 指令类型
常见的 20 条 MIPS 整数指令:
表 3 20 条 MIP 整数指令
![](https://www.writebug.com/myres/static/uploads/2021/11/10/1936f97b06d5f0d8924b0f00aa2230eb.writebug)
### 3.3 存储器设计
片内存储器分为 RAM 和 ROM 两大类。RAM 是随机存储器,存储单元的内容可按需随意取出或存入。这种存储器在断电后将丢失所有数据,因此一般用来存储一些短时间内使用的程序和数据。
![](https://www.writebug.com/myres/static/uploads/2021/11/10/e483125aac71a68b4f3a72b1be8bc64c.writebug)
图 5 ROM 架构
ROM 即只读存储器,是一种只能读出事先存储的数据的存储器,其特性是存入的数据无法改变。也就是说,这种存储器只能读不能写。由于 ROM 在断电之后数据不会丢失,所以通常用在不需经常变更的电子资料。
通常情况下,存储器系统是按照字节(Byte)编址,但 CPU 访问时,通常按照字(Word)读取,因此地址就有字节地址和字地址的区别。以 32 位处理器为例,如图 2 所示。
![](https://www.writebug.com/myres/static/uploads/2021/11/10/28a9598954c92597da166acc19d7f00c.writebug)
图 6 32 位处理器字节编址与字地址示意图
### 3.4 程序计数器设计
本模块的主要作用是实现指令的取指,给出指令地址。
```verilog
//给出指令地址,其中实现指令指正寄存器PC,该寄存器的值就是指令地址
module pc_reg(
input wire 时钟信号
input wire 复位信号
//来自译码阶段ID模块的信息
input wire 转移指令信号
input wire[`RegBus] 转移指令
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本次课程设计主要实现的是 Openmips 处理器,是一款具有哈佛结构的 32 标量处理器,兼容 MIPS32 Relerase1 指令集的结构,这样的好处是可以使用现有的 mips 编译环境实现,如 GCC 编译器等,具体的设计目标如下: 1)五级整数流水线,分别是:取指、译码、执行、访存、回写 2)哈佛结构,分开的指令、数据结构 3)32 个 32 位整数寄存器 4)大端模式 5)向量化异常处理,支持精确的异常处理 6)支持 6 个外部中断 7)具有 32bit 数据、地址总线宽度 8)能实现单周期乘法 9)支持延迟转移 10)兼容 MIPS32 指令集架构,支持 MIPS32 指令集中的整数指令 11)大多数指令可以在一个时钟周期中完成
资源推荐
资源详情
资源评论
收起资源包目录
100013168-基于Verilog实现mips五级流水线CPU设计.zip (4个子文件)
fivecpu
FPGA模型机课程设计.doc 1.18MB
LICENSE 11KB
cpu.v 80KB
README.md 12KB
共 4 条
- 1
资源评论
- qq_422361152023-11-11资源内容详尽,对我有使用价值,谢谢资源主的分享。
- guangcheng12342024-03-14内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
神仙别闹
- 粉丝: 2671
- 资源: 7640
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功