自己动手写处理器开篇介绍
2014-07-04 11:52
176 查看
将陆续上传本人写的新书《自己动手写处理器》(尚未出版),今天是开篇,我尽量每周四篇
内容简介
本书使用Verilog HDL设计实现了一款兼容MIPS32指令集架构的处理器——OpenMIPS。OpenMIPS处理器具有两个版本,分别是教学版和实践版。教学版的主要设想是尽量简单,处理器的运行情况比较理想化,与教科书相似,便于使用其进行教学、学术研究和讨论,也有助于学生理解课堂上讲授的知识。实践版的设计目标是能完成特定功能,发挥实际作用。
全书分为三部分。第一部分是理论篇,介绍了指令集架构、Verilog HDL的相关知识。第二部分是基础篇,采用增量模型,实现了教学版OpenMIPS处理器。首先实现了仅能执行一条指令的处理器,从这个最简单的情况出发,通过依次添加实现逻辑操作指令、移位操作指令、空指令、移动操作指令、算术操作指令、转移指令、加载存储指令、协处理器访问指令、异常相关指令,最终实现了教学版OpenMIPS处理器。第三部分是进阶篇,通过为教学版OpenMIPS添加Wishbone总线接口,从而实现了实践版OpenMIPS处理器,并与SDRAM控制器、GPIO模块、Flash控制器、UART控制器、Wishbone总线互联矩阵等模块组成一个小型SOPC,然后下载到FPGA芯片以验证实现效果,最后为实践版OpenMIPS处理器移植了嵌入式实时操作系统μC/OS-II。
目录如下:
1.2 架构与指令集
1.3 MIPS指令集架构的演变
1.4 MIPS32指令集架构简介
1.5 本书的目标与组织方式
2.2 基于PLD的数字系统设计流程
2.3 Verilog HDL简介
2.4 Verilog HDL中模块的结构
2.5 Verilog HDL基本要素
2.6 Verilog HDL行为语句
2.7电路设计举例
2.8 仿真
2.9 本章小结
3.2 教学版OpenMIPS处理器接口
3.3 文件说明
3.4 实现方法
4.2 流水线结构的建立
4.3 验证OpenMIPS实现效果
4.4 MIPS编译环境的建立
4.5 第一条指令实现小结
5.2 OpenMIPS对数据相关问题的解决措施
5.3 测试数据相关问题解决效果
5.4 逻辑、移位操作与空指令说明
5.5 修改OpenMIPS以实现逻辑、移位操作与空指令
5.6 测试程序1——测试逻辑操作实现效果
5.7 测试程序2——测试移位操作与空指令实现效果
5.8 小结
6.2 移动操作指令实现思路
6.3 修改OpenMIPS以实现移动操作指令
6.4 测试程序
7.2 简单算术操作指令实现思路
7.3 修改OpenMIPS以实现简单算术操作指令
7.4 测试简单算术操作指令实现效果
7.5 流水线暂停机制的设计与实现
7.6 乘累加、乘累减指令说明
7.7 乘累加、乘累减指令实现思路
7.8 修改OpenMIPS以实现乘累加、乘累减指令
7.9 测试乘累加、乘累减指令实现效果
7.10 除法指令说明
7.11 除法指令实现思路
7.12 修改OpenMIPS以实现除法指令
7.13 测试除法指令实现效果
7.14 数据流图的修改
8.2 转移指令说明
8.3 转移指令实现思路
8.4 修改OpenMIPS以实现转移指令
8.5 测试转移指令的实现效果
9.2 加载存储指令实现思路
9.3 修改OpenMIPS以实现加载存储指令
9.4 修改最小SOPC
9.5 测试程序
9.6 链接加载指令ll、条件存储指令sc说明
9.7 ll、sc指令实现思路
9.8 修改OpenMIPS以实现ll、sc指令
9.9 测试ll、sc指令实现效果
9.10 load相关问题
9.11 修改OpenMIPS以解决load相关问题
9.12 测试load相关问题解决效果
9.13 小结
10.2 协处理器CP0中的寄存器
10.3 协处理器CP0的实现
10.4 协处理器访问指令说明
10.5 协处理器访问指令实现思路
10.6 修改OpenMIPS以实现协处理器访问指令
10.7 测试程序
11.2 精确异常
11.3 异常处理过程
11.4 异常相关指令介绍
11.4.1 自陷指令
11.4.2 系统调用指令syscall
11.4.3 异常返回指令eret
11.5 异常处理实现思路
11.6 修改OpenMIPS以实现异常处理
11.7 再次修改最小SOPC
11.8 测试程序
11.9 教学版OpenMIPS处理器实现小结
12.2 Wishbone总线介绍
12.3 实践版OpenMIPS处理器接口
12.4 实践版OpenMIPS处理器的实现思路
12.5 从教学版OpenMIPS到实践版OpenMIPS
12.6 实践版OpenMIPS处理器实现小结
13.2 Wishbone总线互联矩阵WB_CONMAX
13.3 GPIO
13.4 UART控制器
13.5 Flash控制器
13.6 SDRAM控制器
13.7 实现基于实践版OpenMIPS的小型SOPC
13.8 本章小结
14.2 测试需要的硬件连接
14.3 QuartusII工程建立
14.4 测试步骤说明
14.5 测试一——GPIO实验
14.6 测试二——UART实验
14.7 测试三——模拟操作系统的加载过程
14.8 本章小结
15.2 嵌入式实时操作系统介绍
15.3 μC/OS-II简介
15.4 μC/OS-II特点
15.5 μC/OS-II的几个概念
15.6 μC/OS-II的基本功能
15.7 μC/OS-II的文件体系
15.8 μC/OS-II的移植条件
15.9 C语言中使用汇编代码
15.10 MIPS函数调用规范
15.11 μC/OS-II在OpenMIPS处理器上的移植
15.12 测试程序
15.13 编译指示文件的建立
15.14 OpenMIPS处理器运行移植后的μC/OS-II
15.15 本章小结
A.2 IF/ID模块接口说明
A.3 ID模块接口说明
A.4 Regfile模块接口说明
A.5 ID/EX模块接口说明
A.6 EX模块接口说明
A.7 DIV模块接口说明
A.8 EX/MEM模块接口说明
A.9 MEM模块接口说明
A.10 MEM/WB模块接口说明
A.11 CP0模块接口说明
A.12 LLbit模块接口说明
A.13 HILO模块接口说明
A.14 CTRL模块接口说明
B.2 移位操作指令
B.3 移动操作指令
B.4 算术操作指令
B.5 转移指令
B.6 加载存储指令
B.7 协处理器访问指令
B.8 异常相关指令
B.9 空指令及其它指令
欢迎各位观众吐槽,下周一正式开讲!
内容简介
本书使用Verilog HDL设计实现了一款兼容MIPS32指令集架构的处理器——OpenMIPS。OpenMIPS处理器具有两个版本,分别是教学版和实践版。教学版的主要设想是尽量简单,处理器的运行情况比较理想化,与教科书相似,便于使用其进行教学、学术研究和讨论,也有助于学生理解课堂上讲授的知识。实践版的设计目标是能完成特定功能,发挥实际作用。
全书分为三部分。第一部分是理论篇,介绍了指令集架构、Verilog HDL的相关知识。第二部分是基础篇,采用增量模型,实现了教学版OpenMIPS处理器。首先实现了仅能执行一条指令的处理器,从这个最简单的情况出发,通过依次添加实现逻辑操作指令、移位操作指令、空指令、移动操作指令、算术操作指令、转移指令、加载存储指令、协处理器访问指令、异常相关指令,最终实现了教学版OpenMIPS处理器。第三部分是进阶篇,通过为教学版OpenMIPS添加Wishbone总线接口,从而实现了实践版OpenMIPS处理器,并与SDRAM控制器、GPIO模块、Flash控制器、UART控制器、Wishbone总线互联矩阵等模块组成一个小型SOPC,然后下载到FPGA芯片以验证实现效果,最后为实践版OpenMIPS处理器移植了嵌入式实时操作系统μC/OS-II。
目录如下:
第一部分——理论篇
第1章 处理器与MIPS
1.1 计算机的简单模型1.2 架构与指令集
1.3 MIPS指令集架构的演变
1.4 MIPS32指令集架构简介
1.5 本书的目标与组织方式
第2章 可编程逻辑器件与Verilog HDL
2.1可编程逻辑器件概述2.2 基于PLD的数字系统设计流程
2.3 Verilog HDL简介
2.4 Verilog HDL中模块的结构
2.5 Verilog HDL基本要素
2.6 Verilog HDL行为语句
2.7电路设计举例
2.8 仿真
2.9 本章小结
第二部分——基础篇
第3章 教学版OpenMIPS处理器蓝图
3.1 系统设计目标3.2 教学版OpenMIPS处理器接口
3.3 文件说明
3.4 实现方法
第4章 第一条指令ori的实现
4.1 ori指令说明4.2 流水线结构的建立
4.3 验证OpenMIPS实现效果
4.4 MIPS编译环境的建立
4.5 第一条指令实现小结
第5章 逻辑、移位操作与空指令的实现
5.1 流水线数据相关问题5.2 OpenMIPS对数据相关问题的解决措施
5.3 测试数据相关问题解决效果
5.4 逻辑、移位操作与空指令说明
5.5 修改OpenMIPS以实现逻辑、移位操作与空指令
5.6 测试程序1——测试逻辑操作实现效果
5.7 测试程序2——测试移位操作与空指令实现效果
5.8 小结
第6章 移动操作指令的实现
6.1 移动操作指令说明6.2 移动操作指令实现思路
6.3 修改OpenMIPS以实现移动操作指令
6.4 测试程序
第7章 算术操作指令的实现
7.1 简单算术操作指令说明7.2 简单算术操作指令实现思路
7.3 修改OpenMIPS以实现简单算术操作指令
7.4 测试简单算术操作指令实现效果
7.5 流水线暂停机制的设计与实现
7.6 乘累加、乘累减指令说明
7.7 乘累加、乘累减指令实现思路
7.8 修改OpenMIPS以实现乘累加、乘累减指令
7.9 测试乘累加、乘累减指令实现效果
7.10 除法指令说明
7.11 除法指令实现思路
7.12 修改OpenMIPS以实现除法指令
7.13 测试除法指令实现效果
7.14 数据流图的修改
第8章 转移指令的实现
8.1 延迟槽8.2 转移指令说明
8.3 转移指令实现思路
8.4 修改OpenMIPS以实现转移指令
8.5 测试转移指令的实现效果
第9章 加载存储指令的实现
9.1 加载存储指令说明9.2 加载存储指令实现思路
9.3 修改OpenMIPS以实现加载存储指令
9.4 修改最小SOPC
9.5 测试程序
9.6 链接加载指令ll、条件存储指令sc说明
9.7 ll、sc指令实现思路
9.8 修改OpenMIPS以实现ll、sc指令
9.9 测试ll、sc指令实现效果
9.10 load相关问题
9.11 修改OpenMIPS以解决load相关问题
9.12 测试load相关问题解决效果
9.13 小结
第10章 协处理器访问指令的实现
10.1 协处理器介绍10.2 协处理器CP0中的寄存器
10.3 协处理器CP0的实现
10.4 协处理器访问指令说明
10.5 协处理器访问指令实现思路
10.6 修改OpenMIPS以实现协处理器访问指令
10.7 测试程序
第11章 异常相关指令的实现
11.1 MIPS32架构中定义的异常类型11.2 精确异常
11.3 异常处理过程
11.4 异常相关指令介绍
11.4.1 自陷指令
11.4.2 系统调用指令syscall
11.4.3 异常返回指令eret
11.5 异常处理实现思路
11.6 修改OpenMIPS以实现异常处理
11.7 再次修改最小SOPC
11.8 测试程序
11.9 教学版OpenMIPS处理器实现小结
第三部分——进阶篇
第12章 实践版OpenMIPS处理器设计与实现
12.1 实践版OpenMIPS处理器的设计目标12.2 Wishbone总线介绍
12.3 实践版OpenMIPS处理器接口
12.4 实践版OpenMIPS处理器的实现思路
12.5 从教学版OpenMIPS到实践版OpenMIPS
12.6 实践版OpenMIPS处理器实现小结
第13章 基于实践版OpenMIPS的小型SOPC
13.1 小型SOPC的结构13.2 Wishbone总线互联矩阵WB_CONMAX
13.3 GPIO
13.4 UART控制器
13.5 Flash控制器
13.6 SDRAM控制器
13.7 实现基于实践版OpenMIPS的小型SOPC
13.8 本章小结
第14章 验证实践版OpenMIPS处理器
14.1 DE2平台简介14.2 测试需要的硬件连接
14.3 QuartusII工程建立
14.4 测试步骤说明
14.5 测试一——GPIO实验
14.6 测试二——UART实验
14.7 测试三——模拟操作系统的加载过程
14.8 本章小结
第15章 为OpenMIPS处理器移植μC/OS-II
15.1 为什么需要操作系统15.2 嵌入式实时操作系统介绍
15.3 μC/OS-II简介
15.4 μC/OS-II特点
15.5 μC/OS-II的几个概念
15.6 μC/OS-II的基本功能
15.7 μC/OS-II的文件体系
15.8 μC/OS-II的移植条件
15.9 C语言中使用汇编代码
15.10 MIPS函数调用规范
15.11 μC/OS-II在OpenMIPS处理器上的移植
15.12 测试程序
15.13 编译指示文件的建立
15.14 OpenMIPS处理器运行移植后的μC/OS-II
15.15 本章小结
附录A 教学版OpenMIPS各个模块的接口说明
A.1 PC模块接口说明A.2 IF/ID模块接口说明
A.3 ID模块接口说明
A.4 Regfile模块接口说明
A.5 ID/EX模块接口说明
A.6 EX模块接口说明
A.7 DIV模块接口说明
A.8 EX/MEM模块接口说明
A.9 MEM模块接口说明
A.10 MEM/WB模块接口说明
A.11 CP0模块接口说明
A.12 LLbit模块接口说明
A.13 HILO模块接口说明
A.14 CTRL模块接口说明
附录B OpenMIPS实现的所有指令及对应的机器码
B.1 逻辑操作指令B.2 移位操作指令
B.3 移动操作指令
B.4 算术操作指令
B.5 转移指令
B.6 加载存储指令
B.7 协处理器访问指令
B.8 异常相关指令
B.9 空指令及其它指令
欢迎各位观众吐槽,下周一正式开讲!
相关文章推荐
- 自己动手写处理器开篇介绍
- 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍
- 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍
- 自己动手写处理器之第四阶段(1)——第一条指令ori的实现
- 电话机有些故障,用户完全可以自己修好。下面介绍几例,读者遇到类似情况,可以自己动手试试。
- 自己动手写CPU之第八阶段(1)——转移指令介绍
- 自己动手搭建 Linux 0.12 编译环境 — 开篇
- 【自己动手写上位机】开篇说明
- 自己动手写第一阶段的处理器(1)——计算机的简单模型、架构、指令系统
- 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用
- 自己动手写处理器之第四阶段(1)——第一条指令ori的实现
- 自己动手写处理器之第二阶段(1)——可编程逻辑器件与PLD电路设计流程
- CString类的用法介绍和自己动手写的CString类
- 《自己动手写Docker》书摘之三---Union File System介绍
- 自己动手写处理器之第一阶段(2)——MIPS指令集架构的演变
- 自己动手写处理器之第一阶段(1)——计算机的简单模型、架构、指令集
- 自己动手写处理器之第一阶段(2)——MIPS指令集架构的演变
- 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简介
- 开篇:学习 《自己动手写操作系统 》于渊