0 0 0

自己动手写CPU.epub

无与伦比的大傻吊
6天前 140
我用夸克网盘分享了「自己动手写CPU.epub」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。
自己动手写CPU 作者: 雷思磊 出版社: 电子工业出版社 出品方: 博文视点 出版年: 2014-9-1 页数: 556 定价: 99.00元 装帧: 平装 ISBN: 9787121239502

内容简介

《自己动手写CPU(含CD光盘1张)》使用Verilog HDL 设计实现了一款兼容MIPS32指令集架构的处理器——OpenMIPS。OpenMIPS 处理器具有两个版本,分别是教学版和实践版。教学版的主要设计思想是尽量简单,处理器的运行情况比较理想化,与教科书相似,便于使用其进行教学、学术研究和讨论,也有助于学生理解课堂上讲授的知识。实践版的设计目标是能完成特定功能,发挥实际作用。 《自己动手写CPU(含CD光盘1张)》分为三篇。第一篇是理论篇,介绍了指令集架构、Verilog HDL的相关知识。第二篇是基础篇,采用增量模型,实现了教学版OpenMIPS处理器。首先实现了仅能执行一条指令的处理器,从这个最简单的情况出发,通过依次添加,实现逻辑操作指令、移位操作指令、空指令、移动操作指令、算术操作指令、转移指令、加载存储指令、协处理器访问指令、异常相关指令,最终实现了教学版OpenMIPS处理器。第三篇是进阶篇,通过为教学版OpenMIPS添加Wishbone总线接口,从而实现了实践版OpenMIPS处理器,并与SDRAM控制器、GPIO模块、Flash控制器、UART控制器、Wishbone总线互联矩阵等模块组成一个小型SOPC,然后下载到FPGA芯片以验证实现效果,最后为实践版OpenMIPS处理器移植了嵌入式实时操作系统μC/OS-II。 《自己动手写CPU(含CD光盘1张)》适合计算机专业的学生、FPGA开发人员、处理器设计者、嵌入式系统应用开发工程师、MIPS平台开发人员以及对处理器内部的实现感兴趣的读者阅读,也可以作为高等院校计算机原理、计算机体系结构等课程的实践参考书。

作者简介

雷思磊,理工男,好静,倡导低碳生活,常以环保人士自居,喜读书,自幼笃信“博观而约取厚积而薄发”,是故,所读书籍甚为驳杂,年近而立,尚不确定根本兴趣目标,一日,驻足书架之前,细览所读书籍,惊觉随岁月增长,关注点依次从应用编程、操作系统、驱动设计转移至处理器结构,此一脉络极其清晰,遂如醍醐灌顶,幡然醒悟,原来余根本兴趣目标在“底层”,在于从根本上理解世界之运行,遂耗数年时间钻研处理器工作原理,乃有些微收获,拙作当为数年辛苦之小结,然学无止境,科技发展亦日新月异,唯有持续钻研,方能大成,屈子曰:路漫漫其修远兮,吾将上下而求索。此言甚是,余定谨记而遵行之。

网友热评

多情键盘无情键: 这名字取的...看了日本人写的那本,两个书差不多呀。 isisis: 层层递进,实践性很强,可惜书名没有带体系结构,以至于没有早点发现这本书。当年体系结构实验课明明就是照抄这本书的内容,然而无论老师还是助教都隐瞒了这本书的存在,一想到当时走的无数弯路浪费的大把时间就忍不住生气,实在不理解为什么教学也要有信息差,这样能显得老师和助教更牛逼么?工作和生活中处处都是这种信息差,真是防不胜防,光靠遇到问题再搜索不一定管用,还是得靠平时的积累把视野放宽。 cp: 内容不错,我跟着这本书敲了Verilog代码,对CPU的运行原理有了深入的理解。 石与草: 蛮好的,但是增量式开发有一个问题,那就是没有整体架构的了解,可以在教学版最后增加一章,整体的讲整个cpu。 冰语霜夜: 对于非ic专业的并不需要太关注数电的系列用verilog定义好各模块的接口和内部操作逻辑来理解cpu的工作流程就满足大部分需求了。

图书目录

