当前位置:首页 > 其它 >
《自己动手写CPU》电子书封面

自己动手写CPU

  • 发布时间:2020年07月09日 22:36:45
  • 作者:雷思磊
  • 大小:103 MB
  • 类别:CPU电子书
  • 格式:PDF
  • 版本:高清版
  • 评分:7.3

    自己动手写CPU PDF 高清版

      给大家带来的一篇关于CPU相关的电子书资源,介绍了关于写CPU、CPU方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小103 MB,雷思磊编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.2。

      内容介绍

      《自己动手写CPU》使用Verilog HDL 设计实现了一款兼容MIPS32指令集架构的处理器——OpenMIPS。OpenMIPS 处理器具有两个版本,分别是教学版和实践版。教学版的主要设计思想是尽量简单,处理器的运行情况比较理想化,与教科书相似,便于使用其进行教学、学术研究和讨论,也有助于学生理解课堂上讲授的知识。实践版的设计目标是能完成特定功能,发挥实际作用。

      《自己动手写CPU》分为三篇。第一篇是理论篇,介绍了指令集架构、Verilog HDL的相关知识。第二篇是基础篇,采用增量模型,实现了教学版OpenMIPS处理器。首先实现了仅能执行一条指令的处理器,从这个最简单的情况出发,通过依次添加,实现逻辑操作指令、移位操作指令、空指令、移动操作指令、算术操作指令、转移指令、加载存储指令、协处理器访问指令、异常相关指令,最终实现了教学版OpenMIPS处理器。第三篇是进阶篇,通过为教学版OpenMIPS添加Wishbone总线接口,从而实现了实践版OpenMIPS处理器,并与SDRAM控制器、GPIO模块、Flash控制器、UART控制器、Wishbone总线互联矩阵等模块组成一个小型SOPC,然后下载到FPGA芯片以验证实现效果,最后为实践版OpenMIPS处理器移植了嵌入式实时操作系统μC/OS-II。

      《自己动手写CPU》适合计算机专业的学生、FPGA开发人员、处理器设计者、嵌入式系统应用开发工程师、MIPS平台开发人员以及对处理器内部的实现感兴趣的读者阅读,也可以作为高等院校计算机原理、计算机体系结构等课程的实践参考书。

      目录

      • 第一篇 理论篇
      • 第1章 处理器与MIPS 2
      • 1.1 计算机的简单模型 2
      • 1.1.1 计算机的简单组成模型 2
      • 1.1.2 计算机的简单使用模型 3
      • 1.2 架构与指令集 4
      • 1.2.1 CISC与RISC 4
      • 1.2.2 主要的几种ISA 5
      • 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 协处理器CP0 13
      • 1.4.8 异常 14
      • 1.5 本书的目标与组织方式 14
      • 第2章 可编程逻辑器件与Verilog HDL 16
      • 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 Verilog HDL基本要素 24
      • 2.5.1 常量 24
      • 2.5.2 变量声明与数据类型 24
      • 2.5.3 向量 26
      • 2.5.4 运算符 26
      • 2.6 Verilog HDL行为语句 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 Bench 43
      • 2.8.3 ModelSim仿真 45
      • 2.9 本章小结 48
      • 第二篇 基础篇
      • 第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.10 除法指令说明 191
      • 7.11 除法指令实现思路 192
      • 7.11.1 试商法 192
      • 7.11.2 实现思路 193
      • 7.11.3 系统结构的修改 193
      • 7.12 修改OpenMIPS以实现除法指令 194
      • 7.12.1 增加DIV模块 194
      • 7.12.2 修改译码阶段的ID模块 199
      • 7.12.3 修改执行阶段的EX模块 200
      • 7.12.4 修改OpenMIPS模块 204
      • 7.13 测试除法指令实现效果 204
      • 7.14 数据流图的修改 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 修改最小SOPC 261
      • 9.4.1 添加数据存储器RAM 262
      • 9.4.2 修改最小SOPC 264
      • 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.10 load相关问题 281
      • 9.10.1 load相关问题介绍 281
      • 9.10.2 解决方法 281
      • 9.11 修改OpenMIPS以解决load相关问题 283
      • 9.11.1 修改译码阶段的ID模块 283
      • 9.11.2 修改OpenMIPS模块 284
      • 9.12 测试load相关问题解决效果 285
      • 9.13 小结 286
      • 第10章 协处理器访问指令的实现 287
      • 10.1 协处理器介绍 287
      • 10.2 协处理器CP0中的寄存器 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 系统调用指令syscall 324
      • 11.4.3 异常返回指令eret 325
      • 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 修改协处理器CP0 352
      • 11.6.6 修改控制模块CTRL 355
      • 11.6.7 修改OpenMIPS 357
      • 11.7 再次修改最小SOPC 358
      • 11.8 测试程序 359
      • 11.8.1 测试程序1——测试系统调用异常 359
      • 11.8.2 测试程序2——测试自陷异常 361
      • 11.8.3 测试程序3——测试时钟中断 364
      • 11.9 教学版OpenMIPS处理器实现小结 366
      • 第三篇 进阶篇
      • 第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到实践版OpenMIPS 378
      • 12.5.1 Wishbone总线接口模块的实现 378
      • 12.5.2 修改CTRL模块 384
      • 12.5.3 修改OpenMIPS顶层模块 386
      • 12.6 实践版OpenMIPS处理器实现小结 386
      • 第13章 基于实践版OpenMIPS的小型SOPC 387
      • 13.1 小型SOPC的结构 387
      • 13.2 Wishbone总线互联矩阵WB_CONMAX 388
      • 13.3 GPIO 390
      • 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的小型SOPC 412
      • 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到DE2 435
      • 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 测试程序BootLoader 439
      • 14.7.3 测试程序SimpleOS 443
      • 14.7.4 将测试程序写入Flash 446
      • 14.7.5 测试效果 448
      • 14.8 本章小结 449
      • 第15章 为OpenMIPS处理器移植μC/OS-II 450
      • 15.1 为什么需要操作系统 450
      • 15.2 嵌入式实时操作系统介绍 451
      • 15.3 μC/OS-II简介 452
      • 15.4 μC/OS-II特点 452
      • 15.5 μC/OS-II的几个概念 454
      • 15.5.1 任务 454
      • 15.5.2 任务调度 456
      • 15.5.3 任务切换 456
      • 15.5.4 μC/OS-II的中断处理 457
      • 15.5.5 时钟节拍 457
      • 15.5.6 μC/OS-II的初始化 458
      • 15.5.7 μC/OS-II的启动 458
      • 15.6 μC/OS-II的基本功能 458
      • 15.6.1 任务间的通信与同步 459
      • 15.6.2 任务管理 459
      • 15.6.3 时间管理 459
      • 15.6.4 内存管理 460
      • 15.7 μC/OS-II的文件体系 460
      • 15.8 μC/OS-II的移植条件 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-II在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-II 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

      学习笔记

      以上就是本次介绍的CPU电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:PostgreSQL服务器编程

      下一篇:腾讯网UED体验设计之旅

      展开 +

      收起 -

      下载地址:百度网盘下载
      CPU相关电子书
      自己动手写编译器、链接器
      自己动手写编译器、链接器 高清版

      自己动手写编译器、链接器 讲述了一个真实编译器的开发过程,源语言是以C语言为蓝本,进行适当简化定义的一门新语言,称之为SC语言(简化的C语言),目标语言是大家熟悉的Intel x86机器语

      立即下载
      自己动手实现Lua:虚拟机、编译器和标准库
      自己动手实现Lua:虚拟机、编译器和标准库 影印版

      用Go和Java深入阐述Lua虚拟机、编译器、标准库及核心语法原理,七牛云许式伟等力荐

      立即下载
      动手玩转Scratch2.0编程:STEAM创新教育指南
      动手玩转Scratch2.0编程:STEAM创新教育指南 高清版

      Scratch 是可视化的编程语言,其丰富的学习环境适合所有年龄阶段的人。利用它可以制作交互式程序、富媒体项目,包括动画故事、读书报告、科学实验、游戏和模拟程序等。《动手玩转Scrat

      立即下载
      自己动手做iOS App:从设计开发到上架App Store
      自己动手做iOS App:从设计开发到上架App Store 超清版

      《自己动手做iOS App:从设计开发到上架App Store》 为想要接触iOS 应用设计、开发的读者提供了由浅入深的详细指导。从iOS 应用制作的步骤是什么,应该使用什么软件,如何发布应用到App Store,

      立即下载
      动手玩转Scratch 3.0编程:人工智能科创教育指南
      动手玩转Scratch 3.0编程:人工智能科创教育指南 完整原版

      这书是畅销书《动手玩转Scratch2.0编程》的全新升级。其是儿童编程行业出色的学习材料,备受学员、父母、培训学校的五星好评,以內容详实、实例精采、写法有哪些高超而出名。这书为上一

      立即下载
      自己动手写Docker
      自己动手写Docker 高清完整版

      《自己动手写Docker》 在详细分析Docker所依赖的技术栈的基础上,一步一步地通过代码实例,让读者可以自己循序渐进地用Go语言构建出一个容器的引擎。不同于其他Docker原理介绍或代码剖析的

      立即下载
      读者留言
      邱文轩

      邱文轩 提供上传

      资源
      21
      粉丝
      19
      喜欢
      185
      评论
      16

      Copyright 2018-2020 www.xz577.com 码农之家

      版权投诉 / 书籍推广 / 赞助:520161757@qq.com