第1章 数字设计方法概论 1
1.1设计方法简介 1
1.1.1设计规范 3
1.1.2设计划分 3
1.1.3设计输入 3
1.1.4仿真与功能验证 4
1.1.5设计整合与验证 4
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章 组合逻辑设计回顾 9
2.1组合逻辑与布尔代数 9
2.1.1 ASIC库单元 10
2.1.2布尔代数 11
2.1.3狄摩根定律 12
2.2布尔代数化简定理 14
2.3组合逻辑的表示 15
2.3.1积之和表示法 16
2.3.2和之积表示法 18
2.4布尔表达式的化简 19
2.4.1异或表达式的化简 24
2.4.2卡诺图(积之和形式) 25
2.4.3卡诺图(和之积形式) 26
2.4.4卡诺图与任意项 27
2.4.5扩展的卡诺图 28
2.5假信号与冒险 29
2.5.1静态冒险的消除(积之和形式) 31
2.5.2小结:消除两级电路中的静态冒险 33
2.5.3多级电路中的静态冒险 33
2.5.4小结:消除多级电路中的静态冒险 35
2.5.5动态冒险 35
2.6逻辑设计模块 37
2.6.1与非-或非结构 37
2.6.2多路复用器 40
2.6.3多路解复用器 42
2.6.4编码器 42
2.6.5优先编码器 43
2.6.6译码器 43
2.6.7优先译码器 45
参考文献 45
习题 45
第3章 时序逻辑设计基础 47
3.1存储单元 47
3.1.1锁存器 47
3.1.2透明锁存器 48
3.2触发器 49
3.2.1 D触发器 49
3.2.2主从触发器 50
3.2.3 J-K触发器 51
3.2.4 T触发器 53
3.3总线与三态器件 53
3.4时序机设计 55
3.5状态转移图 57
3.6设计举例:BCD码到余3码转换器 57
3.7数据传输的串行线码转换器 62
3.7.1用米利型FSM实现串行线码转换 63
3.7.2用摩尔型FSM实现串行线码转换 65
3.8状态化简与等价状态 67
参考文献 69
习题 69
第4章 Verilog逻辑设计介绍 71
4.1组合逻辑的结构化模型 71
4.1.1 Verilog原语和设计封装 72
4.1.2 Verilog结构化模型 73
4.1.3模块端口 74
4.1.4一些语言规则 74
4.1.5自顶向下的设计和嵌套模块 74
4.1.6设计层次和源代码结构 77
4.1.7 Verilog矢量 78
4.1.8结构化连接 78
4.2逻辑系统,设计验证与测试方法 81
4.2.1 Verilog中的四值逻辑和信号解析 82
4.2.2测试方法 83
4.2.3测试平台信号发生器 84
4.2.4事件驱动仿真 85
4.2.5测试平台模板 86
4.2.6有符号数 86
4.3传播延时 86
4.3.1惯性延时 89
4.3.2传播延时 90
4.4组合与时序逻辑的Verilog真值表模型 90
参考文献 95
习题 95
第5章 用组合与时序逻辑的行为级模型进行逻辑设计 97
5.1行为建模 97
5.2行为级建模的数据类型 98
5.3基于布尔方程的组合逻辑行为级模型 98
5.4传播延时与连续赋值 100
5.5 Verilog中的锁存器和电平敏感电路 101
5.6触发器和锁存器的周期性行为模型 103
5.7周期性行为和边沿检测 103
5.8行为建模方式的比较 105
5.8.1连续赋值模型 105
5.8.2数据流/寄存器传输级模型 106
5.8.3基于算法的模型 109
5.8.4端口名称:风格问题 110
5.8.5用行为级模型仿真 110
5.9多路复用器,编码器和译码器的行为模型 111
5.10线性反馈移位寄存器的数据流模型 117
5.11用重复算法模拟数字机 118
5.11.1智能复用和参数化模型 121
5.11.2时钟发生器 122
5.12多循环操作状态机 123
5.13包含函数和任务的设计文件:是成果还是愚蠢行为 125
5.13.1任务 125
5.13.2函数 126
5.14行为建模的算法状态机图 127
5.15算法状态机和数据通道图 130
5.16计数器,移位寄存器和寄存器组的行为级模型 132
5.16.1计数器 132
5.16.2移位寄存器 136
5.16.3寄存器组和寄存器(存储器)阵列 139
5.17用于异步信号的去抖动开关,亚稳定性和同步装置 141
5.18设计实例:键盘扫描器和编码器 145
参考文献 152
习题 152
第6章 组合逻辑与时序逻辑的综合 159
6.1关于综合的介绍 159
6.1.1逻辑综合 160
6.1.2 RTL综合 166
6.1.3高级综合 166
6.2组合逻辑综合 168
6.2.1优先级结构的综合 171
6.2.2使用逻辑无关紧要条件的情况 172
6.2.3 ASIC单元与资源共享 175
6.3带锁存器的时序逻辑综合 177
6.3.1锁存器的无意识综合 178
6.3.2锁存器的有意识综合 181
6.4三态器件的综合和总线接口 184
6.5带有触发器的时序逻辑综合 186
6.6确定状态机的综合 188
6.6.1 BCD码到余3码转换器的综合 188
6.6.2 Mealy型NRZ码到Manchester线性码转换器的综合 192
6.6.3 Moore型NRZ到Manchester线性码的转换器综合 193
6.6.4序列检测器的综合 195
6.7寄存器逻辑 203
6.8状态编码 207
6.9模糊状态机,寄存器以及计数器的综合 209
6.9.1模糊状态机 209
6.9.2计数器综合 210
6.9.3寄存器综合 211
6.10复位 215
6.11门控时钟与时钟使能综合 218
6.12可预期的综合结果 219
6.12.1数据类型综合 219
6.12.2运算符分组 219
6.12.3表达式替代 220
6.13循环的综合 223
6.13.1不带内嵌定时控制的静态循环 223
6.13.2带内嵌定时控制的静态循环 226
6.13.3不带内嵌定时控制的非静态循环 228
6.13.4带内嵌定时控制的非静态循环 229
6.13.5用状态机替代不可综合的循环 231
6.14能够避免的设计陷阱 237
6.15 分割与合并:设计划分 237
参考文献 238
习题 238
第7章 数据通路控制器的设计和综合 244
7.1时序状态机的划分 244
7.2设计举例:二进制计数器 245
7.3 RISC存储程序状态机的设计和综合 250
7.3.1 RISC SPM:处理器 251
7.3.2 RISC SPM:ALU 252
7.3.3 RISC SPM:控制器 252
7.3.4 RISC SPM:指令集 252
7.3.5 RISC SPM:控制器设计 254
7.3.6 RISC SPM:程序的执行 265
7.4设计举例:UART 267
7.4.1 UART的操作 268
7.4.2 UART发射机 269
7.4.3 UART接收机 274
参考文献 285
习题 285
第8章 可编程逻辑器件和存储器件 295
8.1可编程逻辑器件 296
8.2存储器件 296
8.2.1只读存储器 296
8.2.2可编程ROM 298
8.2.3可擦除ROM 299
8.2.4基于ROM的组合逻辑实现 300
8.2.5用于ROM的Verilog系统任务 301
8.2.6 ROM的比较 303
8.2.7基于ROM的状态机 303
8.2.8闪存 306
8.2.9静态随机存取存储器 306
8.2.10铁电非易失性存储器 326
8.3可编程逻辑阵列 326
8.3.1 PLA最小化 328
8.3.2 PLA建模 330
8.4可编程阵列逻辑 332
8.5 PLD的可编程性 333
8.6复杂可编程逻辑器件 334
8.7 Altera MAX 7000 CPLD 334
8.7.1可共享扩展器 336
8.7.2并行扩展器 337
8.7.3 1/O控制模块 338
8.7.4对时序的考虑 338
8.7.5器件资源 339
8.7.6其他 Altera器件系列 339
8.8 Xilir XC9500 CPLD系列 339
8.9现场可编程门阵列 341
8.9.1 FPGA在ASIC市场中的角色 342
8.9.2 FPGA技术 343
8.10 Altera Flex 8000 FPGA 343
8.11 Altera Flex 10 FPGA 344
8.12 Altera Apex FPGA 348
8.13 Altera芯片的可编程性 349
8.14 Xilinx XC4000系列FPGA 349
8.14.1基本结构 350
8.14.2 XC4000可配置逻辑模块 350
8.14.3专用快速进位和借位逻辑 351
8.14.4分布式RAM 351
8.14.5 XC4000互连资源 351
8.14.6 XC4000I/O模块 354
8.14.7 XC4000E和XC4000X系列中的改进 355
8.14.8 Spartan系列中的改进 355
8.15 Xilinx Spartan XL FPGA 356
8.16 Xilinx Spartan FPGA 357
8.17 Xilinx Virtex FPGA 360
8.18片上系统(SoC)的可嵌入可编程IP内核 361
8.19基于Verilog的FPGA设计流程 361
8.20 FPGA综合 362
参考文献 364
相关网站 364
习题 364
第9章 数字处理器的结构和算法 393
9.1算法,嵌套循环程序和数据流图 393
9.2设计实例:中间色调像素图像转换器 396
9.2.1中间色调像素图像转换器的最基本设计 398
9.2.2基于NLP的中间色调像素图像转换器结构 401
9.2.3基于并发ASMD的中间色调像素图像转换器的结构 411
9.2.4中间色调像素图像转换器:设计权衡 422
9.2.5带反馈数据流图的结构 422
9.3数字滤波器和信号处理器 427
9.3.1有限冲激响应滤波器(FIR)滤波器 430
9.3.2数字滤波器设计过程 431
9.3.3无限冲激响应(IIR)滤波器 434
9.4建立信号处理器模块 437
9.4.1积分器 437
9.4.2微分器 440
9.4.3抽选与插值滤波器 440
9.5流水线结构 444
9.5.1设计实例:流水线型加法器 446
9.5.2设计实例:流水线型FIR滤波器 450
9.6环形缓冲器 450
9.7 FIFO以及跨越时钟域的同步问题 455
参考文献 466
习题 466
第10章 算术处理器架构 473
10.1数的表示方法 473
10.1.1负整数的有符号数表示 474
10.1.2负整数的1补表示方法 474
10.1.3正数和负数的2补表示方法 475
10.1.4小数的表示 476
10.2加减法功能单元 476
10.2.1行波进位加法器 476
10.2.2超前进位加法器 476
10.2.3上溢出和下溢出 481
10.3乘法运算功能单元 481
10.3.1组合(并行)二进制乘法器 481
10.3.2时序二进制乘法器 485
10.3.3时序乘法器设计:层次化分解 485
10.3.4基于STG的控制器设计 487
10.3.5基于STG的高效时序二进制乘法器 491
10.3.6基于ASMD的时序二进制乘法器 497
10.3.7基于ASMD的高效时序二进制乘法器 502
10.3.8基于ASMD数据通路和控制器设计的总结 505
10.3.9精简寄存器时序乘法器 506
10.3.10隐式状态机二进制乘法器 510
10.3.11 Booth算法时序乘法器 519
10.3.12比特对编码 527
10.4有符号二进制数乘法 533
10.4.1有符号数的乘积:被乘数为负,乘数为正 533
10.4.2有符号数的乘积:被乘数为正,乘数为负 534
10.4.3有符号数的乘积:被乘数、乘数均为负 534
10.5小数乘法 536
10.5.1有符号小数:被乘数、乘数均为正 536
10.5.2有符号小数:被乘数为负,乘数为正 537
10.5.3有符号小数:被乘数为正,乘数为负 537
10.5.4有符号小数:被乘数、乘数均为负 538
10.6除法功能单元 538
10.6.1无符号二进制数的除法 538
10.6.2无符号二进制数的高效除法 544
10.6.3精简寄存器时序除法器 550
10.6.4有符号二进制数(2补)的除法 556
参考文献 556
习题 556
第11章 后综合设计任务 562
11.1后综合设计验证 562
11.2后综合定时验证 564
11.2.1静态定时分析 566
11.2.2定时指标 567
11.2.3影响定时的因素 569
11.3 ASIC中定时违反行为的消除 574
11.4虚假通路 575
11.5动态敏化通路 576
11.6定时验证的系统任务 577
11.6.1定时验证:建立条件 577
11.6.2定时验证:保持条件 578
11.6.3定时验证:建立和保持条件 579
11.6.4定时验证:脉冲宽度限制 579
11.6.5定时验证:信号时滞限制 580
11.6.6定时验证:时钟周期 580
11.6.7定时验证:恢复时间 581
11.7故障模拟及测试 582
11.7.1电路缺陷和故障 583
11.7.2故障检测和测试 585
11.7.3 D标记 587
11.7.4组合电路的自动测试模板生成 590
11.7.5故障覆盖和缺陷级别 591
11.7.6时序电路的测试生成 591
11.8故障模拟 594
11.8.1故障压缩 594
11.8.2串行故障模拟 595
11.8.3并行故障模拟 595
11.8.4同时故障模拟 595
11.8.5随机故障模拟 595
11.9 Verifault-XL故障模拟 596
11.9.1故障模拟任务 596
11.9.2用Verifault-XL对故障进行压缩和分级 597
11.9.3结构故障和行为故障的传播 598
11.9.4具有Verifault-XL的故障模拟测试平台 598
11.9.5故障描述器 600
11.10 JTAG端口和可测性设计 603
11.10.1边界扫描和JTAG端口 603
11.10.2 JTAG操作模式 604
11.10.3 JTAG寄存器 605
11.10.4 JTAG指令 607
11.10.5 TAP结构 608
11.10.6 TAP控制器状态机 610
11.10.7设计实例:用JTAG进行测试 613
11.10.8设计实例:内置自测试 632
参考文献 644
习题 645
附录AVerilog原语 651
附录BVerilog关键词 659
附录C Verilog数据类型 660
附录D Verilog运算符 664
附录E Backus-Naur形式化语法注释 670
附录F Verilog语言的形式化语法 671
附录G Verilog语言的其他特点 682
附录H 触发器和锁存器 691
附录1 Verilog 2001 692
附录J 编程语言接口 708
附录K 相关网站 709
附录L 网络教程 711