第1章 电子系统与硬件描述语言……………………………………………………………… 1
1.1 电子系统的集成化……………………………………………………………………… 1
1.2 硬件描述语言与设计方法……………………………………………………………… 3
1.3 数字电路/系统实现……………………………………………………………………… 7
1.4 集成化设计发展趋势…………………………………………………………………… 11
1.5 数字集成应用前景……………………………………………………………………… 14
习 题……………………………………………………………………………………… 14
第2章 硬件描述语言基础…………………………………………………………………… 16
2.1 VerilogHDL语言概况………………………………………………………………… 17
2.1.1 模 块……………………………………………………………………………… 17
2.1.2 模块名……………………………………………………………………………… 18
2.1.3 模块组成……………………………………………………………………………… 18
2.2 基本语法………………………………………………………………………………… 19
2.2.1 标识符……………………………………………………………………………… 20
2.2.2 关键字……………………………………………………………………………… 20
2.2.3 操作符……………………………………………………………………………… 21
2.2.4 数字声明……………………………………………………………………………… 21
2.2.5 注释与空白符………………………………………………………………………… 22
2.3 系统任务与编译指令…………………………………………………………………… 23
2.3.1 字符串……………………………………………………………………………… 23
2.3.2 系统任务……………………………………………………………………………… 23
2.3.3 编译指令……………………………………………………………………………… 25
习 题……………………………………………………………………………………… 26
第3章 语法与要素…………………………………………………………………………… 28
3.1 数据类型………………………………………………………………………………… 28
3.1.1 数 值……………………………………………………………………………… 28
3.1.2 线网类型……………………………………………………………………………… 29
3.1.3 变量声明……………………………………………………………………………… 31
3.1.4 寄存器类型…………………………………………………………………………… 32
3.1.5 阵 列……………………………………………………………………………… 33
3.1.6 标量与矢量…………………………………………………………………………… 34
3.1.7 参 数……………………………………………………………………………… 35
3.2 端 口…………………………………………………………………………………… 36
3.2.1 端口命名……………………………………………………………………………… 36
3.2.2 端口声明……………………………………………………………………………… 37
3.2.3 连接方式……………………………………………………………………………… 38
3.3 表达式…………………………………………………………………………………… 41
3.3.1 运算表达……………………………………………………………………………… 41
3.3.2 操作符……………………………………………………………………………… 42
3.3.3 操作数……………………………………………………………………………… 48
3.4 标准主要差别…………………………………………………………………………… 52
习 题……………………………………………………………………………………… 57
第4章 建模与用户原语……………………………………………………………………… 59
4.1 基础建模………………………………………………………………………………… 59
4.1.1 门级建模……………………………………………………………………………… 59
4.1.2 开关级建模…………………………………………………………………………… 61
4.2 数据流建模……………………………………………………………………………… 64
4.2.1 连续赋值语句………………………………………………………………………… 64
4.2.2 数据流建模实例……………………………………………………………………… 65
4.3 模块与层次……………………………………………………………………………… 66
4.3.1 模块划分……………………………………………………………………………… 66
4.3.2 带参数模块…………………………………………………………………………… 68
4.3.3 层次命名……………………………………………………………………………… 71
4.4 用户定义原语(UDP) ………………………………………………………………… 72
4.4.1 UDP的含义………………………………………………………………………… 72
4.4.2 组合逻辑UDP ……………………………………………………………………… 73
4.4.3 时序电路UDP ……………………………………………………………………… 73
习 题……………………………………………………………………………………… 75
第5章 行为描述……………………………………………………………………………… 77
5.1 行为级建模……………………………………………………………………………… 77
5.1.1 过程块……………………………………………………………………………… 78
5.1.2 语句块……………………………………………………………………………… 79
5.1.3 时序控制……………………………………………………………………………… 82
5.2 过程赋值语句…………………………………………………………………………… 84
5.2.1 阻塞赋值语句………………………………………………………………………… 85
5.2.2 非阻塞赋值语句……………………………………………………………………… 86
5.2.3 过程连续赋值语句…………………………………………………………………… 89
5.3 行为语句………………………………………………………………………………… 90
5.3.1 条件语句……………………………………………………………………………… 90
5.3.2 多路分支语句………………………………………………………………………… 91
5.3.3 循环语句……………………………………………………………………………… 93
5.3.4 其他语句……………………………………………………………………………… 96
5.3.5 生成块……………………………………………………………………………… 98
2 Verilog硬件描述语言与设计
5.4 任务和函数…………………………………………………………………………… 101
5.4.1 任 务……………………………………………………………………………… 101
5.4.2 函 数……………………………………………………………………………… 103
习 题……………………………………………………………………………………… 107
第6章 测试、仿真和验证…………………………………………………………………… 109
6.1 测试平台……………………………………………………………………………… 109
6.1.1 测试向量…………………………………………………………………………… 110
6.1.2 测试模块…………………………………………………………………………… 111
6.2 波形生成……………………………………………………………………………… 113
6.2.1 值序列……………………………………………………………………………… 113
6.2.2 重复信号…………………………………………………………………………… 116
6.2.3 时钟的建立………………………………………………………………………… 117
6.3 数据显示与文件访问………………………………………………………………… 120
6.3.1 数据显示…………………………………………………………………………… 120
6.3.2 文件访问…………………………………………………………………………… 123
6.3.3 从文本文件中读取向量……………………………………………………………… 127
6.3.4 向文本文件中写入向量……………………………………………………………… 128
6.4 典型仿真验证实例…………………………………………………………………… 129
6.4.1 3 8译码器………………………………………………………………………… 129
6.4.2 序列检测器………………………………………………………………………… 131
6.4.3 时钟分频器………………………………………………………………………… 132
习 题……………………………………………………………………………………… 133
第7章 基础逻辑电路………………………………………………………………………… 137
7.1 组合电路设计………………………………………………………………………… 137
7.1.1 门级结构设计……………………………………………………………………… 137
7.1.2 连续赋值语句设计…………………………………………………………………… 141
7.1.3 过程块语句设计…………………………………………………………………… 143
7.1.4 组合电路不完全描述………………………………………………………………… 145
7.1.5 典型组合电路设计实例……………………………………………………………… 147
7.2 时序电路设计………………………………………………………………………… 150
7.2.1 时序电路设计方法…………………………………………………………………… 150
7.2.2 时序电路单元……………………………………………………………………… 152
7.2.3 时序电路不同描述风格……………………………………………………………… 156
7.2.4 时序电路设计常见错误……………………………………………………………… 159
7.2.5 典型时序电路设计实例……………………………………………………………… 162
习 题……………………………………………………………………………………… 163
第8章 有限状态机及设计…………………………………………………………………… 165
8.1 状态机基础…………………………………………………………………………… 165
8.1.1 基本概念…………………………………………………………………………… 165
8.1.2 状态机分类………………………………………………………………………… 167
8.2 状态机设计…………………………………………………………………………… 173
8.2.1 状态机描述方法…………………………………………………………………… 173
8.2.2 状态机状态编码…………………………………………………………………… 185
8.2.3 状态机优化设计…………………………………………………………………… 190
8.2.4 状态机容错和设计准则……………………………………………………………… 192
习 题……………………………………………………………………………………… 195
第9章 时序、综合及验证…………………………………………………………………… 196
9.1 时序与延迟…………………………………………………………………………… 196
9.1.1 时序概念…………………………………………………………………………… 196
9.1.2 延迟模型…………………………………………………………………………… 200
9.1.3 延迟种类…………………………………………………………………………… 200
9.1.4 路径延迟建模……………………………………………………………………… 203
9.1.5 时序检查…………………………………………………………………………… 206
9.1.6 延迟反标…………………………………………………………………………… 207
9.2 逻辑综合……………………………………………………………………………… 209
9.2.1 概 念……………………………………………………………………………… 209
9.2.2 逻辑综合过程……………………………………………………………………… 209
9.2.3 代码可综合设计…………………………………………………………………… 212
9.3 验证方法……………………………………………………………………………… 214
9.3.1 验 证……………………………………………………………………………… 214
9.3.2 测试验证种类……………………………………………………………………… 216
9.3.3 测试验证平台实例…………………………………………………………………… 220
习 题……………………………………………………………………………………… 228
第10章 仿真实验…………………………………………………………………………… 231
10.1 硬件描述语言仿真器………………………………………………………………… 231
10.1.1 ModelSim 仿真……………………………………………………………………… 231
10.1.2 逻辑综合后仿真…………………………………………………………………… 237
10.2 Verilog基础模块设计……………………………………………………………… 241
10.2.1 组合逻辑建模……………………………………………………………………… 241
10.2.2 时序逻辑建模……………………………………………………………………… 247
10.3 复杂逻辑设计………………………………………………………………………… 256
10.3.1 阻塞赋值和非阻塞赋值…………………………………………………………… 256
10.3.2 任务与函数………………………………………………………………………… 258
10.3.3 有限状态机………………………………………………………………………… 262
习 题……………………………………………………………………………………… 266
第11章 设计案例…………………………………………………………………………… 270
11.1 异步FIFO设计……………………………………………………………………… 270
11.1.1 实验目的与实验要求……………………………………………………………… 270
4 Verilog硬件描述语言与设计
11.1.2 基于最高两位判决的异步FIFO设计………………………………………………… 271
11.1.3 基于四象限判决的异步FIFO设计………………………………………………… 276
11.2 全双工UART接口设计…………………………………………………………… 283
11.2.1 实验目的与实验要求……………………………………………………………… 283
11.2.2 UART通信协议…………………………………………………………………… 283
11.2.3 UART发送器的实现……………………………………………………………… 286
11.2.4 UART接收器的设计……………………………………………………………… 289
11.2.5 UART接收器的仿真测试………………………………………………………… 300
11.3 循环码编译码器设计………………………………………………………………… 305
11.3.1 实验目的与实验要求……………………………………………………………… 305
11.3.2 (7,3)循环码……………………………………………………………………… 305
11.3.3 (7,3)循环码的编码器……………………………………………………………… 307
11.3.4 (7,3)循环码的译码器……………………………………………………………… 311
习 题……………………………………………………………………………………… 320
附 录………………………………………………………………………………………… 324
参考文献………………………………………………………………………………………… 327