第一篇理论篇 第1章处理器与MIPS 2 1.1计算机的简单模型 2 1.1.1计算机的简单组成模型 2 1.1.2计算机的简单使用模型 3 1.2架构与指令集 4 1.2.1CISC与RISC 4 1.2.2主要的几种ISA 5 1.3MIPS指令集架构的演变 6 1.4MIPS32指令集架构简介 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章可编程逻辑器件与VerilogHDL 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.3VerilogHDL简介 21 2.4VerilogHDL中模块的结构 22 2.5VerilogHDL基本要素 24 2.5.1常量 24 2.5.2变量声明与数据类型 24 2.5.3向量 26 2.5.4运算符 26 2.6VerilogHDL行为语句 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.2TestBench 43 2.8.3ModelSim仿真 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.1ori指令说明 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建立TestBench文件 89 4.3.5使用ModelSim检验OpenMIPS实现效果 90 4.4MIPS编译环境的建立 92 4.4.1VisualBox的安装与设置 93 4.4.2GNU工具链的安装 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.2OpenMIPS对数据相关问题的解决措施 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.1HI、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.7ll、sc指令实现思路 269 9.7.1ll、sc指令实现思路 269 9.7.2数据流图的修改 270 9.7.3系统结构的修改 271 9.8修改OpenMIPS以实现ll、sc指令 271 9.8.1LLbit寄存器的实现 271 9.8.2修改译码阶段的ID模块 273 9.8.3修改访存阶段 275 9.8.4修改OpenMIPS模块 279 9.9测试ll、sc指令实现效果 279 9.10load相关问题 281 9.10.1load相关问题介绍 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.1MIPS32架构中定义的异常类型 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.2Wishbone总线介绍 370 12.2.1Wishbone总线接口说明 370 12.2.2Wishbone总线单次读操作的过程 372 12.2.3Wishbone总线单次写操作的过程 373 12.2.4SEL_O/SEL_I信号说明 374 12.3实践版OpenMIPS处理器接口 375 12.4实践版OpenMIPS处理器的实现思路 376 12.5从教学版OpenMIPS到实践版OpenMIPS 378 12.5.1Wishbone总线接口模块的实现 378 12.5.2修改CTRL模块 384 12.5.3修改OpenMIPS顶层模块 386 12.6实践版OpenMIPS处理器实现小结 386 第13章基于实践版OpenMIPS的小型SOPC 387 13.1小型SOPC的结构 387 13.2Wishbone总线互联矩阵WB_CONMAX 388 13.3GPIO 390 13.4UART控制器 392 13.4.1UART简介 392 13.4.2UART16550IP核介绍 394 13.5Flash控制器 398 13.5.1Flash简介 398 13.5.2Flash控制器的设计 399 13.5.3Flash控制器的实现 400 13.6SDRAM控制器 403 13.6.1SDRAM简介 403 13.6.2SDRAMCONTROLLERIP核 409 13.7实现基于实践版OpenMIPS的小型SOPC 412 13.8本章小结 423 第14章验证实践版OpenMIPS处理器 424 14.1DE2平台简介 424 14.2测试需要的硬件连接 425 14.3QuartusII工程建立 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.9C语言中使用汇编代码 463 15.10MIPS函数调用规范 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.14OpenMIPS处理器运行移植后的μC/OS-II 515 15.15本章小结 516 附录A教学版OpenMIPS各个模块的接口说明 517 A.1PC模块接口说明 517 A.2IF/ID模块接口说明 518 A.3ID模块接口说明 518 A.4Regfile模块接口说明 520 A.5ID/EX模块接口说明 520 A.6EX模块接口说明 521 A.7DIV模块接口说明 524 A.8EX/MEM模块接口说明 525 A.9MEM模块接口说明 527 A.10MEM/WB模块接口说明 529 A.11CP0模块接口说明 530 A.12LLbit模块接口说明 532 A.13HILO模块接口说明 532 A.14CTRL模块接口说明 533 附录BOpenMIPS实现的所有指令及对应的机器码 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.epub"网盘下载"

版权说明

1、本站不保存、不存储任何实质资源,以上二维码指向为网盘资源链接,其内容归对应版权方所有
2、如有侵犯版权的情况,请点击下面举报/反馈按钮反馈或发送邮件[email protected]投诉说明情况
3、我们核实后将第一时间删除相关页面内容,谢谢理解和配合

这些人下载过 (12)
  • 月夜独行
  • 风轻舟
  • 一拳打穿地球
  • 扫兴
  • 想甩都甩不掉
  • 病魂常似秋千索桥
  • 安城弥生
  • 春日收藏家
  • 仙女山的月亮
  • 来路当做归途
  • 温柔王者
  • 梦里梦到她
最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!