(有光盘)自己动手写CPU:教您从第一行代码开始,实现一款处理器!酒泉卫星发射中心资深电子工程师作品,以造卫星的态度写的书,中国人自己写的CPU!你值得拥有!
正版 有光盘
¥
280
九品
仅1件
作者雷思磊 著
出版社电子工业出版社
出版时间2014-09
版次1
装帧平装
货号123
上书时间2024-12-22
商品详情
- 品相描述:九品
-
品相看图 免争议
图书标准信息
-
作者
雷思磊 著
-
出版社
电子工业出版社
-
出版时间
2014-09
-
版次
1
-
ISBN
9787121239502
-
定价
99.00元
-
装帧
平装
-
开本
16开
-
纸张
胶版纸
-
页数
538页
-
字数
823千字
-
正文语种
简体中文
- 【内容简介】
-
《自己动手写CPU》使用VerilogHDL设计实现了一款兼容MIPS32指令集架构的处理器――OpenMIPS。OpenMIPS处理器具有两个版本,分别是教学版和实践版。教学版的主要设计思想是尽量简单,处理器的运行情况比较理想化,与教科书相似,便于使用其进行教学、学术研究和讨论,也有助于学生理解课堂上讲授的知识。实践版的设计目标是能完成特定功能,发挥实际作用。
《自己动手写CPU》分为三篇。第一篇是理论篇,介绍了指令集架构、VerilogHDL的相关知识。第二篇是基础篇,采用增量模型,实现了教学版OpenMIPS处理器。首先实现了仅能执行一条指令的处理器,从这个最简单的情况出发,通过依次添加,实现逻辑操作指令、移位操作指令、空指令、移动操作指令、算术操作指令、转移指令、加载存储指令、协处理器访问指令、异常相关指令,最终实现了教学版OpenMIPS处理器。第三篇是进阶篇,通过为教学版OpenMIPS添加Wishbone总线接口,从而实现了实践版OpenMIPS处理器,并与SDRAM控制器、GPIO模块、Flash控制器、UART控制器、Wishbone总线互联矩阵等模块组成一个小型SOPC,然后下载到FPGA芯片以验证实现效果,最后为实践版OpenMIPS处理器移植了嵌入式实时操作系统μC/OS-II。
- 【作者简介】
-
雷思磊,理工男,好静,倡导低碳生活,常以环保人士自居,喜读书,自幼笃信“博观而约取厚积而薄发”,是故,所读书籍甚为驳杂,年近而立,尚不确定根本兴趣目标,一日,驻足书架之前,细览所读书籍,惊觉随岁月增长,关注点依次从应用编程、操作系统、驱动设计转移至处理器结构,此一脉络极其清晰,遂如醍醐灌顶,幡然醒悟,原来余根本兴趣目标在“底层”,在于从根本上理解世界之运行,遂耗数年时间钻研处理器工作原理,乃有些微收获,拙作当为数年辛苦之小结,然学无止境,科技发展亦日新月异,唯有持续钻研,方能大成,屈子曰:路漫漫其修远兮,吾将上下而求索。此言甚是,余定谨记而遵行之。
- 【目录】
-
第一篇理论篇
第1章处理器与MIPS
1.1计算机的简单模型
1.1.1计算机的简单组成模型
1.1.2计算机的简单使用模型
1.2架构与指令集
1.2.1CISC与RISC
1.2.2主要的几种ISA
1.3MIPS指令集架构的演变
1.4MIPS32指令集架构简介
1.4.1数据类型
1.4.2寄存器
1.4.3字节次序
1.4.4指令格式
1.4.5指令集
1.4.6寻址方式
1.4.7协处理器CP
1.4.8异常
1.5本书的目标与组织方式
第2章可编程逻辑器件与VerilogHDL
2.1可编程逻辑器件概述
2.2基于PLD的数字系统设计流程
2.2.1设计输入
2.2.2综合
2.2.3布局布线
2.2.4下载
2.2.5仿真
2.2.6工具介绍
2.3VerilogHDL简介
2.4VerilogHDL中模块的结构
2.5VerilogHDL基本要素
2.5.1常量
2.5.2变量声明与数据类型
2.5.3向量
2.5.4运算符
2.6VerilogHDL行为语句
2.6.1过程语句
2.6.2赋值语句
2.6.3条件语句
2.6.4循环语句
2.6.5编译指示语句
2.6.6行为语句的可综合性
2.7电路设计举例
2.8仿真
2.8.1系统函数
2.8.2TestBench
2.8.3ModelSim仿真
2.9本章小结
第二篇基础篇
第3章教学版OpenMIPS处理器蓝图
3.1系统设计目标
3.1.1设计目标
3.1.2五级整数流水线
3.1.3指令执行周期
3.2教学版OpenMIPS处理器接口
3.3文件说明
3.4实现方法
第4章第一条指令ori的实现
4.1ori指令说明
4.2流水线结构的建立
4.2.1流水线的简单模型
4.2.2原始的OpenMIPS五级流水线结构
4.2.3一些宏定义
4.2.4取指阶段的实现
4.2.5译码阶段的实现
4.2.6执行阶段的实现
4.2.7访存阶段的实现
4.2.8回写阶段的实现
4.2.9顶层模块OpenMIPS的实现
4.3验证OpenMIPS实现效果
4.3.1指令存储器ROM的实现
4.3.2最小SOPC的实现
4.3.3编写测试程序
4.3.4建立TestBench文件
4.3.5使用ModelSim检验OpenMIPS实现效果
4.4MIPS编译环境的建立
4.4.1VisualBox的安装与设置
4.4.2GNU工具链的安装
4.4.3使用GNU工具进行编译
4.4.4使用GNU工具进行链接
4.4.5得到ROM初始化文件
4.4.6编写Makefile文件
4.5第一条指令实现小结
第5章逻辑、移位操作与空指令的实现
5.1流水线数据相关问题
5.2penMIPS对数据相关问题的解决措施
5.3测试数据相关问题解决效果
5.4逻辑、移位操作与空指令说明
5.5修改OpenMIPS以实现逻辑、移位操作与空指令
5.5.1修改译码阶段的ID模块
5.5.2修改执行阶段的EX模块
5.6测试程序1——测试逻辑操作实现效果
5.7测试程序2——测试移位操作与空指令实现效果
5.8小结
第6章移动操作指令的实现
6.1移动操作指令说明
6.2移动操作指令实现思路
6.2.1实现思路
6.2.2新的数据相关情况的解决
6.2.3系统结构的修改
6.3修改OpenMIPS以实现移动操作指令
6.3.1HI、LO寄存器的实现
6.3.2修改译码阶段的ID模块
6.3.3修改执行阶段
6.3.4修改访存阶段
6.3.5修改回写阶段
6.3.6修改OpenMIPS顶层模块
6.4测试程序
第7章算术操作指令的实现
7.1简单算术操作指令说明
7.2简单算术操作指令实现思路
7.3修改OpenMIPS以实现简单算术操作指令
7.3.1修改译码阶段的ID模块
7.3.2修改执行阶段的EX模块
7.4测试简单算术操作指令实现效果
7.5流水线暂停机制的设计与实现
7.5.1流水线暂停机制设计
7.5.2流水线暂停机制实现
7.6乘累加、乘累减指令说明
7.7乘累加、乘累减指令实现思路
7.7.1实现思路
7.7.2系统结构的修改
7.8修改OpenMIPS以实现乘累加、乘累减指令
7.8.1修改译码阶段的ID模块
7.8.2修改执行阶段的EX模块
7.8.3修改EX/MEM模块
7.8.4修改OpenMIPS模块
7.9测试乘累加、乘累减指令实现效果
7.10除法指令说明
7.11除法指令实现思路
7.11.1试商法
7.11.2实现思路
7.11.3系统结构的修改
7.12修改OpenMIPS以实现除法指令
7.12.1增加DIV模块
7.12.2修改译码阶段的ID模块
7.12.3修改执行阶段的EX模块
7.12.4修改OpenMIPS模块
7.13测试除法指令实现效果
7.14数据流图的修改
第8章转移指令的实现
8.1延迟槽
8.2转移指令说明
8.3转移指令实现思路
8.3.1实现思路
8.3.2数据流图的修改
8.3.3系统结构的修改
8.4修改OpenMIPS以实现转移指令
8.4.1修改取指阶段的PC模块
8.4.2修改译码阶段
8.4.3修改执行阶段的EX模块
8.4.4修改OpenMIPS模块
8.5测试转移指令的实现效果
8.5.1测试跳转指令
8.5.2测试分支指令
第9章加载存储指令的实现
9.1加载存储指令说明
9.1.1加载指令lb、lbu、lh、lhu、lw说明
9.1.2存储指令sb、sh、sw说明
9.1.3加载存储指令用法示例
9.1.4加载指令lwl、lwr说明
9.1.5存储指令swl、swr说明
9.2加载存储指令实现思路
9.2.1实现思路
9.2.2数据流图的修改
9.2.3系统结构的修改
9.3修改OpenMIPS以实现加载存储指令
9.3.1修改译码阶段
9.3.2修改执行阶段
9.3.3修改访存阶段
9.3.4修改OpenMIPS顶层模块
9.4修改最小SOPC
9.4.1添加数据存储器RAM
9.4.2修改最小SOPC
9.5测试程序
9.6链接加载指令ll、条件存储指令sc说明
9.7ll、sc指令实现思路
9.7.1实现思路
9.7.2数据流图的修改
9.7.3系统结构的修改
9.8修改OpenMIPS以实现ll、sc指令
9.8.1LLbit寄存器的实现
9.8.2修改译码阶段的ID模块
9.8.3修改访存阶段
9.8.4修改OpenMIPS模块
9.9测试ll、sc指令实现效果
9.10load相关问题
9.10.1load相关问题介绍
9.10.2解决方法
9.11修改OpenMIPS以解决load相关问题
9.11.1修改译码阶段的ID模块
9.11.2修改OpenMIPS模块
9.12测试load相关问题解决效果
9.13小结
第10章协处理器访问指令的实现
10.1协处理器介绍
10.2协处理器CP0中的寄存器
10.3协处理器CP0的实现
10.4协处理器访问指令说明
10.5协处理器访问指令实现思路
10.5.1实现思路
10.5.2数据流图的修改
10.5.3系统结构的修改
10.6修改OpenMIPS以实现协处理器访问指令
10.6.1修改译码阶段
10.6.2修改执行阶段
10.6.3修改访存阶段
10.6.4修改OpenMIPS模块
10.7测试程序
第11章异常相关指令的实现
11.1MIPS32架构中定义的异常类型
11.2精确异常
11.3异常处理过程
11.4异常相关指令介绍
11.4.1自陷指令
11.4.2系统调用指令syscall
11.4.3异常返回指令eret
11.5异常处理实现思路
11.5.1实现思路
11.5.2修改数据流图
11.5.3修改系统结构
11.6修改OpenMIPS以实现异常处理
11.6.1修改取指阶段
11.6.2修改译码阶段
11.6.3修改执行阶段
11.6.4修改访存阶段
11.6.5修改协处理器CP
11.6.6修改控制模块CTRL
11.6.7修改OpenMIPS
11.7再次修改最小SOPC
11.8测试程序
11.8.1测试程序1——测试系统调用异常
11.8.2测试程序2——测试自陷异常
11.8.3测试程序3——测试时钟中断
11.9教学版OpenMIPS处理器
实现小结
第三篇进阶篇
第12章实践版OpenMIPS处理器设计与实现
12.1实践版OpenMIPS处理器的设计目标
12.2Wishbone总线介绍
12.2.1Wishbone总线接口说明
12.2.2Wishbone总线单次读操作的过程
12.2.3Wishbone总线单次写操作的过程
12.2.4SEL_O/SEL_I信号说明
12.3实践版OpenMIPS处理器接口
12.4实践版OpenMIPS处理器的实现思路
12.4.1实现思路
12.4.2修改系统结构
12.5从教学版OpenMIPS到实践版OpenMIPS
12.5.1Wishbone总线接口模块的实现
12.5.2修改CTRL模块
12.5.3修改OpenMIPS顶层模块
12.6实践版OpenMIPS处理器实现小结
第13章基于实践版OpenMIPS的小型SOPC
13.1小型SOPC的结构
13.2Wishbone总线互联矩阵WB_CONMAX
13.3GPIO
13.4UART控制器
13.4.1UART简介
13.4.2UART16550IP核介绍
13.5Flash控制器
13.5.1Flash简介
13.5.2Flash控制器的设计
13.5.3Flash控制器的实现
13.6SDRAM控制器
13.6.1SDRAM简介
13.6.2SDRAMCONTROLLERIP核
13.7实现基于实践版OpenMIPS的小型SOPC
13.8本章小结
第14章验证实践版OpenMIPS处理器
14.1DE2平台简介
14.2测试需要的硬件连接
14.3QuartusII工程建立
14.4测试步骤说明
14.5测试一——GPIO实验
14.5.1测试内容
14.5.2测试程序
14.5.3编译测试程序
14.5.4将测试程序写入Flash芯片
14.5.5下载小型SOPC到DE
14.5.6测试效果
14.6测试二——UART实验
14.6.1测试内容
14.6.2测试程序
14.6.3测试效果
14.7测试三——模拟操作系统的加载过程
14.7.1测试内容
14.7.2测试程序BootLoader
14.7.3测试程序SimpleOS
14.7.4将测试程序写入Flash
14.7.5测试效果
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.5.1任务
15.5.2任务调度
15.5.3任务切换
15.5.4μC/OS-II的中断处理
15.5.5时钟节拍
15.5.6μC/OS-II的初始化
15.5.7μC/OS-II的启动
15.6μC/OS-II的基本功能
15.6.1任务间的通信与同步
15.6.2任务管理
15.6.3时间管理
15.6.4内存管理
15.7μC/OS-II的文件体系
15.8μC/OS-II的移植条件
15.9C语言中使用汇编代码
15.10MIPS函数调用规范
15.10.1寄存器使用规范
15.10.2参数传递
15.10.3函数返回值
15.10.4堆栈布局
15.10.5示例
15.11μC/OS-II在OpenMIPS处理器上的移植
15.11.1文件目录的建立
15.11.2修改os_cpu.h文件
15.11.3修改os_cpu_a.S文件
15.11.4修改os_cpu_c.c文件
15.12测试程序
15.12.1创建openmips.h文件
15.12.2创建openmips.c文件
15.13编译指示文件的建立
15.14OpenMIPS处理器运行移植后的μC/OS-II
15.15本章小结
附录A教学版OpenMIPS各个模块的接口说明
A.1PC模块接口说明
A.2IF/ID模块接口说明
A.3ID模块接口说明
A.4Regfile模块接口说明
A.5ID/EX模块接口说明
A.6EX模块接口说明
A.7DIV模块接口说明
A.8EX/MEM模块接口说明
A.9MEM模块接口说明
A.10MEM/WB模块接口说明
A.11CP0模块接口说明
A.12LLbit模块接口说明
A.13HILO模块接口说明
A.14CTRL模块接口说明
附录BOpenMIPS实现的所有指令及对应的机器码
B.1逻辑操作指令
B.2移位操作指令
B.3移动操作指令
B.4算术操作指令
B.5转移指令
B.6加载存储指令
B.7协处理器访问指令
B.8异常相关指令
B.9空指令及其他指令
参考文献
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价