内容简介
一直以来CPU内部是绝大多数IT工程师难以触及的领域。纵使学习过计算机架构相关课程,自己动手实现CPU也始终遥不可及,因为这涉及计算机系统的层——芯片设计。而近年来FPGA芯片产品的发展与普及打破了这一阻碍,利用内部电路可重编程的FPGA,我们几乎可以实现任何逻辑电路,自然也包括CPU。
本书就是在这样一个背景下孕育而生的。本书利用FPGA,为读者开启了一个崭新的自制CPU的世界。全书分为3章,分别介绍计算机系统层的3个部分:CPU设计制作、电路板设计制造以及汇编编程。将如此广泛的技术内容以实践的方式融合成一册,该书可谓屈一指。
本书可以帮助软件工程师深入了解硬件与底层,开发出代码。硬件工程师可以在本书基础上设计定制硬件,开发高速计算机系统。相信所有读者都可以在本书的阅读过程中,体会到自制计算机系统的乐趣与热情。
目录
第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
摘要与插图
第1章:CPU的设计与实现本章中,我们先着手设计CPU、内存、I/O以及它们之间的连接总线,随后使用硬件描述语言Verilog
HDL进行实现。将这些模块组合,形成一台简单的计算机。
本章的特点是使用硬件描述语言实现计算机的各个基础部件,并详细讲解制作过程。通过学习本章内容,我们不仅可以理解计算机的各组成要素,还能动手制作并实现它们。
1.1 序...............................................................2
1.2 计算机系统................................................4
1.3 数字电路基础............................................15
1.4 Verilog HDL语言......................................26
1.5 系统蓝图...................................................57
1.6 总线的设计与实现.....................................63
1.7 存储器的设计与实现.................................79
1.8 AZ Processor的设计与实现......................84
1.9 I/O的设计与实现....................................162
1.10 AZPR SoC整体连接..............................189
1.11 AZPR SoC的仿真.................................194
1.12 本章总结...............................................202
1.1 序
本章将实现一台简单的计算机系统的SoC(System-on-a-Chip,片上系统)。它以CPU
为核心,同时实现了负责存储程序和数据的内存、负责和外部进行输入输出的I/O 以及它们之间的连接总线。SoC
是将一整套系统集成到单一芯片的集成电路设计方法。
开发之前, 我们先来确定CPU 的名字。我们为这次开发的CPU 取名为AZ
Processor,因为本书旨在从头到尾亲自动手设计和实现一台计算机,这几个英文字母就含有从A 到Z 全部亲手制作的意思。然后,AZ
Processor、内存、各种I/O 通过总线连接形成的SoC,我们称之为AZPR SoC(AZ Processor
片上系统)。图1-1 为AZPR SoC 的概要。
图1-1 AZPR SoC 的概要
图1-2 列出了本章的结构。1.2 节~1.4 节分别简单介绍计算机系统、数字电路基础和Verilog HDL 语言。这3
节的内容是制作AZPR SoC 需要掌握的础的知识。已经掌握这些知识和设计经验的读者,可以跳过此部分。
1.5 节~1.10 节是本章主要的设计和实现部分。1.5 节将对AZPR SoC 进行说明。1.6 节~1.9
节将分别对总线、内存、CPU 和I/O 的设计和实现进行说明。1.10 节将各个模块连接,完成AZPR SoC 的制作。1.11
节介绍AZPR SoC 的仿真。的1.12 节对本章进行总结。
图1-2 本章的构成
1.2 计算机系统
本节将介绍计算机系统的构成要素及其功能。
什么是计算机
计算机是根据程序进行运算和数据处理的计算机器。近年来,随着PC(Personal
Computer,个人电脑)在普通家庭中的广泛普及,计算机对我们的生活产生了深远的影响。如今,不仅是PC,与我们生活息息相关的手机、家电等也广泛应用了计算机。
通常,计算机由以下几部分组成:负责计算和处理数据的CPU、负责存储程序和数据的存储器,以及和外部进行数据交换的I/O(Input/Output,输入输出装置)。各部分通过总线连接就构成了一台计算机。
计算机的构成要素如图1-3 所示。以PC 机的组成为例,一般使用Intel 或AMD 公司的CPU,DDR3 SDRAM
之类的内存,另外还有键盘、鼠标、显示器等I/O。这些CPU、内存、I/O、总线并不局限于PC,多数计算机都是由这四大要素组成。
图1-3 计算机的构成要素
1.2.2 什么是CPU
CPU 是计算机中进行各种运算