《数字设计和计算机体系结构(原书第2版)》是2019年10月机械工业出版社出版的图书,作者是(美)戴维·莫尼·哈里斯。
本书以一种流行的方式介绍了从计算机组织和设计到更细节层次的内容,涵盖了数字逻辑设计的主要内容,展示了使用VHDL和Verilog这两种主要硬件描述语言设计MIPS处理器的技术细节,并通过MIPS微处理器的设计强化数字逻辑的概念。本书的典型特色是将数字逻辑和计算机体系结构融合,教学内容反映了当前数字电路设计的主流方法,并突出计算机体系结构的工程特点,书中的大量示例及习题也可以加强读者对基本概念和技术的理解和记忆。
目录
- Digital Design and Computer Architecture,Second Edition
- 出版者的话
- 译者序
- 本书赞誉
- 前言
- 第1章二进制1
- 1.1课程计划1
- 1.2控制复杂性的艺术1
- 1.2.1抽象1
- 1.2.2约束2
- 1.2.3三Y原则3
- 1.3数字抽象3
- 1.4数制4
- 1.4.1十进制数4
- 1.4.2二进制数5
- 1.4.3十六进制数6
- 1.4.4字节、半字节和全字7
- 1.4.5二进制加法8
- 1.4.6有符号的二进制数8
- 1.5逻辑门10
- 1.5.1非门11
- 1.5.2缓冲器11
- 1.5.3与门11
- 1.5.4或门11
- 1.5.5其他两输入逻辑门11
- 1.5.6多输入门12
- 1.6数字抽象13
- 1.6.1电源电压13
- 1.6.2逻辑电平13
- 1.6.3噪声容限13
- 1.6.4直流电压传输特性14
- 1.6.5静态约束15
- 1.7CMOS晶体管*16
- 1.7.1半导体16
- 1.7.2二极管17
- 1.7.3电容17
- 1.7.4nMOS和pMOS晶体管17
- 1.7.5CMOS非门19
- 1.7.6其他CMOS逻辑门19
- 1.7.7传输门20
- 1.7.8类nMOS逻辑20
- 1.8功耗*21
- 1.9总结和展望22
- 习题22
- 面试问题28
- 第2章组合逻辑设计29
- 2.1引言29
- 2.2布尔表达式31
- 2.2.1术语31
- 2.2.2与或式31
- 2.2.3或与式32
- 2.3布尔代数33
- 2.3.1公理33
- 2.3.2单变量定理33
- 2.3.3多变量定理34
- 2.3.4定理的统一证明方法35
- 2.3.5等式化简36
- 2.4从逻辑到门37
- 2.5多级组合逻辑39
- 2.5.1减少硬件39
- 2.5.2推气泡40
- 2.6X和Z41
- 2.6.1非法值X41
- 2.6.2浮空值Z41
- 2.7卡诺图42
- 2.7.1画圈的原理43
- 2.7.2卡诺图化简逻辑44
- 2.7.3无关项46
- 2.7.4小结47
- 2.8组合逻辑模块47
- 2.8.1复用器47
- 2.8.2译码器50
- 2.9时序51
- 2.9.1传播延迟和最小延迟51
- 2.9.2毛刺54
- 2.10总结55
- 习题55
- 面试问题60
- 第3章时序逻辑设计61
- 3.1引言61
- 3.2锁存器和触发器61
- 3.2.1SR锁存器62
- 3.2.2D锁存器63
- 3.2.3D触发器64
- 3.2.4寄存器64
- 3.2.5带使能端的触发器65
- 3.2.6带复位功能的触发器65
- 3.2.7晶体管级锁存器和触发器的设计*66
- 3.2.8小结66
- 3.3同步逻辑设计67
- 3.3.1一些有问题的电路67
- 3.3.2同步时序电路68
- 3.3.3同步电路和异步电路70
- 3.4有限状态机70
- 3.4.1有限状态机设计实例70
- 3.4.2状态编码74
- 3.4.3Moore型状态机和Mealy型状态机76
- 3.4.4状态机的分解79
- 3.4.5由电路图导出状态机80
- 3.4.6有限状态机小结82
- 3.5时序逻辑的时序82
- 3.5.1动态约束83
- 3.5.2系统时序83
- 3.5.3时钟偏移*87
- 3.5.4亚稳态88
- 3.5.5同步器89
- 3.5.6分辨时间的推导*90
- 3.6并行92
- 3.7总结94
- 习题95
- 面试问题100
- 第4章硬件描述语言101
- 4.1引言101
- 4.1.1模块101
- 4.1.2硬件描述语言的起源101
- 4.1.3模拟和综合102
- 4.2组合逻辑104
- 4.2.1位运算符104
- 4.2.2注释和空白104
- 4.2.3缩位运算符106
- 4.2.4条件赋值106
- 4.2.5内部变量106
- 4.2.6优先级109
- 4.2.7数字109
- 4.2.8Z和X110
- 4.2.9位混合111
- 4.2.10延迟112
- 4.3结构化建模113
- 4.4时序逻辑115
- 4.4.1寄存器115
- 4.4.2复位寄存器115
- 4.4.3带使能端的寄存器116
- 4.4.4多寄存器116
- 4.4.5锁存器119
- 4.5更多组合逻辑119
- 4.5.1case语句120
- 4.5.2if语句122
- 4.5.3带有无关项的真值表122
- 4.5.4阻塞赋值和非阻塞赋值124
- 4.6有限状态机127
- 4.7数据类型*130
- 4.7.1SystemVerilog130
- 4.7.2VHDL131
- 4.8参数化模块*133
- 4.9测试程序135
- 4.10总结138
- 习题138
- 面试问题145
- 第5章数字模块146
- 5.1引言146
- 5.2算术电路146
- 5.2.1加法146
- 5.2.2减法151
- 5.2.3比较器152
- 5.2.4算术逻辑单元153
- 5.2.5移位器和循环移位器154
- 5.2.6乘法*155
- 5.2.7除法*156
- 5.2.8补充阅读156
- 5.3数制157
- 5.3.1定点数157
- 5.3.2浮点数*157
- 5.4时序电路模块160
- 5.4.1计数器160
- 5.4.2移位寄存器160
- 5.5存储器阵列162
- 5.5.1概述162
- 5.5.2动态随机访问存储器164
- 5.5.3静态随机访问存储器165
- 5.5.4面积和延迟165
- 5.5.5寄存器文件165
- 5.5.6只读存储器165
- 5.5.7使用存储器阵列的逻辑167
- 5.5.8存储器HDL167
- 5.6逻辑阵列168
- 5.6.1可编程逻辑阵列169
- 5.6.2现场可编程逻辑门阵列169
- 5.6.3阵列实现*173
- 5.7总结174
- 习题174
- 面试问题180
- 第6章体系结构181
- 6.1引言181
- 6.2汇编语言182
- 6.2.1指令182
- 6.2.2操作数:寄存器、存储器和常数183
- 6.3机器语言187
- 6.3.1R类型指令187
- 6.3.2l类型指令188
- 6.3.3J类型指令189
- 6.3.4解释机器语言代码189
- 6.3.5存储程序189
- 6.4编程190
- 6.4.1算术/逻辑指令190
- 6.4.2分支193
- 6.4.3条件语句194
- 6.4.4循环195
- 6.4.5数组197
- 6.4.6函数调用200
- 6.5寻址方式206
- 6.6编译、汇编和装入208
- 6.6.1内存映射208
- 6.6.2转换成二进制代码和开始执行程序209
- 6.7其他主题*211
- 6.7.1伪指令211
- 6.7.2异常212
- 6.7.3有符号指令和无符号指令212
- 6.7.4浮点指令213
- 6.8从现实世界看:x86结构*214
- 6.8.1x86寄存器215
- 6.8.2x86操作数215
- 6.8.3状态标志216
- 6.8.4x86指令集216
- 6.8.5x86指令编码218
- 6.8.6x86的其他特性219
- 6.8.7小结219
- 6.9总结219
- 习题220
- 面试问题227
- 第7章微体系结构228
- 7.1引言228
- 7.1.1体系结构状态和指令集228
- 7.1.2设计过程229
- 7.1.3MIPS微体系结构230
- 7.2性能分析230
- 7.3单周期处理器231
- 7.3.1单周期数据路径231
- 7.3.2单周期控制235
- 7.3.3更多指令237
- 7.3.4性能分析239
- 7.4多周期处理器240
- 7.4.1多周期数据路径240
- 7.4.2多周期控制244
- 7.4.3更多指令252
- 7.4.4性能分析254
- 7.5流水线处理器255
- 7.5.1流水线数据路径257
- 7.5.2流水线控制258
- 7.5.3冲突258
- 7.5.4更多指令269
- 7.5.5性能分析269
- 7.6硬件描述语言表示*270
- 7.6.1单周期处理器270
- 7.6.2通用模块274
- 7.6.3基准测试程序276
- 7.7异常*279
- 7.8高级微体系结构*281
- 7.8.1深流水线282
- 7.8.2分支预测282
- 7.8.3超标量处理器284
- 7.8.4乱序处理器285
- 7.8.5寄存器重命名287
- 7.8.6单指令流多数据288
- 7.8.7多线程288
- 7.8.8同构多处理器289
- 7.8.9异构多处理器289
- 7.9从现实世界看:x86微体系结构*290
- 7.10总结295
- 习题296
- 面试问题300
- 第8章存储器和输入/输出系统301
- 8.1引言301
- 8.2存储器系统性能分析304
- 8.3高速缓存305
- 8.3.1高速缓存中存放的数据305
- 8.3.2高速缓存中的数据查找305
- 8.3.3数据的替换311
- 8.3.4高级高速缓存设计*312
- 8.3.5MIPS高速缓存的发展*314
- 8.4虚拟存储器315
- 8.4.1地址转换316
- 8.4.2页表317
- 8.4.3转换后备缓冲器318
- 8.4.4存储器保护319
- 8.4.5替换策略*319
- 8.4.6多级页表*319
- 8.5I/O简介321
- 8.6嵌入式I/O系统322
- 8.6.1PIC32MX675F512H微控制器322
- 8.6.2通用数字I/O326
- 8.6.3串行I/O328
- 8.6.4计时器336
- 8.6.5中断337
- 8.6.6模拟I/O339
- 8.6.7其他微控制器外设343
- 8.7PC I/O系统358
- 8.7.1USB359
- 8.7.2PCI和PCI Express360
- 8.7.3DDR3内存360
- 8.7.4网络360
- 8.7.5SATA361
- 8.7.6连接到PC361
- 8.8从现实世界看:x86存储器和I/O系统*363
- 8.8.1x86高速缓存系统363
- 8.8.2x86虚拟存储器364
- 8.8.3x86可编程I/O365
- 8.9总结365
- 后记365
- 习题365
- 面试问题371
- 附录A数字系统实现372
- 附录BMIPS指令396
- 附录CC语言编程400
- 附录DMIPS处理器的FPGA实现433
- 补充阅读452
- 索引454