图书目录

目录

第1部分  计算机系统I——单周期CPU设计 ......................................................................................  1

第1章  SysI-Lab1实验准备  ......................................................................................  3

1.1实验工具 ......................................................................................  3

1.2背景知识 

......................................................................................... 4 

1.2.1 

FPGA的发展历程................................................................. 4 

1.2.2 

Verilog基础知识 ................................................................... 6 

1.3实验环境配置 

.................................................................................12 

1.3.1 

Linux环境配置 ....................................................................12 

1.3.2 

SPICE仿真反相器 ...............................................................13 

1.3.3 

Logisim电路仿真 .................................................................15 

1.4 

Verilator仿真测试 ..........................................................................16 

1.5 

Vivado操作流程.............................................................................18 

1.5.1 FPGA上的 Verilog实践.......................................................28 

1.

5.2以二选一多路选择器为例 ......................................................35 思考及练习 ............................................................................................36

第 2章 SysI-Lab2多路选择器 ..................................................................38 

2.1实验工具 

........................................................................................38 

2.

2多路选择器设计 ..............................................................................38 

2.2.1基本概念

..............................................................................38 

2.

2.2电路级别的实现....................................................................39 

2.

2.3四路选择器的实现 ................................................................39 

2.3实验步骤 

........................................................................................41 思考及练习 ............................................................................................41

第 3章 SysI-Lab3七段数码管 ..................................................................42 

3.1实验工具 

........................................................................................42 

3.2背景知识 

........................................................................................42 

3.

2.1复合多路选择器....................................................................42 

3.2.2译码器 

.................................................................................43 

计算机系统贯通课程实践教材(RISC-V架构) 

3.2.3时钟分频器 ..........................................................................43 

3.2.4 NEXYS A7-100T七段管 ......................................................43 

3.3实验步骤 ........................................................................................45 思考及练习 ............................................................................................46

第 4章 SysI-Lab4全加减法器 ..................................................................47 

4.1实验工具 ........................................................................................47 

4.2加法器设计.....................................................................................47 

4.2.1加法器实验原理....................................................................47 

4.2.2加法器实验步骤....................................................................50 

4.3加减法器设计 .................................................................................51 

4.3.1加减法器实验原理 ................................................................51 

4.3.2 64b加减法器实验步骤 ..........................................................52 思考及练习 ............................................................................................52

第 5章 SysI-Lab5时序电路设计 ...............................................................53 

5.1实验工具 ........................................................................................53 

5.2时序电路设计基础...........................................................................53 

5.2.1有限状态机 ..........................................................................53 

5.2.2计数器 .................................................................................55 

5.2.3分频器 .................................................................................55 

5.3计时器设计.....................................................................................56 

5.3.1 4位二进制计数器 .................................................................56 

5.3.2 2位 BCD码计数器 ..............................................................57 

5.3.3计时器实验步骤....................................................................57 

5.4乘法器设计.....................................................................................58 

5.4.1乘法器实验原理....................................................................58 

5.4.2 Booth算法 ..........................................................................60 

5.4.3乘法器实验步骤....................................................................61 思考及练习 ............................................................................................62

第 6章 SysI-Lab6卷积核实现 ..................................................................63 

6.1实验工具 ........................................................................................63 

6.2背景知识 .......................................................................................63 

6.2.1移位寄存器 ..........................................................................63 

6.2.2 SystemVerilog语法...............................................................64 

6.2.3 Ready-Valid握手 .................................................................66 

6.3实验原理 ........................................................................................67 

7.5.1理解跳转表 ..........................................................................86 

7.5.2回顾冒泡排序算法 ................................................................87 

7.5.3理解简单 RISC-V程序 .........................................................87 

7.5.4理解递归汇编程序 ................................................................88 

7.5.5理解 switch语句产生的跳转表 ..............................................89 

7.6实验步骤 ........................................................................................90 

