一直以来CPU内部是绝大多数IT工程师难以触及的领域。纵使学习过计算机架构相关课程,自己动手实现CPU也始终遥不可及,因为这涉及计算机系统的最底层——芯片设计。而近年来FPGA芯片产品的发展与普及打破了这一阻碍,利用内部电路可重编程的FPGA,我们几乎可以实现任何逻辑电路,自然也包括CPU。
本书就是在这样一个背景下孕育而生的。本书利用FPGA,为读者开启了一个崭新的自制CPU的世界。全书分为3章,分别介绍计算机系统最底层的3个部分:CPU设计制作、电路板设计制造以及汇编编程。将如此广泛的技术内容以实践的方式融合成一册,该书可谓首屈一指。
本书可以帮助软件工程师深入了解硬件与底层,开发出高效代码。硬件工程师可以在本书基础上设计定制硬件,开发高速计算机系统。相信所有读者都可以在本书的阅读过程中,体会到自制计算机系统的乐趣与热情。
......(更多)
作者简介:
水头 一寿(KAZUTOSHI SUITOU)
庆应义塾大学硕士毕业。现在在庆应义塾大学攻读博士学位。目前从事实时嵌入式系统的系统LSI相关研究和开发。兴趣为音乐、摄影、自行车等。在RESPON小组担任逻辑设计工作。
米泽 辽(RYO YONEZAWA)
庆应义塾大学硕士毕业后,进入东芝株式会社半导体与存储子公司工作。目前从事高速串行接口IP的开发。兴趣为电子制作、家庭服务器管理等。在RESPON小组担任电路板设计与封面设计工作。
藤田 裕士(YUJI FUJITA)
庆应义塾大学硕士毕业后,进入日本电气株式会社工作。目前从事固件开发工作。兴趣为音乐欣赏、吉他演奏等。在RESPON小组担任软件设计工作。
译者简介:
赵谦
2007年于青岛科技大学取得学士学位。2008年至今在日本熊本大学攻读博士学位。目前从事容错性FPGA架构及其CAD相关研究与开发。在FPGA领域著名国际会议FPGA、FPL以及ICFPT等发表过多篇学术论文。
......(更多)
第1章 CPU的设计与实现 1
1.1 序 2
1.2 计算机系统 4
1.2.1 什么是计算机 4
1.2.2 什么是CPU 5
专栏 CPU的位宽 8
1.2.3 什么是内存 8
1.2.4 什么是I/O 9
专栏 字节序 10
1.2.5 什么是总线 12
专栏 总线的优缺点 14
1.2.6 小结 14
专栏 计算机相关书籍 14
1.3 数字电路基础 15
1.3.1 什么是数字电路 15
1.3.2 数值表达 15
1.3.3 有符号二进制数 16
专栏 比特和字节 17
专栏 1K字节有多大 17
1.3.4 MOSFET的结构 17
1.3.5 逻辑运算 19
1.3.6 CMOS基本逻辑门电路 20
1.3.7 存储元件 21
专栏 建立时间与保持时间 24
1.3.8 组合电路和时序电路 25
1.3.9 时钟同步设计 25
1.3.10 小结 25
专栏 数字电路相关书籍 25
1.4 Verilog HDL语言 26
1.4.1 什么是Verilog HDL 26
1.4.2 电路描述 27
专栏 默认网络类型 32
专栏 组合电路描述中锁存器的推定与Don’t care 37
专栏 正逻辑与负逻辑 42
1.4.3 电路仿真 43
专栏 同步电路中信号变化的时序 45
1.4.4 Verilog HDL的仿真环境 50
1.4.5 小结 56
专栏 Verilog HDL相关书籍 56
1.5 系统蓝图 57
1.5.1 目标系统整体介绍 57
1.5.2 关于本章中的代码 58
专栏 字编址与字节位移 62
1.6 总线的设计与实现 63
1.6.1 总线的设计 63
1.6.2 总线的实现 66
1.6.3 小结 78
1.7 存储器的设计与实现 79
1.7.1 FPGA的RAM区域 79
1.7.2 ROM的设计与实现 81
1.7.3 小结 83
专栏 存储器相关书籍 83
1.8 AZ Processor的设计与实现 84
1.8.1 关于CPU 84
专栏 CPI和MIPS值 93
1.8.2 AZ Processor的设计 93
专栏 指令集架构与微架构 105
1.8.3 AZ Processor的实现 106
1.8.4 小结 159
专栏 计算机架构相关书籍 159
1.9 I/O的设计与实现 162
1.9.1 定时器 162
1.9.2 UART 167
专栏 UART实例 168
1.9.3 GPIO 181
1.9.4 小结 188
专栏 I/O相关书籍 188
1.10 AZPR SoC整体连接 189
1.10.1 各模块的连接 189
1.10.2 时钟模块的实现 191
1.10.3 顶层模块的实现 193
1.10.4 小结 193
1.11 AZPR SoC的仿真 194
1.11.1 仿真模型的编写 194
1.11.2 Testbench的编写 197
1.11.3 执行仿真 200
1.11.4 小结 201
1.12 本章总结 202
第2章 电路板的设计与制作 203
2.1 序 204
2.2 电路板规格206
2.2.1 电路板名称 206
2.2.2 电路板的构成 206
2.2.3 电路板尺寸 206
2.2.4 电路板层数 207
2.2.5 FPGA选型 207
2.2.6 外围电路的选定 208
专栏 关于FPGA 209
专栏 关于JTAG 211
2.3 元件选型 212
2.3.1 元件选型标准 212
2.3.2 元件选型 212
2.3.3 元件的选购 218
2.4 电路设计 221
2.4.1 下载规格书 222
2.4.2 配置电路 223
2.4.3 外围电路 228
2.4.4 电源电路 232
2.4.5 电路板设计环境 234
2.4.6 使用Eagle设计电路图 236
专栏 关于ULP 241
专栏 Eagle使用方法相关的书籍/说明书 241
2.4.7 完成的电路图 241
2.5 布局设计 247
2.5.1 电路板设计约束条件及布线策略 247
2.5.2 FPGA板的布局设计 248
2.5.3 电源板的布局设计 252
2.5.4 使用Eagle布局 254
2.5.5 完成的布局 259
2.6 制作元件库261
2.6.1 制作Symbol 261
2.6.2 制作Package 263
2.6.3 制作Device 264
2.7 电路板3D模型 269
2.7.1 软件使用说明 269
2.7.2 准备3D模型库 271
专栏 关于3D模型库的管理 278
2.7.3 制作电路板模型 279
2.8 制作感光板电路板 280
2.8.1 整体流程 280
2.8.2 制作光罩 282
2.8.3 粘合光罩 284
2.8.4 曝光 285
2.8.5 显像 288
2.8.6 蚀刻 289
2.8.7 阻焊剂 291
2.8.8 开孔 296
2.8.9 在背面安装VPort接头时的处理 298
2.8.10 制作通孔 299
2.8.11 飞线 300
2.9 使用电路板制造服务 302
2.9.1 电路板制造服务 302
2.9.2 DRC 302
2.9.3 输出Gerber数据 305
2.9.4 检查Gerber数据 306
专栏 执行DFM检查的方法 309
专栏 阻焊层遮罩的印刷设置 312
2.9.5 向P板.com公司下单制板 312
专栏 拼板数据的准备 314
2.9.6 向OLIMEX公司下单制板 318
2.10 组装电路板 321
2.10.1 电源板 321
2.10.2 组装FPGA板 321
2.11 功能测试 323
2.11.1 识别FPGA 323
2.11.2 诊断程序 323
2.12 本章总结 326
第3章 编程 327
3.1 序 328
3.2 开发环境 329
3.2.1 准备工作 329
3.2.2 FPGA开发环境 330
3.2.3 ISE WebPACK 331
3.2.4 UrJTAG 359
专栏 cblsrv-0.1_ft2232 370
3.2.5 交叉汇编程序 370
3.2.6 第一个程序 376
3.3 串口通信 381
3.3.1 安装Tera Term 381
3.3.2 编写程序 382
专栏 子程序 388
专栏 ASCII码 389
3.3.3 执行程序 390
3.4 程序加载器 391
3.4.1 XMODEM协议 391
3.4.2 编写程序 393
3.4.3 编写加载测试程序 402
3.4.4 执行程序 403
3.5 中断与异常 406
3.5.1 什么是中断 406
3.5.2 编写程序 410
3.5.3 执行程序 414
3.5.4 什么是异常 415
3.5.5 编写程序 415
3.5.6 执行程序 419
3.6 七段数码管 420
3.6.1 什么是七段数码管 420
3.6.2 七段数码管的控制 420
3.6.3 七段数码管计数器概要 422
3.6.4 编写程序 423
3.6.5 执行程序 428
3.7 制作一个实用程序 429
3.7.1 功能概要 429
3.7.2 制作程序 433
3.7.3 执行程序 446
3.8 结语 447
谢辞 448
后记 449
版权声明 450
......(更多)
RISC架构最大的特点是只使用载入和存储指令访问内存,这种架构成为载入存储架构。运算指令只能对寄存器中的数据进行操作。
......(更多)