- 原始仓库:https://gitee.com/kevenge/GeMIPS
- 镜像仓库:https://github.com/KevenGe/GeMIPS
- Vivado 2019.2 可直接打开的项目:https://gitee.com/kevenge/GeMIPS/releases/v0.4
😄😄😄最近了看到了806师弟们的一些关于龙芯杯的相关比赛成就(第八届全国大学生计算机系统能力培养大赛(龙芯杯)和第四届全国大学生计算机系统能力大赛(操作系统设计赛)),感慨万分,虽不曾谋面,祝所有的师弟师妹们都能够取得更好的成就!
本项目是 2020 年全国计算机系统能力大赛个人赛的参赛代码,关于该比赛的详细信息可以访问计算机系统能力大赛
本项目是使用 Verilog 语言编写的基于 MIPS 指令集的 CPU。本项目目前支持 MIPS 的 22 条指令,并且通过 FPGA 上板测试。
序号 | 指令 | 编码 |
---|---|---|
1 | ADDIU |
001001ssssstttttiiiiiiiiiiiiiiii |
2 | ADDU |
000000ssssstttttddddd00000100001 |
3 | AND |
000000ssssstttttddddd00000100100 |
4 | ANDI |
001100ssssstttttiiiiiiiiiiiiiiii |
5 | BEQ |
000100ssssstttttoooooooooooooooo |
6 | BGTZ |
000111sssss00000oooooooooooooooo |
7 | BNE |
000101ssssstttttoooooooooooooooo |
8 | J |
000010iiiiiiiiiiiiiiiiiiiiiiiiii |
9 | JAL |
000011iiiiiiiiiiiiiiiiiiiiiiiiii |
10 | JR |
000000sssss0000000000hhhhh001000 |
11 | LB |
100000bbbbbtttttoooooooooooooooo |
12 | LUI |
00111100000tttttiiiiiiiiiiiiiiii |
13 | LW |
100011bbbbbtttttoooooooooooooooo |
14 | MUL |
011100ssssstttttddddd00000000010 |
15 | OR |
000000ssssstttttddddd00000100101 |
16 | ORI |
001101ssssstttttiiiiiiiiiiiiiiii |
17 | SB |
101000bbbbbtttttoooooooooooooooo |
18 | SLL |
00000000000tttttdddddaaaaa000000 |
19 | SRL |
00000000000tttttdddddaaaaa000010 |
20 | SW |
101011bbbbbtttttoooooooooooooooo |
21 | XOR |
000000ssssstttttddddd00000100110 |
22 | XORI |
001110ssssstttttiiiiiiiiiiiiiiii |
本项目在项目中的评测性能主要是性能测试,在功能测试以及性能测试通过的前提下,执行时间越短便具有越高的性能。
性能测试的三个测试可以在supervisor_v2.01
中的supervisor_v2.01\kernel\kern\test.s
找到对应的MIPS汇编代码。
决赛任务的测试结果
- 项目采用五级流水线架构
- 项目采用单发射机制
- 完成基本指令
- 具有比较详细的注释(中间由于一些原因,造成了一些注释乱码,后期未有精力进行修改)
- 具有良好的公开串口通信代码,并且在本项目测试可用
注意,本项目使用Vivado 2019.2 进行构建,并且本仓库只包括重要的源代码部分,如果需要使用,请先建立好项目,再复制本代码。
D:.
├─constrs_1 # 限制
│ └─new
├─sim_1 # 仿真
│ ├─imports
│ └─new
│ └─include
└─sources_1 # Verilog源代码
├─GeMIPS
│ ├─EX # 执行
│ ├─ID # 译指
│ ├─IF # 取指
│ ├─include # 全局文件(包含宏定义)
│ ├─MEM # 访存
│ └─WB # 写回
├─ip
│ ├─ila_0 # IP核,JTAG远程调试使用
│ │ ├─doc
│ │ ├─hdl
│ │ │ └─verilog
│ │ ├─ila_v6_2
│ │ │ └─constraints
│ │ ├─sim
│ │ └─synth
│ └─pll_example
│ └─doc
└─new
- 使用Vivado在本地创建好项目
- 复制本项目代码到
src
目录 - 设置
include.v
为全局文件 - 设置
thinktop.v
为顶层文件
USTB - KevenGe
QQ Mail: 1985996902@qq.com
在完成本项目的时候,通过雷思磊的《自己动手写 CPU》进行了前期的分析以及测试,特此感谢。
同时也非常感谢龙芯带来的竞赛支持,促使本人提升了个人能力。
GPL 3.0