第1章 数字设计方法概论 1
1.1 设计方法简介 1
1.1.1 设计规格 3
1.1.2 设计划分 3
1.1.3 设计输入 3
1.1.4 仿真与功能验证 4
1.1.5 设计整合与验证 5
1.1.6 预综合完成 5
1.1.7 门级综合与工艺映射 5
1.1.8 后综合设计确认 5
1.1.9 后综合时序验证 6
1.1.10 测试生成与故障模拟 6
1.1.11 布局与布线 6
1.1.12 物理和电气设计规则检查 6
1.1.13 提取寄生参量 7
1.1.14 设计完成 7
1.2 IC工艺选择 7
1.3 后续内容概览 8
参考文献 8
第2章 组合逻辑设计回顾 10
2.1 组合逻辑与布尔代数 10
2.1.1 ASIC库单元 10
2.1.2 布尔代数 12
2.1.3 狄摩根定律 13
2.2 布尔代数化简定理 14
2.3 组合逻辑的表示 15
2.3.1 积之和表示法 16
2.3.2 和之积表示法 17
2.4 布尔表达式的化简 18
2.4.1 异或表达式的化简 23
2.4.2 卡诺图(积之和形式) 23
2.4.3 卡诺图(和之积形式) 25
2.4.4 卡诺图与任意项 25
2.4.5 扩展的卡诺图 26
2.5 毛刺与冒险 27
2.5.1 静态冒险的消除(积之和形式) 28
2.5.2 消除两级电路静态冒险的小结 30
2.5.3 多级电路中的静态冒险 30
2.5.4 消除多级电路静态冒险的小结 32
2.5.5 动态冒险 32
2.6 逻辑设计模块 34
2.6.1 与非-或非结构 34
2.6.2 多路复用器 37
2.6.3 多路解复用器 38
2.6.4 编码器 38
2.6.5 优先编码器 39
2.6.6 译码器 40
2.6.7 优先译码器 41
参考文献 41
习题 41
第3章 时序逻辑设计基础 43
3.1 存储元件 43
3.1.1 锁存器 43
3.1.2 透明锁存器 44
3.2 触发器 45
3.2.1 D触发器 45
3.2.2 主从触发器 46
3.2.3 J-K触发器 48
3.2.4 T触发器 48
3.3 总线与三态器件 49
3.4 时序机设计 50
3.5 状态转移图 52
3.6 设计举例:BCD码到余3码的转换器 53
3.7 数据传输的串行线码转换器 57
3.7.1 设计举例:用Mealy型FSM实现串行线性码转换 58
3.7.2 设计举例:用Moore型FSM实现串行线码转换 60
3.8 状态化简与等价状态 61
参考文献 63
习题 64
第4章 Verilog逻辑设计介绍 65
4.1 组合逻辑的结构化模型 65
4.1.1 Verilog原语和设计封装 66
4.1.2 Verilog结构化模型 67
4.1.3 模块端口 68
4.1.4 语言规则 68
4.1.5 自顶向下的设计和模块嵌套 69
4.1.6 设计层次和源代码结构 71
4.1.7 Verilog矢量 71
4.1.8 结构化连接 72
4.2 逻辑系统设计验证及测试方法 75
4.2.1 Verilog中的四值逻辑和信号解析 75
4.2.2 测试方法 75
4.2.3 测试平台的信号发生器 77
4.2.4 事件驱动仿真 78
4.2.5 测试模板 79
4.2.6 定长数 79
4.3 传播延时 80
4.3.1 惯性延时 81
4.3.2 传输延时 82
4.4 组合与时序逻辑的Verilog真值表模型 82
参考文献 87
习题 87
第5章 用组合与时序逻辑的行为级模型进行逻辑设计 89
5.1 行为建模 89
5.2 行为级建模的数据类型的简要介绍 90
5.3 基于布尔方程的组合逻辑行为级模型 90
5.4 传播延时与连续赋值 92
5.5 Verilog中的锁存器和电平敏感电路 93
5.6 触发器和锁存器的周期性行为模型 94
5.7 周期性行为和边沿检测 95
5.8 行为建模方式的比较 96
5.8.1 连续赋值模型 96
5.8.2 数据流/寄存器传输级模型 97
5.8.3 基于算法的模型 99
5.8.4 端口名称:风格问题 100
5.8.5 行为级模型仿真 100
5.9 多路复用器、编码器和译码器的行为模型 101
5.10 线性反馈移位寄存器的数据流模型 106
5.11 用循环算法的数字机模型 107
5.11.1 IP(知识产权)的复用和参数化模型 110
5.11.2 时钟发生器 111
5.12 多循环操作状态机 112
5.13 设计文件中的函数和任务:是精明还是愚蠢? 113
5.13.1 任务 113
5.13.2 函数 114
5.14 行为建模的算法状态机图 116
5.15 ASMD图 117
5.16 计数器、移位寄存器和寄存器组的行为级模型 120
5.16.1 计数器 120
5.16.2 移位寄存器 124
5.16.3 寄存器组和寄存器(存储器)阵列 127
5.17 用于异步信号的去抖动开关、亚稳定性和同步装置 129
5.18 设计实例:键盘扫描器和编码器 133
参考文献 138
习题 139
第6章 组合逻辑与时序逻辑的综合 144
6.1 综合简介 144
6.1.1 逻辑综合 145
6.1.2 RTL综合 150
6.1.3 高级综合 150
6.2 组合逻辑的综合 151
6.2.1 优先级结构的综合 153
6.2.2 利用逻辑无关紧要条件 154
6.2.3 ASIC单元与资源共享 157
6.3 带锁存器的时序逻辑综合 158
6.3.1 锁存器的无意综合 159
6.3.2 锁存器的有意综合 162
6.4 三态器件和总线接口的综合 164
6.5 带有触发器的时序逻辑综合 165
6.6 显式状态机的综合 168
6.6.1 BCD码/余3码转换器的综合 168
6.6.2 设计举例:Mealy型NRZ码/Manchester线性码转换器的综合 171
6.6.3 设计举例:Moore型NRZ码/Manchester线性码转换器的综合 172
6.6.4 设计举例:序列检测器的综合 174
6.7 寄存器逻辑 181
6.8 状态编码 185
6.9 隐式状态机、寄存器和计数器的综合 187
6.9.1 隐式状态机 187
6.9.2 计数器综合 187
6.9.3 寄存器综合 189
6.10 复位 192
6.11 门控时钟与时钟使能的综合 194
6.12 预测综合结果 195
6.12.1 数据类型综合 195
6.12.2 运算符分组 195
6.12.3 表达式替代 196
6.13 循环的综合 198
6.13.1 不带内嵌定时控制的静态循环 198
6.13.2 带内嵌定时控制的静态循环 200
6.13.3 不带内嵌定时控制的非静态循环 202
6.13.4 带内嵌定时控制的非静态循环 203
6.13.5 用状态机替代不可综合的循环 205
6.14 要避免的设计陷阱 209
6.15 分割与合并:设计划分 209
参考文献 210
习题 211
第7章 数据通路控制器的设计与综合 216
7.1 时序状态机的划分 216
7.2 设计实例:二进制计数器 217
7.3 RISC存储程序机的设计与综合 221
7.3.1 RISC SPM:处理器 221
7.3.2 RISC SPM:ALU 222
7.3.3 RISC SPM:控制器 222
7.3.4 RISC SPM:指令集 223
7.3.5 RISC SPM:控制器设计 224
7.3.6 RISCSPM:程序执行 234
7.4 设计实例:UART 236
7.4.1 UART的操作 236
7.4.2 UART发送器 237
7.4.3 UART接收器 246
参考文献 255
习题 255
第8章 可编程逻辑及存储器件 267
8.1 可编程逻辑器件 268
8.2 存储器件 268
8.2.1 只读存储器 268
8.2.2 可编程ROM(PROM) 270
8.2.3 可擦除ROM 271
8.2.4 基于ROM的组合逻辑实现 272
8.2.5 用于ROM的Verilog系统任务 272
8.2.6 ROM的比较 274
8.2.7 基于ROM的状态机 274
8.2.8 闪存 276
8.2.9 静态随机存储器(SRAM) 276
8.2.1 0铁电非易失性存储器 291
8.3 可编程逻辑阵列(PLA) 291
8.3.1 PLA最小化 293
8.3.2 PLA建模 295
8.4 可编程阵列逻辑(PAL) 297
8.5 PLD的可编程性 298
8.6 复杂可编程逻辑器件 298
8.7 现场可编程门阵列 298
8.7.1 FPGA在ASIC市场中的角色 299
8.7.2 FPGA技术 300
8.7.3 Xilinx公司Virtex系列FPGA 301
8.8 片上系统(SoC)的嵌入式可编程IP核 302
8.9 基于Verilog的FPGA设计流程 302
8.1 0 FPGA综合 303
参考文献 305
相关网站 305
习题及基于FPGA的设计训练 305
第9章 数字处理器的算法和架构 330
9.1 算法、循环嵌套程序和数据流图 330
9.2 设计实例:半色调像素图像转换器 332
9.2.1 半色调像素图像转换器的原型设计 334
9.2.2 基于NLP的半色调像素图像转换器结构 337
9.2.3 半色调像素图像转换器的最小并行处理器结构 342
9.2.4 半色调像素图像转换器:设计权衡 353
9.2.5 带反馈数据流图的结构 353
9.3 数字滤波器和信号处理器 358
9.3.1 FIR滤波器 360
9.3.2 数字滤波器设计过程 362
9.3.3 IIR滤波器 364
9.4 构建信号处理器的基本运算单元模型 367
9.4.1 积分器(累加器) 367
9.4.2 微分器 369
9.4.3 抽样和插值滤波器 369
9.5 流水线结构 373
9.5.1 设计实例:流水线型加法器 375
9.5.2 设计实例:流水线型FIR滤波器 380
9.6 环形缓冲器 380
9.7 异步FIFO——跨越时钟域的同步问题 383
9.7.1 简化异步FIFO 384
9.7.2 异步FIFO的时钟同步 391
参考文献 406
习题 406
第10章 算术处理器架构 412
10.1 数的表示方法 412
10.1.1 负整数的原码表示 412
10.1.2 负整数的反码表示方法 413
10.1.3 正数和负数的补码表示方法 414
10.1.4 小数的表示 415
10.2 加减法功能单元 415
10.2.1 行波进位加法器 415
10.2.2 超前进位加法器 415
10.2.3 上溢出和下溢出 419
10.3 乘法运算功能单元 419
10.3.1 组合(并行)二进制乘法器 419
10.3.2 时序二进制乘法器 422
10.3.3 时序乘法器设计:层次化分解 423
10.3.4 基于STG的控制器设计 424
10.3.5 基于STG的高效二进制时序乘法器 428
10.3.6 基于ASMD的时序二进制乘法器 433
10.3.7 基于ASMD的高效二进制时序乘法器 437
10.3.8 基于ASMD数据通路和控制器设计的总结 441
10.3.9 精简寄存器时序乘法器 441
10.3.1 0隐式状态机二进制乘法器 445
10.3.1 1 Booth算法时序乘法器 454
10.3.1 2比特对编码 464
10.4 有符号二进制数乘法 470
10.4.1 有符号数的乘积:被乘数为负,乘数为正 470
10.4.2 有符号数的乘积:被乘数为正,乘数为负 470
10.4.3 有符号数的乘积:被乘数、乘数均为负 472
10.5 小数乘法 472
10.5.1 有符号小数:被乘数、乘数均为正 473
10.5.2 有符号小数:被乘数为负,乘数为正 473
10.5.3 有符号小数:被乘数为正,乘数为负 474
10.5.4 有符号小数:被乘数、乘数均为负 474
10.6 除法功能单元 474
10.6.1 无符号二进制数的除法 475
10.6.2 无符号二进制数的高效除法 480
10.6.3 精简寄存器时序除法器 487
10.6.4 有符号二进制数(补码)的除法 491
10.6.5 带符号的计算 491
参考文献 493
习题 494
第11章 后综合设计任务 498
11.1 后综合设计验证 498
11.2 后综合时序验证 500
11.2.1 静态时序分析 502
11.2.2 时序规范 503
11.2.3 影响时序的因素 505
11.3 ASIC中时序违约的消除 508
11.4 虚假路径 509
11.5 用于时序验证的系统任务 511
11.5.1 时序检查:建立时间条件 511
11.5.2 时序检查:保持时间约束 512
11.5.3 时序检查:建立时间和保持时间约束 512
11.5.4 时钟检查:脉冲宽度约束 513
11.5.5 时序检查:信号偏移约束 513
11.5.6 时序检查:时钟周期 513
11.5.7 时序检查:恢复时间 514
11.6 故障模拟及制造测试 514
11.6.1 电路缺陷和故障 515
11.6.2 故障检测与测试 517
11.6.3 D标记法 518
11.6.4 组合电路的自动测试模板生成 520
11.6.5 故障覆盖和缺陷级别 522
11.6.6 时序电路的测试生成 522
11.7 故障模拟 524
11.7.1 故障解析 525
11.7.2 串行故障模拟 525
11.7.3 并行故障模拟 526
11.7.4 并发性故障模拟 526
11.7.5 概率性故障模拟 526
11.8 JTAG端口和可测性设计 526
11.8.1 边界扫描和JTAG端口 527
11.8.2 JTGA操作模式 528
11.8.3 JTAG寄存器 528
11.8.4 JTAG指令 530
11.8.5 TAP结构 531
11.8.6 TAP控制器状态机 532
11.8.7 设计实例:JTAG测试 535
11.8.8 设计实例:内建自测试 553
参考文献 564
习题 565
附录A Verilog原语 569
附录B Verilog关键词 574
附录C Verilog数据类型 575
附录D Verilog运算符 580
附录E Verilog语言形式化语法(Ⅰ) 587
附录F Verilog语言形式化语法(Ⅱ) 588
附录G Verilog语言的附加特性 608
附录H 触发器和锁存器类型 615
附录I Verilog 2001,2005 616
附录J 编程语言接口 631
附录K 相关网站 632
中英文术语对照表 633