第1章 Verilog HDL层次化设计 1
1.1 一个简单的例子——4位全加器的设计 1
1.2 模块和端口 3
1.2.1 模块定义 4
1.2.2 端口定义 4
1.2.3 模块实例化 5
1.3 层次化设计思想 9
1.4 Testbench的概念 10
1.5 仿真和综合 12
本章小结 13
思考与练习 13
第2章 Verilog HDL基本语法 15
2.1 词法约定 15
2.1.1 空白符 15
2.1.2 注释 15
2.1.3 操作符 16
2.1.4 标识符与关键字 16
2.2 数据类型 16
2.2.1 逻辑值与常量 17
2.2.2 逻辑强度 18
2.2.3 线网类型 18
2.2.4 变量类型 19
2.2.5 向量 20
2.2.6 数组 20
2.2.7 参数 21
2.3 表达式 23
2.3.1 操作数 23
2.3.2 操作符 23
2.3.3 位宽处理 27
2.3.4 表达式的综合 28
本章小结 28
思考与练习 28
第3章 Verilog HDL行为描述 30
3.1 Verilog HDL的基本描述形式 30
3.2 结构化过程语句 31
3.2.1 initial语句 31
3.2.2 always语句 32
3.3 顺序块和并行块 32
3.3.1 顺序块 33
3.3.2 并行块 33
3.3.3 块语句的其他特点 34
3.4 过程赋值语句 35
3.4.1 阻塞赋值语句 35
3.4.2 非阻塞赋值语句 35
3.5 条件语句 36
3.6 多路分支语句 37
3.7 条件语句和多路分支语句的比较 39
3.8 循环语句 39
3.8.1 while循环 39
3.8.2 for循环 40
3.8.3 repeat循环 40
3.8.4 forever循环 41
3.9 时序控制 42
3.9.1 延迟控制 42
3.9.2 事件控制 45
本章小结 48
思考与练习 49
第4章 组合逻辑建模 51
4.1 数字电路建模方式 51
4.2 组合逻辑的门级描述 53
4.2.1 与门、或门及同类门单元 53
4.2.2 缓冲器和非门 54
4.2.3 三态门 55
4.2.4 门级描述实例 56
4.3 组合逻辑的数据流描述 58
4.3.1 连续赋值语句 58
4.3.2 数据流描述实例 59
4.4 组合逻辑的行为描述 60
4.5 组合逻辑建模实例 62
4.5.1 比较器 62
4.5.2 译码器和编码器 63
4.5.3 多路复用器 64
4.5.4 三态驱动电路 65
本章小结 66
思考与练习 66
第5章 时序逻辑建模 68
5.1 时序逻辑建模概述 68
5.2 寄存器和锁存器的设计 69
5.2.1 寄存器设计实例 69
5.2.2 锁存器设计实例 70
5.3 寄存器和锁存器的推断 71
5.3.1 寄存器的推断 71
5.3.2 锁存器的推断 73
5.4 存储器的设计与建模 74
5.4.1 ROM建模 74
5.4.2 RAM建模 75
5.5 在设计中使用同步时序逻辑 76
5.5.1 利用同步时序逻辑消除冒险 77
5.5.2 利用流水线提高同步时序逻辑性能 78
5.6 同步有限状态机 79
5.7 时序逻辑建模实例 82
5.7.1 计数器 82
5.7.2 串并/并串转换器 83
5.7.3 时钟分频电路 86
本章小结 88
思考与练习 89
第6章 行为级仿真模型建模 91
6.1 行为级建模概述 91
6.2 仿真时间和时序控制 92
6.3 仿真模型建模实例 94
6.3.1 时钟发生器 94
6.3.2 简单的仿真环境 97
6.3.3 从文件读取激励 99
6.3.4 输出结果监控 102
6.3.5 总线功能模型 104
本章小结 107
思考与练习 107
第7章 各层次Verilog HDL描述形式与电路建模 109
7.1 基本的数字电路单元模块 109
7.2 各抽象层次的Verilog HDL描述形式 110
7.2.1 利用各层次描述进行组合逻辑建模 111
7.2.2 利用各层次描述进行时序逻辑建模 113
7.2.3 利用各层次描述进行行为级仿真模型建模 115
7.3 Verilog HDL仿真机制基础 116
本章小结 119
思考与练习 119
第8章 任务和函数 120
8.1 任务说明语句 120
8.2 函数说明语句 124
8.3 任务和函数的联系与区别 127
8.4 系统自定义任务和函数 128
8.4.1 $display和$write任务 128
8.4.2 $monitor任务 130
8.4.3 文件操作任务 131
8.4.4 $readmemh和$readmemb任务 133
8.4.5 $time函数和$timeformat任务 135
8.4.6 $finish和$stop任务 137
8.4.7 随机数生成函数 137
本章小结 138
思考与练习 138
第9章 编译预处理 140
9.1 'define,'undef 140
9.2 'ifdef,'else,'elsif,'endif,'ifndef 141
9.3 'include 142
9.4 'timescale 142
9.5 预编译处理实例 143
本章小结 144
思考与练习 144
第10章 Verilog HDL设计与综合中的陷阱 145
10.1 阻塞语句与非阻塞语句 146
10.1.1 阻塞语句 146
10.1.2 非阻塞语句 147
10.2 敏感变量的不完备性 150
10.3 锁存器的产生与危害 152
10.4 组合逻辑反馈 156
10.5 for循环 158
10.6 优先级与并行编码 159
10.7 多路控制分支结构 162
10.8 复位电路设计问题与改进 163
10.8.1 同步复位电路 163
10.8.2 异步复位电路 164
10.8.3 复位电路的改进 167
本章小结 171
思考与练习 172
第11章 异步设计与同步设计的时序分析 176
11.1 亚稳态的物理意义 177
11.2 亚稳态与建立时间、保持时间、异步复位恢复时间 177
11.2.1 建立时间、保持时间、异步复位恢复时间基本概念 177
11.2.2 建立时间、保持时间的违例 178
11.3 亚稳态的恢复时间Tr与同步寄存器的MTBF 180
11.3.1 亚稳态的恢复时间 180
11.3.2 同步寄存器 181
11.3.3 平均故障间隔时间 185
11.3.4 降低亚稳态传播的概率 186
11.4 同步系统时钟频率 189
11.4.1 组合逻辑的延迟 190
11.4.2 时钟输出延迟Tco 190
11.4.3 同步系统中的时钟频率 191
11.4.4 提高时钟速度的两种方法 199
11.4.5 时钟偏斜及其影响 204
11.5 False Path基本概念 212
本章小结 212
思考与练习 213
参考文献 214