7.6.1冒泡排序的汇编实现 .............................................................90 

7.6.2斐波那契数列的汇编实现 ......................................................90 

7.6.3通过调试破解密钥 ................................................................91 

7.6.4 RISC-V Binary Bomb...........................................................92 思考及练习 ............................................................................................93

第 8章 SysI-Lab8单周期 CPU设计........................................................94 

8.1实验工具 ........................................................................................94 

8.2背景知识 ........................................................................................94 

8.2.1 RISC-V指令格式 .................................................................94 

8.2.2数据通路..............................................................................95 

8.2.3控制单元..............................................................................97 

8.3 RISC-V基础指令 ......................................................................... 101 

8.4实验原理 ...................................................................................... 114 

8.4.1 Memory设计 ..................................................................... 114 

8.4.2数据通路设计 ..................................................................... 116 

数据冒险............................................................................ 

9.3.2实现暂停机制 ..................................................................... 128 

9.4 DRAM和 BRAM的区别.............................................................. 128 

9.5 BRAM的使用.............................................................................. 129 

9.6实验目标 ...................................................................................... 130 

9.7实验步骤 ...................................................................................... 131 思考及练习 .......................................................................................... 132

第 10章 SysII-Lab2流水线冒险的解决.................................................... 133 

10.1实验工具 .................................................................................... 133 

10.2实验原理 .................................................................................... 133 

10.2.1流水线的旁路机制 ........................................................... 133 

10.2.2 Axi-lite总线协议 ............................................................ 134 

10.3实验步骤 .................................................................................... 136 思考及练习 .......................................................................................... 136

第 11章 SysII-Lab3卷积加速器.............................................................. 137 

11.1实验工具 .................................................................................... 137 

11.2实验原理 .................................................................................... 137 

11.2.1外设编程接口.................................................................. 137 

11.2.2 MMIO机制及定义 .......................................................... 138 

11.2.3卷积加速器的 I/O映射及操作 ......................................... 139 

实验工具 .................................................................................... 

13.2背景知识 .................................................................................... 150 

13.2.1 RISC-V中的中断和异常.................................................. 150 

13.2.2上下文处理 ..................................................................... 152 

13.2.3异常处理程序和时钟中断 ................................................. 152 

13.3实验步骤 .................................................................................... 152 

13.3.1准备工程 ........................................................................ 152 

13.3.2开启异常处理.................................................................. 154 

13.3.3实现上下文切换 .............................................................. 155 

13.3.4实现异常处理函数 ........................................................... 156 

13.3.5实现时钟中断相关函数 .................................................... 156 

13.3.6实验样例 ........................................................................ 157 思考及练习 .......................................................................................... 157

第 14章 SysII-Lab6异常流水线.............................................................. 158 

14.1实验工具 .................................................................................... 158 

14.2实验原理 .................................................................................... 158 

14.2.1 RISC-V特权级 ............................................................... 158 

14.2.2控制和状态寄存器 ........................................................... 158 

14.2.3异常和中断 ..................................................................... 159 

14.3异常流水线设计 .......................................................................... 162 

14.3.1实现 CSR指令................................................................ 162 

15.3.4实验样例 ........................................................................ 174 思考及练习 .......................................................................................... 176

第 16章 SysII-Lab8软硬件协同的尝试.................................................... 177 

16.1实验工具 .................................................................................... 177 

16.2实验原理 .................................................................................... 177 

16.2.1整体架构设计.................................................................. 177 

16.2.2硬件外围设计.................................................................. 178 

16.3编译内核 .................................................................................... 178 

16.4外围准备 .................................................................................... 179 

16.4.1 Bootloader代码 .............................................................. 179 

16.4.2生成下板代码.................................................................. 180 

16.4.3建立工程文件.................................................................. 180 

16.4.4观察下板现象.................................................................. 181 

16.4.5 Vivado仿真运行 ............................................................. 182 

