第1章 Verilog语言 1
1.1 硬件描述语言 1
1.2 Verilog发展历史与功能 2
1.2.1 Verilog HDL 2
1.2.2 Verilog历史与主要能力 3
1.3 FPGA开发的一般流程 3
第2章 Verilog HDL初试 6
2.1 模块 6
2.2 时延 10
2.3 数据流描述方式 10
2.4 行为描述方式 11
2.5 结构化描述方式 13
2.6 混合设计描述方式 15
2.7 设计测试 15
第3章 Verilog语言要素与表达式 19
3.1 标识符 19
3.2 注释 20
3.3 格式 21
3.4 系统任务和函数 21
3.5 编译指令 21
3.5.1 ′define和′undef 22
3.5.2 ′ifdef、′else和′endif 22
3.5.3 ′default_nettype 22
3.5.4 ′include 22
3.5.5 ′resetall 23
3.5.6 ′timescale 23
3.5.7 ′unconnected_drive和′nounconnected_drive 24
3.5.8 ′celldefine和′endcelldefine 24
3.6 值集合 25
3.6.1 整型数 25
3.6.2 实数 26
3.6.3 字符串 27
3.7 数据类型 27
3.7.1 线网类型 27
3.7.2 未说明的线网 33
3.7.3 向量和标量线网 33
3.7.4 寄存器类型 33
3.8 参数 37
3.9 表达式 37
3.9.1 操作数 37
3.9.2 操作符 40
3.9.3 表达式种类 47
第4章 Verilog建模基础 48
4.1 模块及实例化 48
4.1.1 模块 48
4.1.2 端口 50
4.1.3 模块实例语句 50
4.1.4 悬空端口 52
4.1.5 不同的端口长度 52
4.1.6 模块参数值 53
4.1.7 外部端口 55
4.2 结构模型 58
4.2.1 内置基本门 58
4.2.2 多输入门 59
4.2.3 多输出门 59
4.2.4 三态门 60
4.2.5 上拉、下拉电阻 60
4.2.6 MOS开关 60
4.2.7 双向开关 61
4.2.8 门时延 61
4.2.9 实例数组 63
4.2.10 隐式线网 63
4.2.11 示例 63
4.3 数据流模型化 65
4.3.1 连续赋值语句 65
4.3.2 线网说明赋值 67
4.3.3 时延 67
4.3.4 线网时延 68
4.4 行为模型 70
4.4.1 过程结构 70
4.4.2 语句块 77
4.4.3 过程性赋值 80
4.4.4 连续赋值与过程赋值的比较 84
4.4.5 if语句 85
4.4.6 case语句 86
4.4.7 循环语句 88
4.4.8 过程性连续赋值 90
4.5 结构描述方式和行为描述方式的混合使用 94
第5章 Verilog模块验证 96
5.1 编写测试验证程序 96
5.2 激励值产生 96
5.2.1 值序列 97
5.2.2 重复模式 98
5.3 测试验证程序实例 101
5.3.1 解码器 101
5.3.2 触发器 103
5.4 从文本文件中读取向量 105
5.5 向文本文件中写入向量 106
5.6 其他实例 107
5.6.1 时钟分频器 107
5.6.2 阶乘设计 109
5.6.3 时序检测器 112
第6章 Verilog语言其他规则 114
6.1 任务 114
6.1.1 任务定义 114
6.1.2 任务调用 115
6.2 函数 117
6.2.1 函数说明部分 117
6.2.2 函数调用 118
6.3 系统任务和系统函数 118
6.3.1 显示任务 119
6.3.2 文件输入/输出任务 121
6.3.3 时间标度任务 123
6.3.4 模拟控制任务 124
6.3.5 定时校验任务 124
6.3.6 模拟时间函数 126
6.3.7 变换函数 126
6.3.8 概率分布函数 127
6.4 禁止语句 127
6.5 命名事件 129
6.6 层次路径名 131
6.7 共享任务和函数 132
6.8 值变转储文件 134
6.9 指定程序块 136
6.10 强度 138
6.11 竞争状态 140
第7章 组合电路设计实例 142
7.1 编码器 142
7.2 译码器 148
7.3 多路复用器 154
7.4 奇偶校验器 159
7.5 三态器件与比较器 164
7.6 算术逻辑单元 168
7.7 组合电路综合案例 173
第8章 时序电路设计 186
8.1 锁存器与触发器 186
8.2 计数器 194
8.3 移位寄存器 198
8.4 分频器 202
8.5 序列检测器的状态机设计 206
8.6 同步系统结构的设计 213
8.7 综合实例设计 215
8.7.1 计数芯片74x163芯片设计与应用 215
8.7.2 多种类型计数器的设计与实现 218
第9章 存储器 227
9.1 Verilog描述存储器基本语法 227
9.1.1 存储器定义 227
9.1.2 存储器读取系统任务 227
9.2 存储器基础模块 229
9.2.1 单端口单读写的RAM模块 229
9.2.2 双端口读写地址独立的RAM模块 230
9.2.3 ROM模块定义与使用 233
9.2.4 RAM同步读写 237
9.3 存储器综合实例 242
第10章 综合实例 260
10.1 键盘扫描程序的设计 260
10.1.1 键盘扫描程序的总体电路设计 260
10.1.2 矩阵式键盘扫描的工作原理 260
10.1.3 数码管的显示原理 262
10.1.4 FIFO(先进先出)存储器电路原理 264
10.1.5 抖动消除电路原理 265
10.2 键盘扫描电路各主要功能模块的设计 266
10.2.1 时序产生模块 266
10.2.2 键盘扫描译码模块 268
10.2.3 抖动消除模块 273
10.2.4 FIFO(先进先出)存储器电路 276
10.2.5 数码管显示模块 278
10.3 系统综合与实物验证 279
10.3.1 系统综合 279
10.3.2 iMPACT的使用 280
10.3.3 引脚的锁定 281
10.4 通用异步接收/发送芯片设计与实现 281
10.4.1 UART整体方案设计 282
10.4.2 UART发射机设计 283
10.4.3 UART接收机设计 289
10.4.4 波特率发生器设计 296
10.4.5 主机处理器设计 298
10.5 UART硬件测试 299
10.5.1 输入和显示 299
10.5.2 综合仿真波形 299
10.5.3 综合与功能实现 299
10.5.4 iMPACT的使用 300
10.5.5 串口调试助手 301
10.5.6 小结 302
参考文献 304