Skip to content

单周期 MIPS32 CPU 课程设计

项目简介

本项目实现了一个基于 MIPS32 精简指令集的单周期 CPU,支持 10 条指令,能够执行斐波那契数列计算程序。

文件结构

.
├── README.md                      # 本文件
├── CPU设计说明文档.md              # 详细设计文档
├── 斐波那契数列运行指标说明.md      # 波形观察指南
├── run.bat                        # Windows 运行脚本
├── cpu_top.v                      # CPU 顶层模块
├── pc_register.v                  # PC 寄存器
├── instruction_memory.v           # 指令存储器
├── control_unit.v                 # 控制单元
├── register_file.v                # 寄存器文件
├── alu_control.v                  # ALU 控制单元
├── alu.v                          # 算术逻辑单元
├── data_memory.v                  # 数据存储器
└── testbench.v                    # 测试平台

快速开始

环境要求

  • 仿真工具:iverilog + gtkwave
  • FPGA 工具(可选):Vivado(用于 FPGA 综合和下载)

运行仿真

Windows 系统

run.bat

查看波形

gtkwave cpu_test.vcd

支持的指令

指令 类型 功能
add R-type 寄存器加法
sub R-type 寄存器减法
and R-type 按位与
or R-type 按位或
slt R-type 小于则置位
lw I-type 从内存加载字
sw I-type 向内存存储字
beq I-type 相等则分支
addi I-type 立即数加法
j J-type 无条件跳转

测试程序

预装载的测试程序计算斐波那契数列的前 10 项:

fib[0] = 0
fib[1] = 1
fib[2] = 1
fib[3] = 2
fib[4] = 3
fib[5] = 5
fib[6] = 8
fib[7] = 13
fib[8] = 21
fib[9] = 34

结果存储在数据内存的 0x100-0x124 地址。

预期输出

运行仿真后,终端会显示:

========================================
斐波那契数列计算完成
========================================
存储在内存中的斐波那契数列:
fib[0] = 0 (地址 0x100)
fib[1] = 1 (地址 0x104)
fib[2] = 1 (地址 0x108)
fib[3] = 2 (地址 0x10C)
fib[4] = 3 (地址 0x110)
fib[5] = 5 (地址 0x114)
fib[6] = 8 (地址 0x118)
fib[7] = 13 (地址 0x11C)
fib[8] = 21 (地址 0x120)
fib[9] = 34 (地址 0x124)
========================================
✓ 测试通过!斐波那契数列计算正确。
========================================

Vivado 工程创建

  1. 打开 Vivado,选择 "Create Project"
  2. 添加所有 .v 文件(除了 testbench.v
  3. 设置 cpu_top.v 为顶层模块
  4. 根据目标 FPGA 开发板添加约束文件
  5. 运行综合(Synthesis)
  6. 运行实现(Implementation)
  7. 生成比特流(Generate Bitstream)
  8. 下载到 FPGA

文档说明

  • CPU 设计说明文档.md:包含完整的模块功能说明、引脚定义、数据通路设计等
  • 斐波那契数列运行指标说明.md:详细说明如何在波形中观察和验证程序执行

技术指标

  • 架构:单周期 CPU
  • 数据宽度:32 位
  • 指令数量:10 条
  • 寄存器数量:32 个
  • 指令存储:128 条指令(512 字节)
  • 数据存储:256 个字(1KB)
  • 时钟频率:100MHz(仿真)

文件列表