更新时间:2024-09-11 16:20:15
封面
版权信息
作者简介
序
前言
第1章 CPU芯片研发过程概述
1.1 处理器和处理器核
1.2 芯片产品的研制过程
1.3 芯片设计的工作阶段
第2章 硬件实验平台及FPGA设计流程
2.1 硬件实验平台
2.1.1 龙芯CPU设计与体系结构教学实验系统
2.1.2 龙芯普及型系统能力培养远程实验平台
2.2 FPGA的设计流程
2.2.1 FPGA的一般设计流程
2.2.2 基于Vivado的FPGA实现流程
2.2.3 Vivado使用小贴士
2.3 任务与实践
2.3.1 本书配套实验环境
2.3.2 实践任务1:跑马灯
第3章 数字逻辑电路设计基础
3.1 数字逻辑电路设计与Verilog代码开发
3.1.1 面向硬件电路的设计思维方式
3.1.2 自顶向下的设计划分过程
3.1.3 行为描述的Verilog编程风格
3.1.4 常用数字逻辑电路的Verilog描述
3.2 数字逻辑电路功能仿真的常见错误及调试方法
3.2.1 功能仿真波形分析
3.2.2 波形异常类错误的调试
3.3 任务与实践
3.3.1 实践任务2:寄存器堆仿真
3.3.2 实践任务3:同步RAM和异步RAM仿真、综合与实现
3.3.3 实践任务4:数字逻辑电路的设计与调试
第4章 单周期CPU设计
4.1 设计一个5条指令的单周期CPU
4.1.1 设计CPU的总体思路
4.1.2 5条指令单周期CPU数据通路设计
4.1.3 5条指令单周期CPU控制信号生成
4.2 验证5条指令的单周期CPU
4.2.1 5条指令单周期CPU实验开发环境快速上手
4.2.2 minicpu_env实验开发环境组织结构介绍
4.2.3 功能仿真验证
4.3 设计一个20条指令的单周期CPU
4.3.1 新增ALU类指令的数据通路设计
4.3.2 新增Branch类指令的数据通路设计
4.3.3 新增指令后控制信号的调整
4.4 验证20条指令的单周期CPU
4.4.1 mycpu_env实验开发环境组织结构介绍
4.4.2 基于trace比对的调试框架
4.4.3 func功能测试程序
4.4.4 基于mycpu_env实验开发环境的实验流程
4.4.5 mycpu_env实验开发环境使用进阶
4.5 CPU设计实验功能仿真调试技术
4.5.1 为什么要用基于trace比对的调试辅助手段
4.5.2 基于trace比对调试手段的“盲区”及对策
4.5.3 学会阅读汇编程序和反汇编代码
4.6 任务与实践
4.6.1 实践任务5:5条指令单周期CPU
4.6.2 实践任务6:20条指令单周期CPU
第5章 简单流水线CPU设计
5.1 不考虑相关冲突的流水线CPU设计
5.1.1 添加流水级间缓存
5.1.2 同步读RAM的引入
5.1.3 调整更新PC的数据通路
5.1.4 不考虑相关冲突情况下流水线控制信号的设计
5.1.5 复位的处理
5.2 指令相关与流水线冲突
5.2.1 处理寄存器写后读数据相关引发的流水线冲突
5.2.2 处理控制相关
5.3 流水线数据前递设计
5.3.1 前递的数据通路设计
5.3.2 前递的流水线控制信号调整
5.3.3 前递引发的主频下降
5.4 CPU设计实验功能仿真调试技术进阶
5.4.1 valid和PC信号不能少
5.4.2 各流水线信号分组有序摆放
5.4.3 先遍历指令再遍历流水线
5.5 任务与实践
5.5.1 实践任务7:不考虑相关引发的冲突的简单流水线CPU
5.5.2 实践任务8:阻塞技术解决相关引发的冲突
5.5.3 实践任务9:前递技术解决相关引发的冲突
第6章 在流水线中添加普通用户态指令
6.1 算术逻辑运算类指令的添加
6.1.1 slti和sltui指令的添加
6.1.2 andi、ori和xori指令的添加
6.1.3 sll.w、srl.w和sra.w指令的添加
6.1.4 pcaddu12i指令的添加
6.2 乘除法运算类指令的添加
6.2.1 调用Xilinx IP实现乘除法运算部件
6.2.2 电路级实现乘法器
6.2.3 电路级实现除法器
6.3 转移指令的添加
6.4 访存指令的添加
6.4.1 ld.b、ld.h、ld.bu、ld.hu指令的添加
6.4.2 st.b、st.h指令的添加
6.5 任务与实践
6.5.1 实践任务10:算术逻辑运算指令和乘除法运算指令添加
6.5.2 实践任务11:转移指令和访存指令添加
第7章 异常和中断的支持
7.1 异常和中断的基本概念