第1章 引言 1
1.1 关于数字设计 1
1.2 模拟与数字 2
1.3 模拟信号 5
1.4 数字逻辑信号 5
1.5 逻辑电路与门电路 6
1.6 数字设计的软件技术 9
1.7 集成电路 11
1.8 逻辑族和CMOS 13
1.9 CMOS逻辑电路 13
1.10 可编程器件 17
1.11 专用集成电路 19
1.12 印制电路板 19
1.13 数字设计层次 20
1.14 成本最小化 22
1.15 继续学习 23
训练题 23
第2章 数制和编码 24
2.1 按位计数制 24
2.2 二进制、八进制和十六进制 25
2.3 二-十进制转换 27
2.4 二进制数的加法和减法 29
2.5 负数的表示 31
2.5.1 原码表示法 31
2.5.2 补码数制 31
2.5.3 二进制补码表示法 32
2.5.4 二进制反码表示法 33
2.5.5 余码表示法 33
2.6 二进制补码的加法和减法 33
2.6.1 加法规则 33
2.6.2 图示法 34
2.6.3 溢出 35
2.6.4 减法规则 35
2.6.5 二进制补码与无符号二进制数 36
2.7 二进制反码的加法和减法 37
2.8 二进制乘法 38
2.9 二进制除法 39
2.10 十进制数的二进制编码 40
2.11 格雷码 42
2.12 字符编码 43
2.13 动作、条件和状态的编码 45
2.14 n维体与距离 46
2.15 检错码和纠错码 47
2.15.1 检错码 48
2.15.2 纠错码与多重检错码 49
2.15.3 汉明码 51
2.15.4 循环冗余校验码 53
2.15.5 二维码 53
2.15.6 校验和码 55
2.15.7 n中取m码 55
2.16 用于串行数据传输与存储的编码 55
2.16.1 并行/串行数据 55
2.16.2 串行线路编码 56
参考资料 58
训练题 59
练习题 61
第3章 开关代数和组合逻辑 64
3.1 开关代数 65
3.1.1 公理 66
3.1.2 单变量定理 67
3.1.3 二变量定理和三变量定理 68
3.1.4 n变量定理 69
3.1.5 对偶性 71
3.1.6 逻辑函数的标准表示法 72
3.2 组合电路分析 74
3.3 组合电路的综合 79
3.3.1 电路描述与设计 80
3.3.2 电路处理 82
3.3.3 组合电路最小化 85
3.3.4 卡诺图 86
3.4 时序冒险 88
3.4.1 静态冒险 88
3.4.2 利用卡诺图发现静态冒险 89
3.4.3 动态冒险 91
3.4.4 设计无冒险电路 91
参考资料 92
训练题 93
练习题 94
第4章 数字设计实践 97
4.1 文档标准 97
4.1.1 方框图 98
4.1.2 门的符号 100
4.1.3 信号名和有效电平 101
4.1.4 引脚的有效电平 102
4.1.5 常量逻辑信号 103
4.1.6 “圈到圈”逻辑设计 104
4.1.7 HDL模型中的信号命名 106
4.1.8 绘制布局图 108
4.1.9 总线 110
4.1.10 附带的图示信息 111
4.2 电路时序 112
4.2.1 时序图 112
4.2.2 传输延迟 114
4.2.3 时序说明 115
4.2.4 采样时序说明 116
4.2.5 时序分析工具 119
4.3 基于HDL的数字设计 120
4.3.1 HDL的历史 120
4.3.2 为什么用HDL 121
4.3.3 HDL的EDA工具组 121
4.3.4 基于HDL的设计流程 123
参考资料 126
训练题 126
练习题 128
第5章 Verilog硬件描述语言 129
5.1 Verilog模型和模块 130
5.2 逻辑系统、网格、变量和常量 134
5.3 向量和操作符 137
5.4 数组 140
5.5 逻辑操作符和表达式 142
5.6 编译器命令 143
5.7 结构化模型 144
5.8 数据流模型 148
5.9 行为化模型(过程代码) 149
5.9.1 always语句与程序块 149
5.9.2 过程语句 151
5.9.3 推理出的锁存器 151
5.9.4 赋值语句 151
5.9.5 begin-end程序块 153
5.9.6 if和if-else语句 154
5.9.7 case语句 155
5.9.8 循环语句 158
5.10 函数和任务 160
5.11 时间维度 163
5.12 模拟 164
5.13 测试平台 165
5.14 时序逻辑设计的Verilog特性 169
5.15 综合 169
参考资料 170
训练题 171
练习题 171
第6章 基本组合逻辑元件 173
6.1 只读存储器 175
6.1.1 ROM和真值表 175
6.1.2 用ROM实现任意组合逻辑函数 176
6.1.3 FPGA查询表 178
6.2 组合型PLD 179
6.2.1 可编程逻辑阵列 179
6.2.2 可编程阵列逻辑器件 181
6.3 译码和选择 183
6.3.1 一种更加数学化的译码器定义 184
6.3.2 二进制译码器 185
6.3.3 更大型的译码器 188
6.3.4 用Verilog实现的译码器 190
6.3.5 定制的译码器 200
6.3.6 七段译码器 204
6.3.7 二进制编码器 205
6.4 多路复用器 206
6.4.1 门级多路复用器电路 208
6.4.2 扩展多路复用器 212
6.4.3 多路复用器、多路分配器和总线 212
6.4.4 用Verilog实现多路复用器 214
参考资料 217
训练题 218
练习题 219
第7章 更多的组合构件 224
7.1 三态器件 224
7.1.1 三态缓冲器 224
7.1.2 标准MSI三态缓冲器 226
7.1.3 用Verilog实现三态输出 229
7.1.4 用FPGA实现三态输出 230
7.2 优先编码器 232
7.2.1 级联优先编码器 233
7.2.2 用Verilog实现优先编码器 234
7.3 异或门和奇偶校验功能 238
7.3.1 异或门和异或非门 238
7.3.2 奇偶校验电路 240
7.3.3 奇偶校验的应用 240
7.3.4 用Verilog实现异或门和奇偶校验电路 243
7.4 比较器 247
7.4.1 比较器结构 247
7.4.2 迭代电路 248
7.4.3 迭代比较器电路 249
7.4.4 数值比较器 250
7.4.5 用HDL实现比较器 253
7.4.6 用Verilog实现比较器 254
7.4.7 比较器测试平台 257
7.4.8 比较比较器的性能 261
7.5 用Verilog实现的随机逻辑示例 265
训练题 270
练习题 272
第8章 组合算术元件 278
8.1 加法和减法 278
8.1.1 半加器和全加器 278
8.1.2 串行进位加法器 279
8.1.3 减法器 280
8.1.4 先行进位加法器 281
8.1.5 组间串行进位加法器 283
8.1.6 组间先行进位 285
8.1.7 MSI算术逻辑单元 287
8.1.8 用Verilog实现加法器 288
8.1.9 并行前缀加法器 295
8.1.10 FPGA CARRY4元件 300
8.2 移位和旋转 302
8.2.1 桶形移位器 302
8.2.2 用Verilog实现桶形移位器 305
8.3 乘法 311
8.3.1 组合乘法器结构 311
8.3.2 用Verilog实现乘法 314
8.4 除法 319
8.4.1 基本无符号二进制除法算法 319
8.4.2 用Verilog实现除法 320
参考资料 324
训练题 325
练习题 325
第9章 状态机 329
9.1 状态机基础 329
9.2 状态机结构和分析 332
9.2.1 状态机结构 332
9.2.2 输出逻辑 333
9.2.3 状态机的时序 334
9.2.4 使用D触发器的状态机分析 335
9.3 用状态表设计状态机 341
9.3.1 状态表设计举例 342
9.3.2 状态最小化 345
9.3.3 状态赋值 346
9.3.4 采用D触发器的综合 350
9.3.5 超越状态表 353
9.4 用状态图设计状态机 354
9.5 用ASM图设计状态机 358
9.6 用Verilog设计状态机 362
参考资料 364
训练题 365
练习题 367
第10章 时序逻辑元件 372
10.1 双稳态元件 372
10.1.1 数字分析 372
10.1.2 模拟分析 372
10.1.3 亚稳态特性 374
10.2 锁存器和触发器 374
10.2.1 S-R锁存器 375
10.2.2 ?锁存器 377
10.2.3 D锁存器 377
10.2.4 边沿触发D触发器 379
10.2.5 具有使能端的边沿触发D触发器 381
10.2.6 T触发器 381
10.3 用Verilog实现锁存器和触发器 382
10.3.1 实例化语句和库元件 382
10.3.2 行为化锁存器和触发器模型 386
10.3.3 更多关于用Verilog实现时钟的讨论 392
10.4 多位寄存器和锁存器 392
10.4.1 MSI寄存器和锁存器 393
10.4.2 用Verilog实现多位寄存器和锁存器 394
10.5 各种各样的锁存器和双稳态器件的应用 395
10.5.1 开关消颤 395
10.5.2 总线保持器电路 396
10.6 时序PLD 397
10.7 FPGA时序逻辑元件 398
10.8 反馈时序电路 402
10.8.1 基本分析 402
10.8.2 分析具有多个反馈回路的电路 405
10.8.3 反馈时序电路设计 407
10.8.4 用Verilog实现反馈时序电路 408
参考资料 409
训练题 409
练习题 411
第11章 计数器和移位寄存器 416
11.1 计数器 416
11.1.1 行波计数器 417
11.1.2 同步计数器 417
11.1.3 一个通用的4位计数器电路 418
11.1.4 二进制计数器状态的译码 421
11.1.5 用Verilog实现计数器 422
11.2 移位寄存器 426
11.2.1 移位寄存器的结构 426
11.2.2 移位寄存器型计数器 429
11.2.3 环形计数器 429
11.2.4 Johnson计数器 431
11.2.5 线性反馈移位寄存器型计数器 433
11.2.6 用Verilog实现移位寄存器 436
11.2.7 时序发生器举例 439
11.2.8 LFSR举例 445
11.3 迭代电路与时序电路 447
参考资料 449
训练题 450
练习题 452
第12章 用Verilog实现状态机 457
12.1 Verilog状态机编码风格 457
12.1.1 基本的编码风格 457
12.1.2 一个Verilog状态机举例 458
12.1.3 组合的状态存储器和次态逻辑 460
12.1.4 复位输入 461
12.1.5 用Verilog实现Moore型流水线输出 462
12.1.6 不用状态表的直接Verilog编程 463
12.1.7 状态机抽取 464
12.2 Verilog状态机测试平台 465
12.2.1 状态机测试平台构造方法 465
12.2.2 测试平台举例 466
12.2.3 为测试检查次态逻辑 470
12.2.4 总结 471
12.3 1计数器 472
12.4 组合锁 474
12.5 雷鸟车尾灯 477
12.6 重新设计交通灯控制器 480
12.7 猜谜游戏 484
12.8 “无关”状态编码 487
12.9 状态机分解 489
12.10 三部曲游戏 494
参考资料 500
训练题 501
练习题 502
第13章 时序电路设计实践 508
13.1 时序电路文档实践 508
13.1.1 一般要求 508
13.1.2 逻辑符号 509
13.1.3 状态机描述 509
13.1.4 时序图和时序规格说明 510
13.2 同步设计方法论 514
13.2.1 同步系统结构 514
13.2.2 一个同步系统设计举例 516
13.3 同步设计的难点 521
13.3.1 时钟偏移 521
13.3.2 选通时钟 524
13.3.3 异步输入 527
13.4 同步器故障和亚稳定性 529
13.4.1 同步器故障 529
13.4.2 亚稳定性消解时间 530
13.4.3 可靠同步器设计 530
13.4.4 亚稳定的时序分析 531
13.4.5 更好的同步器 533
13.4.6 其他同步器设计 534
13.5 双时钟同步举例 536
参考资料 550
训练题 550
练习题 551
第14章 数字电路 554
14.1 CMOS逻辑电路 555
14.1.1 CMOS逻辑电平 555
14.1.2 MOS晶体管 556
14.1.3 基本的CMOS反相器电路 557
14.1.4 CMOS“与非”门和“或非”门 558
14.1.5 扇入 559
14.1.6 非反相门 560
14.1.7 CMOS“与或非”门和“或与非”门 561
14.2 CMOS电路的电气特性 563
14.2.1 概述 563
14.2.2 数据表和规格说明 564
14.3 CMOS静态电气特性 566
14.3.1 逻辑电平和噪声容限 566
14.3.2 带电阻性负载的电路特性 567
14.3.3 带非理想输入的电路特性 571
14.3.4 扇出 573
14.3.5 负载效应 574
14.3.6 未用的输入端 574
14.3.7 如何损坏CMOS器件 575
14.4 CMOS动态电气特性 575
14.4.1 转换时间 576
14.4.2 传输延迟 580
14.4.3 功率损耗 581
14.4.4 电流尖峰与去耦电容器 582
14.4.5 电感效应 583
14.4.6 同时切换与地电平弹跳 584
14.5 其他CMOS输入和输出结构 586
14.5.1 传输门 586
14.5.2 施密特触发器输入 587
14.5.3 三态输出 588
14.5.4 漏极开路输出 589
14.5.5 驱动发光二极管和继电器 591
14.5.6 多源总线 592
14.5.7 线连逻辑 593
14.5.8 上拉电阻 593
14.6 CMOS逻辑系列 596
14.6.1 HC和HCT 596
14.6.2 AHC和AHCT 597
14.6.3 HC、HCT、AHC和AHCT的电气特性 597
14.6.4 AC和ACT 600
14.6.5 FCT和FCT-T 600
14.7 低电压CMOS逻辑和接口 601
14.7.1 3.3 V LVTTL和LVCMOS的逻辑电平 601
14.7.2 5V容许输入 602
14.7.3 5V容许输出 603
14.7.4 TTL/LVTTL接口小结 604
14.7.5 低于3.3 V的逻辑电平 604
14.8 差分信号 605
参考资料 605
训练题 606
练习题 609
第15章 ROM、RAM和FPGA 613
15.1 只读存储器 613
15.1.1 ROM的内部结构 614
15.1.2 二维译码 615
15.1.3 商用ROM类型 616
15.1.4 并行ROM接口 619
15.1.5 并行ROM时序 620
15.1.6 与非闪存的字节串行接口 621
15.1.7 与非存储器的时序和存取带宽 625
15.1.8 与非存储器的存储管理 626
15.2 读/写存储器 627
15.3 静态RAM 628
15.3.1 静态RAM的输入和输出 628
15.3.2 静态RAM的内部结构 629
15.3.3 静态RAM的时序 630
15.3.4 标准异步SRAM 632
15.3.5 同步SRAM 632
15.4 动态RAM 636
15.4.1 动态RAM的结构 636
15.4.2 SDRAM的时序 638
15.4.3 DDR SDRAM 641
15.5 现场可编程门阵列 641
15.5.1 Xilinx 7系列FPGA家族 642
15.5.2 CLB和其他逻辑资源 645
15.5.3 输入/输出块 647
15.5.4 可编程互连 649
参考资料 650
训练题 651
练习题 651