图书介绍
自己动手写CPUPDF|Epub|txt|kindle电子书版本下载
![自己动手写CPU](https://www.shukui.net/cover/47/30673542.jpg)
- 雷思磊著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121239502
- 出版时间:2014
- 标注页数:538页
- 文件大小:83MB
- 文件页数:555页
- 主题词:微处理器-系统设计
PDF下载
下载说明
自己动手写CPUPDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一篇 理论篇2
第1章 处理器与MIPS2
1.1 计算机的简单模型2
1.1.1 计算机的简单组成模型2
1.1.2 计算机的简单使用模型3
1.2 架构与指令集4
1.2.1 CISC与RISC4
1.2.2 主要的几种ISA5
1.3 MIPS指令集架构的演变6
1.4 MIPS32指令集架构简介9
1.4.1 数据类型9
1.4.2 寄存器9
1.4.3 字节次序10
1.4.4 指令格式11
1.4.5 指令集11
1.4.6 寻址方式13
1.4.7 协处理器CP013
1.4.8 异常14
1.5 本书的目标与组织方式14
第2章 可编程逻辑器件与 Verilog HDL16
2.1 可编程逻辑器件概述16
2.2 基于PLD的数字系统设计流程18
2.2.1 设计输入19
2.2.2 综合20
2.2.3 布局布线20
2.2.4 下载20
2.2.5 仿真20
2.2.6 工具介绍21
2.3 Verilog HDL简介21
2.4 Verilog HDL中模块的结构22
2.5 VerilogHDL基本要素24
2.5.1 常量24
2.5.2 变量声明与数据类型24
2.5.3 向量26
2.5.4 运算符26
2.6 VerilogHDL行为语句29
2.6.1 过程语句29
2.6.2 赋值语句31
2.6.3 条件语句32
2.6.4 循环语句34
2.6.5 编译指示语句35
2.6.6 行为语句的可综合性37
2.7 电路设计举例38
2.8 仿真41
2.8.1 系统函数42
2.8.2 Test Bench43
2.8.3 ModelSim仿真45
2.9 本章小结48
第二篇 基础篇50
第3章 教学版OpenMIPS处理器 蓝图50
3.1 系统设计目标50
3.1.1 设计目标50
3.1.2 五级流水线50
3.1.3 指令执行周期52
3.2 教学版OpenMIPS处理器接口53
3.3 文件说明54
3.4 实现方法55
第4章 第一条指令ori的实现58
4.1 ori指令说明58
4.2 流水线结构的建立59
4.2.1 流水线的简单模型59
4.2.2 原始的OpenMIPS五级流水线结构60
4.2.3 一些宏定义62
4.2.4 取指阶段的实现63
4.2.5 译码阶段的实现65
4.2.6 执行阶段的实现74
4.2.7 访存阶段的实现78
4.2.8 回写阶段的实现81
4.2.9 顶层模块OpenMIPS的实现81
4.3 验证OpenMIPS实现效果85
4.3.1 指令存储器ROM的实现85
4.3.2 最小SOPC的实现87
4.3.3 编写测试程序88
4.3.4 建立Test Bench文件89
4.3.5 使用ModelSim检验 OpenMIPS实现效果90
4.4 MIPS编译环境的建立92
4.4.1 VisualBox的安装与设置93
4.4.2 GNU工具链的安装96
4.4.3 使用GNU工具进行编译97
4.4.4 使用GNU工具进行链接99
4.4.5 得到ROM初始化文件102
4.4.6 编写Makefile文件103
4.5 第一条指令实现小结105
第5章 逻辑、移位操作与空指令的实现107
5.1 流水线数据相关问题107
5.2 OpenMIPS对数据相关问题的解决措施111
5.3 测试数据相关问题的解决效果115
5.4 逻辑、移位操作与空指令说明115
5.5 修改OpenMIPS以实现逻辑、移位操作与空指令119
5.5.1 修改译码阶段的ID模块120
5.5.2 修改执行阶段的EX模块127
5.6 测试程序1——测试逻辑操作实现效果129
5.7 测试程序2——测试移位操作与空指令实现效果130
5.8 小结131
第6章 移动操作指令的实现132
6.1 移动操作指令说明132
6.2 移动操作指令实现思路133
6.2.1 新的数据相关情况的解决135
6.2.2 系统结构的修改136
6.3 修改OpenMIPS以实现移动操作指令137
6.3.1 HI、LO寄存器的实现137
6.3.2 修改译码阶段的ID模块138
6.3.3 修改执行阶段141
6.3.4 修改访存阶段146
6.3.5 修改回写阶段149
6.3.6 修改OpenMIPS顶层模块149
6.4 测试程序150
第7章 算术操作指令的实现152
7.1 简单算术操作指令说明153
7.2 简单算术操作指令实现思路156
7.3 修改OpenMIPS以实现简单算术操作指令157
7.3.1 修改译码阶段的ID模块157
7.3.2 修改执行阶段的EX模块164
7.4 测试简单算术操作指令实现效果171
7.5 流水线暂停机制的设计与实现174
7.5.1 流水线暂停机制的设计174
7.5.2 流水线暂停机制的实现175
7.6 乘累加、乘累减指令说明180
7.7 乘累加、乘累减指令实现思路181
7.8 修改OpenMIPS以实现乘累加、乘累减指令182
7.8.1 修改译码阶段的ID模块182
7.8.2 修改执行阶段的EX模块184
7.8.3 修改EX/MEM模块189
7.8.4 修改OpenMIPS模块190
7.9 测试乘累加、乘累减指令实现效果190
7.1 0除法指令说明191
7.1 1 除法指令实现思路192
7.1 1.1 试商法192
7.1 1.2 实现思路193
7.1 1.3 系统结构的修改193
7.1 2修改OpenMIPS以实现除法指令194
7.1 2.1 增加DIV模块194
7.1 2.2 修改译码阶段的ID模块199
7.1 2.3 修改执行阶段的EX模块200
7.1 2.4 修改OpenMIPS模块204
7.1 3测试除法指令实现效果204
7.1 4数据流图的修改205
第8章 转移指令的实现206
8.1 延迟槽206
8.2 转移指令说明207
8.3 转移指令实现思路210
8.3.1 实现思路210
8.3.2 数据流图的修改210
8.3.3 系统结构的修改211
8.4 修改OpenMIPS以实现转移指令212
8.4.1 修改取指阶段的PC模块212
8.4.2 修改译码阶段213
8.4.3 修改执行阶段的EX模块223
8.4.4 修改OpenMIPS模块225
8.5 测试转移指令的实现效果225
8.5.1 测试跳转指令225
8.5.2 测试分支指令227
第9章 加载存储指令的实现230
9.1 加载存储指令说明230
9.1.1 加载指令lb、lbu、lh、 lhu、lw说明230
9.1.2 存储指令sb、sh、sw 说明231
9.1.3 加载存储指令用法示例232
9.1.4 加载指令lwl、lwr说明233
9.1.5 存储指令swl、swr说明235
9.2 加载存储指令实现思路238
9.2.1 数据流图的修改239
9.2.2 系统结构的修改240
9.3 修改OpenMIPS以实现加载存储指令240
9.3.1 修改译码阶段240
9.3.2 修改执行阶段247
9.3.3 修改访存阶段249
9.3.4 修改OpenMIPS顶层模块260
9.4 修改最小SOPC261
9.4.1 添加数据存储器RAM262
9.4.2 修改最小SOPC264
9.5 测试程序265
9.6 链接加载指令ll、条件存储指令sc说明267
9.7 ll、sc指令实现思路269
9.7.1 ll、sc指令的实现269
9.7.2 数据流图的修改270
9.7.3 系统结构的修改271
9.8 修改OpenMIPS以实现ll、 sc指令271
9.8.1 LLbit寄存器的实现271
9.8.2 修改译码阶段的ID模块273
9.8.3 修改访存阶段275
9.8.4 修改OpenMIPS模块279
9.9 测试ll、sc指令实现效果279
9.1 0 load相关问题281
9.1 0.1 load相关问题介绍281
9.1 0.2 解决方法281
9.1 1 修改OpenMIPS以解决load相关问题283
9.1 1.1 修改译码阶段的ID模块283
9.1 1.2 修改OpenMIPS模块284
9.1 2测试load相关问题解决效果285
9.1 3 小结286
第10章 协处理器访问指令的实现287
10.1 协处理器介绍287
10.2 协处理器CPO中的寄存器288
10.3 协处理器CP0的实现295
10.4 协处理器访问指令说明300
10.5 协处理器访问指令实现思路300
10.5.1 实现思路300
10.5.2 数据流图的修改301
10.5.3 系统结构的修改301
10.6 修改OpenMIPS以实现协处理器访问指令303
10.6.1 修改译码阶段303
10.6.2 修改执行阶段305
10.6.3 修改访存阶段311
10.6.4 修改OpenMIPS模块314
10.7 测试程序314
第11章 异常相关指令的实现316
11.1 MIPS32架构中定义的异常类型316
11.2 精确异常318
11.3 异常处理过程319
11.4 异常相关指令介绍321
11.4.1 自陷指令321
11.4.2 系统调用指令syscall324
11.4.3 异常返回指令eret325
11.5 异常处理实现思路325
11.5.1 实现思路325
11.5.2 修改数据流图326
11.5.3 修改系统结构326
11.6 修改OpenMIPS以实现异常处理328
11.6.1 修改取指阶段328
11.6.2 修改译码阶段330
11.6.3 修改执行阶段339
11.6.4 修改访存阶段346
11.6.5 修改协处理器CP0352
11.6.6 修改控制模块CTRL355
11.6.7 修改OpenMIPS357
11.7 再次修改最小SOPC358
11.8 测试程序359
11.8.1 测试程序1——测试系统调用异常359
11.8.2 测试程序2——测试自陷异常361
11.8.3 测试程序3——测试时钟中断364
11.9 教学版OpenMIPS处理器实现小结366
第三篇 进阶篇368
第12章 实践版OpenMIPS处理器设计与实现368
12.1 实践版OpenMIPS处理器的设计目标368
12.2 Wishbone总线介绍370
12.2.1 Wishbone总线接口说明370
12.2.2 Wishbone总线单次读操作的过程372
12.2.3 Wishbone总线单次写操作的过程373
12.2.4 SEL O/SEL I信号说明374
12.3 实践版OpenMIPS处理器接口375
12.4 实践版OpenMIPS处理器的实现思路376
12.5 从教学版OpenMIPS到实践版OpenMIPS378
12.5.1 Wishbone总线接口模块的实现378
12.5.2 修改CTRL模块384
12.5.3 修改OpenMIPS顶层模块386
12.6 实践版OpenMIPS处理器实现小结386
第13章 基于实践版OpenMIPS的小型SOPC387
13.1 小型SOPC 的结构387
13.2 Wishbone总线互联矩阵WB_CONMAX388
13.3 GPIO390
13.4 UART控制器392
13.4.1 UART简介392
13.4.2 UART16550 IP核介绍394
13.5 Flash控制器398
13.5.1 Flash简介398
13.5.2 Flash控制器的设计399
13.5.3 Flash控制器的实现400
13.6 SDRAM控制器403
13.6.1 SDRAM简介403
13.6.2 SDRAM CONTROLLER IP核409
13.7 实现基于实践版OpenMIPS 的小型SOPC412
13.8 本章小结423
第14章 验证实践版OpenMIPS 处理器424
14.1 DE2平台简介424
14.2 测试需要的硬件连接425
14.3 QuartusII 工程建立426
14.4 测试步骤说明430
14.5 测试一——GPIO实验431
14.5.1 测试内容431
14.5.2 测试程序431
14.5.3 编译测试程序432
14.5.4 将测试程序写入Flash芯片433
14.5.5 下载小型SOPC到DE2435
14.5.6 测试效果435
14.6 测试二——UART实验435
14.6.1 测试内容435
14.6.2 测试程序436
14.6.3 测试效果438
14.7 测试三——模拟操作系统的加载过程439
14.7.1 测试内容439
14.7.2 测试程序BootLoader439
14.7.3 测试程序SimpleOS443
14.7.4 将测试程序写入Flash446
14.7.5 测试效果448
14.8 本章小结449
第15章 为OpenMIPS处理器 移植μC/OS-Ⅱ450
15.1 为什么需要操作系统450
15.2 嵌入式实时操作系统介绍451
15.3 μC/OS-Ⅱ简介452
15.4 μC/OS-Ⅱ特点452
15.5 μC/OS-Ⅱ的几个概念454
15.5.1 任务454
15.5.2 任务调度456
15.5.3 任务切换456
15.5.4 μC/OS-Ⅱ的中断处理457
15.5.5 时钟节拍457
15.5.6 μC/OS-Ⅱ的初始化458
15.5.7 μC/OS-Ⅱ的启动458
15.6 μC/OS-Ⅱ的基本功能458
15.6.1 任务间的通信与同步459
15.6.2 任务管理459
15.6.3 时间管理459
15.6.4 内存管理460
15.7 μC/OS-Ⅱ的文件体系460
15.8 μC/OS-Ⅱ的移植条件461
15.9 C语言中使用汇编代码463
15.10 MIPS函数调用规范465
15.10.1 寄存器使用规范465
15.10.2 参数传递466
15.10.3 函数返回值466
15.10.4 堆栈布局467
15.10.5 示例468
15.11 μC/OS-Ⅱ在OpenMIPS处理器上的移植470
15.11.1 文件目录的建立470
15.11.2 修改os cpu.h文件473
15.11.3 修改os cpu a.S文件474
15.11.4 修改os cpu c.c文件496
15.12 测试程序500
15.12.1 创建openmips.h 文件500
15.12.2 创建openmips.c文件502
15.13 编译指示文件的建立508
15.14 OpenMIPS处理器运行移植后的μC/OS-Ⅱ515
15.15 本章小结516
附录A 教学版OpenMIPS各个模块的接口说明517
A.1 PC模块接口说明517
A.2 IF/ID模块接口说明518
A.3 ID模块接口说明518
A.4 Regfile模块接口说明520
A.5 ID/EX模块接口说明520
A.6 EX模块接口说明521
A.7 DIV模块接口说明524
A.8 EX/MEM模块接口说明525
A.9 MEM模块接口说明527
A.10 MEM/WB模块接口说明529
A.11 CP0模块接口说明530
A.12 LLbit模块接口说明532
A.13 HILO模块接口说明532
A.14 CTRL 模块接口说明533
附录B OpenMIPS实现的所有指令及对应的机器码534
B.1 逻辑操作指令534
B.2 移位操作指令534
B.3 移动操作指令535
B.4 算术操作指令535
B.5 转移指令536
B.6 加载存储指令536
B.7 协处理器访问指令537
B.8 异常相关指令537
B.9 空指令及其他指令537
参考文献538