引言:把一颗小处理器跑起来
RISC-V 这几年热度很高,原因不复杂:指令集开源,扩展也灵活,做实验和做产品都不容易被授权成本卡住。对硬件工程师来说,它最有价值的地方不在'新',而在于足够适合拿来把一整条设计链路走一遍:需求分析、RTL 设计、仿真、综合、上板验证,哪一步都绕不开。
这篇记录以 Xilinx Vivado 2025 工具链和蜂鸟 E203 作为参考,目标是做一个基于 RV32I 的五级流水线 32 位处理器核,并在 Artix-7 FPGA 上跑通。重点不在炫复杂度,而在把最基础的那部分做扎实:能算、能访存、能分支、能验证。
项目目标与技术栈
- 核心目标:基于 RISC-V RV32I 指令集,设计支持五级流水线的 32 位处理器核,实现基础算术运算、逻辑操作及访存功能,并在 Xilinx Artix-7 FPGA 开发板验证。
- 工具链:Xilinx Vivado 2025(逻辑设计、综合实现)、ModelSim(功能仿真)、Xilinx Artix-7 XC7A35T FPGA 开发板(硬件验证)。
- 参考案例:蜂鸟 E203 处理器(芯来科技开源 RISC-V 核,已在 Xilinx FPGA 上完成移植验证,最高运行频率 50MHz)。
数字系统设计:先定边界,再谈结构

需求分析与指标
先把能做什么、做到什么程度说清楚,否则后面很容易把验证目标越拉越散。这里围绕 RV32I 的基础子集定了几个边界:
- 功能需求:支持
add/sub算术指令、and/or逻辑指令、lw/sw访存指令及beq分支指令。 - 性能指标:时钟频率≥50MHz,CPI(指令周期数)=1(理想流水线状态),数据通路位宽 32 位。
- 资源约束:Xilinx Artix-7 XC7A35T 资源上限(LUT≤5200,触发器≤10400,BRAM≤640KB)。
五级流水线怎么拆
这里采用经典的数据通路和控制单元分离方案,流水线分成 IF、ID、EX、MEM、WB 五级。结构图如下:

每一级的职责比较明确:
- 取指阶段(IF):PC 寄存器给出下一条指令地址,指令 ROM 读出 32 位指令。
- 译码阶段(ID):解析 opcode 和寄存器地址,读取寄存器堆,顺手把立即数也生成出来。
- 执行阶段(EX):ALU 做运算,分支逻辑判断跳转条件。
- 访存阶段(MEM):处理
lw/sw的数据读写。 - 写回阶段(WB):把结果写回寄存器堆,同时配合前推逻辑处理 RAW 冒险。
模块怎么切
模块划分上,没必要追求'看起来很完整',能维护、能替换更重要。最后拆成了 8 个核心模块:
| 模块名称 | 功能描述 | 接口标准化 |
|---|---|---|
pc_reg | 程序计数器,生成指令地址 |



