第1章 初识Verilog HDL 1
1.1 什么是Verilog HDL 1
1.2 发展历史 1
1.3 主要功能 2
1.4 设计流程 3
1.5 基本结构 3
1.5.1 模块的概念 3
1.5.2 模块调用 5
1.5.3 测试模块 6
1.6 程序设计基础 7
1.6.1 程序格式 8
1.6.2 注释语句 8
1.6.3 标识符和关键词 9
1.6.4 参数声明 9
1.6.5 预处理指令 9
第2章 数据类型与表达式 13
2.1 数据类型 13
2.1.1 常量 13
2.1.2 变量 15
2.2 表达式 22
2.2.1 操作数 22
2.2.2 操作符 25
第3章 行为建模方法 33
3.1 数据流行为建模 33
3.1.1 连续赋值语句 33
3.1.2 线网声明赋值 34
3.1.3 时延的概念 35
3.1.4 线网时延 36
3.1.5 用数据流建模方式实现1位全加器 37
3.2 顺序行为建模 37
3.2.1 过程结构语句 37
3.2.2 时序控制 43
3.2.3 语句块 46
3.2.4 过程性赋值 49
3.2.5 if语句 56
3.2.6 case语句 59
3.2.7 循环语句 61
3.2.8 握手协议实例 64
第4章 结构建模方法 66
4.1 Verilog HDL内置基元 67
4.1.1 内置基本门 67
4.1.2 上拉、下拉电阻 71
4.1.3 MOS开关 72
4.1.4 双向开关 74
4.1.5 给基元定义时延 75
4.1.6 描述实例数组 75
4.1.7 内置基元建模实例 75
4.2 用户定义基元 77
4.2.1 UDP的定义 77
4.2.2 组合电路UDP 78
4.2.3 时序电路UDP 79
4.2.4 Verilog HDL速记符号 81
4.2.5 电平触发和边沿触发混合的UDP 82
4.3 模块实例化 84
4.3.1 端口关联方式 84
4.3.2 悬空端口 86
4.3.3 端口匹配 86
4.3.4 模块参数值 87
4.3.5 建模实例 89
4.4 行为描述和结构描述的混合使用 91
第5章 任务、函数及其他 92
5.1 任务 92
5.1.1 任务定义 92
5.1.2 任务调用 93
5.2 函数 95
5.2.1 函数定义 95
5.2.2 函数调用 96
5.3 系统任务和函数 97
5.3.1 显示任务 97
5.3.2 文件输入/输出任务 100
5.3.3 时间标度任务 102
5.3.4 仿真控制任务 103
5.3.5 时序验证任务 103
5.3.6 仿真时间函数 103
5.3.7 实数变换函数 104
5.3.8 随机函数 104
5.4 其他重要概念 105
5.4.1 禁止语句 105
5.4.2 命名事件 106
5.4.3 层次路径名 108
5.4.4 共享任务和函数 110
5.4.5 VCD文件 112
5.4.6 指定块 118
5.4.7 强度 118
第6章 编写测试程序 121
6.1 测试模块 121
6.2 产生输入信号 122
6.2.1 特定值序列 122
6.2.2 重复模式 124
6.3 从文本文件中读取向量 128
6.4 向文本文件中写入向量 130
6.5 测试程序实例 131
6.5.1 半加器 131
6.5.2 5位计数器 132
6.5.3 2选1选择器 134
6.5.4 24解码器 135
6.5.5 D触发器 136
第7章 初级建模实例 139
7.1 触发器 139
7.1.1 上升沿触发器 139
7.1.2 带异步复位端的上升沿触发器 140
7.1.3 带异步置位端的上升沿触发器 141
7.1.4 带异步复位端和异步置位端的上升沿触发器 141
7.1.5 带同步复位端的上升沿触发器 142
7.1.6 带同步置位端的上升沿触发器 143
7.1.7 带异步复位端和输出使能端的上升沿触发器 143
7.2 锁存器 144
7.2.1 带使能端的锁存器 144
7.2.2 可异步选通数据的锁存器 144
7.2.3 可选通使能端的锁存器 145
7.2.4 带异步复位端的锁存器 146
7.3 编码器 146
7.4 解码器 147
7.5 多路数据选择器 148
7.5.1 用ifelse构造的4选1选择器 148
7.5.2 用case构造的4选1选择器 149
7.5.3 用case构造的12选1选择器 150
7.5.4 带忽略位的多路选择器 151
7.6 计数器 152
7.6.1 带计数使能端和异步复位端的8位计数器 152
7.6.2 可设定计数输出并带异步复位端的8位计数器 153
7.6.3 可设定计数输出并带使能端、进位端和复位端的8位计数器 154
7.7 输入输出缓冲器 155
7.7.1 三态缓冲器 155
7.7.2 双向缓冲器 156
7.8 加法器 157
7.8.1 半加器 157
7.8.2 全加器 158
7.8.3 串行进位加法器 160
7.8.4 超前进位加法器 161
7.9 移位寄存器 166
7.10 频率转换器 167
7.11 模数转换器 170
第8章 高级建模实例 173
8.1 状态机建模 173
8.1.1 乘法器状态机 173
8.1.2 交互状态机 175
8.1.3 Moore型有限状态机 179
8.1.4 Mealy型有限状态机 181
8.2 序列检测器 183
8.3 FIFO(先入先出电路) 186
8.3.1 16×16FIFO 186
8.3.2 4×16FIFO 188
8.4 UART(通用异步收发器) 197
第9章 程序综合实例 209
9.1 可综合设计 209
9.1.1 综合的概念 209
9.1.2 可综合 210
9.1.3 可综合及不可综合的结构 210
9.2 综合实例 211
9.2.1 组合逻辑电路 211
9.2.2 时序逻辑电路 212
9.2.3 存储器 225
9.2.4 布尔方程 226
9.2.5 有限状态机 227
9.2.6 通用移位寄存器 233
9.2.7 算术逻辑单元(ALU) 234
9.2.8 二进制计数器 237
9.2.9 加法器 238
9.2.10 数值比较器 238
9.2.11 解码器 239
9.2.12 三态门 241
9.2.13 序列检测器 242
第10章 系统设计实战 245
10.1 系统功能分析 245
10.1.1 计算机的基本结构 246
10.1.2 典型微处理器系统结构及工作原理 246
10.1.3 普通计算器的基本结构 248
10.2 系统设计规划 248
10.2.1 系统功能模块划分 248
10.2.2 键盘输入模块 250
10.2.3 寄存器组 252
10.2.4 算术逻辑单元 253
10.2.5 显示部分 256
10.2.6 系统结构 258
10.3 程序设计与仿真 259
10.3.1 键盘输入模块程序与仿真 259
10.3.2 ALU模块程序与仿真 264
10.3.3 显示部分程序与仿真 284
10.3.4 顶层模块程序设计 293
10.4 逻辑综合 293
附录 Verilog HDL关键词详解 294
参考文献 350