用RISC-V搭建你的第一个软核CPU

📚 共计 30 章节
01
RISC-V 是什么
RISC-V 的起源与哲学 · 开源指令集架构的优势 · 与ARM/x86对比
哲学对比
02
搭建开发环境
安装 Verilator, GTKWave, RISC-V GCC · 第一个仿真测试
工具链仿真
03
数字电路基础回顾
组合逻辑与时序逻辑 · 触发器与寄存器 · 时钟与复位
组合时序
04
硬件描述语言入门 (Verilog)
模块与端口 · assign & always · 阻塞与非阻塞赋值
VerilogHDL
05
ALU 算术逻辑单元设计
加法器/减法器 · 逻辑运算 · 移位操作
运算核心
06
寄存器堆 (Register File) 设计
双端口读 · 单端口写 · 同步写异步读
存储读写
07
程序计数器 (PC) 设计
递增逻辑 · 跳转与分支更新
PC分支
08
指令存储器 (IMEM) 设计
只读存储器模型 · 初始化与加载程序
IMEM加载
09
数据存储器 (DMEM) 设计
同步读写 RAM · 字节使能信号
DMEM字节
10
RISC-V 指令集概述
RV32I 基础整数指令 · R/I/S/B/U/J 格式
指令格式RV32I
11
指令译码器 (Decoder) 设计
解析 opcode, funct3, funct7 · 生成控制信号
译码控制
12
单周期 CPU 数据通路
取指 · 译码 · 执行 · 访存 · 写回五阶段连线
通路单周期
13
单周期 CPU 控制器设计
主控状态机 · ALU控制 · 写使能
控制器状态机
14
单周期 CPU 整体集成与仿真
连接所有模块 · 运行测试程序
集成仿真
15
流水线 CPU 概念
IF/ID/EX/MEM/WB 五级划分 · 吞吐率与延迟
流水线性能
16
流水线寄存器设计
IF/ID, ID/EX, EX/MEM, MEM/WB 实现
寄存器级间
17
数据冒险与 forwarding
数据相关检测 · 前递通路 · load-use 处理
冒险转发
18
控制冒险与分支预测
流水线冲刷 · 静态/动态分支预测
分支预测
19
流水线 CPU 集成与调试
整合流水线模块 · 波形调试冒险
调试波形
20
异常与中断机制
ecall/ebreak · CSR寄存器 · 异常处理流程
异常CSR
21
CSR 模块设计
CSR读写指令 · 机器模式特权级
CSR特权
22
乘法与除法扩展 (M 扩展)
乘除指令硬件 · 多周期运算单元
M扩展运算
23
总线与外设接口
内存映射I/O · AXI4-Lite简介 · 读写时序
总线外设
24
GPIO 外设设计
通用输入输出 · 输出/输入寄存器 · LED控制
GPIOLED
25
UART 串口通信设计
UART协议 · 波特率发生器 · 发送/接收器
UART串口
26
定时器 (Timer) 设计
计数器 · 比较器 · 中断产生逻辑
定时器中断
27
SoC 系统集成
CPU + 总线 + 外设 (GPIO/UART/Timer) 连接
SoC集成
28
编译与运行 C 程序
RISC-V GCC 编译 · 链接脚本 · 启动代码 crt0
C语言编译
29
FPGA 原型验证
综合到FPGA · 约束文件 · 上板运行与调试
FPGA验证
30
性能优化与未来方向
关键路径 · 多发射/乱序 · 自定义指令扩展
优化扩展