16.5实验步骤 .................................................................................... 182 思考及练习 .......................................................................................... 182

第 3部分计算机系统 III——定制化内核 + CPU综合设计 .............183

第 17章 SysIII-Lab1动态分支预测 ......................................................... 185 

17.1实验工具 .................................................................................... 185 

18.2.4 Cache与 Memory的数据传输.......................................... 196 

18.3 Cache控制逻辑 .......................................................................... 198 

18.3.1初始化 IDLE状态........................................................... 199 

18.3.2读事务执行 READ状态 .................................................. 199 

18.3.3写事务执行 WRITE状态 ................................................ 200 

18.4 Cache的完整结构 ....................................................................... 201 

18.5实验步骤 .................................................................................... 203 

18.5.1实验目标 ........................................................................ 203 

18.5.2仿真测试 ........................................................................ 204 

18.5.3上板验证 ........................................................................ 205 思考及练习 .......................................................................................... 205

第 19章 SysIII-Lab3 RV64虚拟内存管理 ............................................... 206 

19.1实验工具 .................................................................................... 206 

19.2虚拟内存布局.............................................................................. 206 

19.3 SATP寄存器.............................................................................. 207 

19.4虚实地址转换.............................................................................. 208 

19.4.1虚拟地址和物理地址........................................................ 208 

19.4.2 RISC-V Sv39模式页表项 ................................................ 208 

19.4.3 RISC-V地址转换............................................................ 209 

19.5实验步骤 .................................................................................... 209 

20.4.3中断处理 ........................................................................ 221 

20.4.4添加系统调用.................................................................. 223 

20.4.5修改内核启动.................................................................. 223 

20.4.6编译及测试 ..................................................................... 223 思考及练习 .......................................................................................... 224

第 21章 SysIII-Lab5 RV64缺页异常处理 ............................................... 225 

21.1实验工具 .................................................................................... 225 

21.2背景知识 .................................................................................... 225 

21.2.1虚拟内存管理.................................................................. 225 

21.2.2缺页异常 ........................................................................ 226 

21.3实验步骤 .................................................................................... 227 

21.3.1准备工程 ........................................................................ 227 

21.3.2实现虚拟内存管理 ........................................................... 228 

21.3.3任务初始化 ..................................................................... 230 

21.3.4实现缺页异常处理 ........................................................... 230 

21.3.5编译及测试 ..................................................................... 231 思考及练习 .......................................................................................... 232

第 22章 SysIII-Lab6 fork机制............................................................... 233 

22.1实验工具 .................................................................................... 233 

22.2 fork基础知识 ............................................................................. 233 

23.2.1 RISC-V Sv39分页模式.................................................... 241 

23.2.2 Axi-lite总线模型 ............................................................ 243 

23.2.3 MMU模块 ..................................................................... 243 

23.3实验步骤 .................................................................................... 244 

23.3.1实验目标 ........................................................................ 244 

23.3.2仿真测试 ........................................................................ 244 

23.3.3上板验证 ........................................................................ 244 思考及练习 .......................................................................................... 244

第 24章 SysIII-Lab8完成自己的计算机系统 ............................................ 245 

24.1实验工具 .................................................................................... 245 

24.2实验目标 .................................................................................... 245 

24.3实验原理 .................................................................................... 246 

24.3.1用户态实现及中断完善 .................................................... 246 

24.3.2地址转换后备缓冲器........................................................ 246 

24.3.3 MMIO与外设................................................................. 247 

24.4设计范例 .................................................................................... 247 

24.4.1范例一:指令集扩展........................................................ 247 

24.4.2范例二:运行较为完善的 Kernel ...................................... 252 思考及练习 .......................................................................................... 259 

第4部分  附录及常见问题..................................  261

附录A  硬件描述语言常见语句及电路图 ..................................263

附录B  配置IP核..................................275

附录C  常见问题..................................287

参考文献..................................294