第一部分Verilog HDL基础知识 2
第1章 概述 2
1.1 EDA技术简介 2
1.1.1 EDA技术的发展 2
1.1.2 EDA与传统电子设计方法的比较 5
1.1.3 EDA的开发过程 7
1.2可编程器件 8
1.2.1可编程逻辑器件概述 8
1.2.2 PLD的发展历史 9
1.2.3可编程逻辑器件的分类 10
1.2.4 CPLD的结构与工作原理 12
1.2.5 FPGA的结构与工作原理 13
1.2.6 CPLD和FPGA的编程与配置 17
1.3 Verilog HDL简介 20
1.3.1 Verilog HDL的发展历史 20
1.3.2 Verilog HDL和VHDL的比较 21
第2章Verilog HDL基础 22
2.1 Verilog HDL的特点 22
2.2程序设计流程 23
2.3程序的基本结构 23
2.3.1模块的概念 23
2.3.2模块的调用 26
2.3.3模块的测试 27
2.4语法基础 28
2.4.1程序基本格式 28
2.4.2注释语句 29
2.4.3标识符和关键字 29
2.4.4参数声明 30
第3章 数据类型和表达式 31
3.1数据类型 31
3.1.1常量 31
3.1.2变量 33
3.2操作符和表达式 36
3.2.1操作符 36
3.2.2操作数 43
3.2.3表达式 46
第4章 行为级建模方法 47
4.1行为级建模程序结构 47
4.2过程结构语句 48
4.2.1 initial语句 48
4.2.2 always语句 49
4.3语句块 51
4.3.1顺序语句块 51
4.3.2并行语句块 51
4.3.3顺序语句块和并行语句块的混合使用 52
4.4时序控制 53
4.4.1延时控制 53
4.4.2电平敏感事件触发 54
4.4.3边沿敏感事件触发 55
4.5赋值语句 56
4.5.1连续赋值语句 57
4.5.2阻塞赋值语句 58
4.5.3非阻塞赋值语句 59
4.6分支语句 59
4.6.1 if-else语句 59
4.6.2 case语句 61
4.7循环语句 62
4.7.1 forever循环语句 62
4.7.2 repeat循环语句 63
4.7.3 while循环语句 64
4.7.4 for循环语句 64
第5章 结构级建模方法 66
5.1 Verilog HDL内置基元 66
5.1.1基本门 67
5.1.2上拉、下拉电阻 71
5.1.3 MOS开关 71
5.1.4双向开关 73
5.1.5门级建模举例 74
5.2用户定义原语(UDP) 75
5.2.1 UDP的定义 76
5.2.2组合电路UDP 76
5.2.3时序电路UDP 78
5.3模块的调用 80
5.3.1端口的关联方式 81
5.3.2端口悬空的处理 82
5.3.3端口宽度匹配问题 82
5.3.4被调用模块参数值的更改 83
5.3.5结构建模实例 84
5.4行为描述和结构描述的混合使用 87
第6章 任务、函数及其他 88
6.1任务 88
6.1.1任务的定义 88
6.1.2任务的调用 89
6.2函数 90
6.2.1函数的定义 91
6.2.2函数的调用 91
6.3预处理指令 92
6.4系统任务和函数 96
6.4.1显示任务 97
6.4.2文件输入/输出任务 99
6.4.3时间标度任务 101
6.4.4仿真控制任务 101
6.4.5时序验证任务 102
6.4.6仿真时间函数 102
6.4.7实数变换函数 103
6.4.8随机函数 103
第二部分 基础单元电路设计实例 106
第7章 门电路设计与实现 106
7.1基本门电路 106
7.2组合门电路 108
7.3三态门电路 111
7.4双向总线缓冲器 112
第8章 常用组合逻辑电路设计 114
8.1编码器 114
8.2译码器 117
8.2.1二进制译码器 117
8.2.2十进制译码器 119
8.2.3七段译码器 120
8.3数据选择器和数据分配器 122
8.3.1数据选择器 122
8.3.2数据分配器 124
8.4数据比较器 125
8.5奇偶产生/校验器 126
第9章 常用时序逻辑电路设计 131
9.1触发器 131
9.1.1 R-S触发器 131
9.1.2 D触发器 132
9.1.3 JK触发器 135
9.1.4 T触发器 136
9.2计数器 137
9.2.1常用的二进制计数器 137
9.2.2加减控制计数器 142
9.2.3特殊功能计数器 144
9.3寄存器 146
9.3.1基本寄存器 146
9.3.2移位寄存器 149
9.4分频器 152
9.4.1偶数分频器 152
9.4.2奇数分频器 156
9.4.3任意整数分频器 158
第三部分 数字系统设计实例 162
第10章 综合应用实例 162
10.1交通灯控制系统 162
10.1.1交通灯控制系统的设计思路 162
10.1.2一个路口控制模块的代码 163
10.1.3双向路口控制模块的代码 167
10.2多功能数字钟 169
10.2.1时钟调校及计时模块 169
10.2.2整数分频模块 172
10.2.3时钟信号选择模块 174
10.2.4七段显示模块 174
10.2.5顶层模块的实现 176
10.3乐曲播放器 179
10.3.1时钟信号发生器模块 180
10.3.2音频产生器模块 181
10.3.3乐曲存储模块 184
10.3.4乐曲控制模块 190
10.3.5乐曲播放器顶层模块 193
10.4 VGA控制器 194
10.4.1 VGA显示原理 194
10.4.2 VGA控制信号发生器 197
10.4.3像素点RGB数据输出模块 210
10.4.4顶层模块的设计与实现 211
10.4.5 RGB模拟信号的产生 213
第11章模型机设计 214
11.1模型机概述 214
11.2 RISC CPU简介 214
11.2.1 RISC CPU的基本特征 214
11.2.2 RISC CPU的基本构成 215
11.3 RISC CPU指令系统设计 216
11.4 RISC CPU的数据通路图 219
11.5指令流程设计 221
11.6 CPU内部各功能模块的设计与实现 223
11.6.1时钟发生器 223
11.6.2程序计数器 225
11.6.3指令寄存器 227
11.6.4地址寄存器 229
11.6.5数据寄存器 230
11.6.6寄存器组 233
11.6.7堆栈指针寄存器 235
11.6.8控制器 236
11.6.9算术逻辑运算单元 250
11.6.10标志寄存器 255
11.7 RISC CPU设计 256
11.8模型机的组成 259
11.8.1总线控制 260
11.8.2 ROM 260
11.8.3 RAM 261
11.8.4模型机的构成 262
11.8.5模型机的样例程序 264
第四部分Quartus Ⅱ和Verilog仿真 270
第12章Quartus Ⅱ功能及应用 270
12.1 Quartus Ⅱ软件简介及特点 270
12.2 Quartus Ⅱ软件开发流程 270
12.2.1设计输入 271
12.2.2综合 272
12.2.3布局布线 272
12.2.4仿真 272
12.2.5编译和配置 273
12.2.6调试 273
12.2.7系统级设计 274
12.3 Quartus Ⅱ软件的使用 274
12.3.1创建Quartus Ⅱ工程 274
12.3.2设计输入 278
12.3.3工程配置及时序约束 281
12.3.4编译 287
12.3.5功能仿真 288
12.3.6时序仿真 292
12.3.7器件编程和配置 293
12.4 LPM宏功能模块与IP核的应用 295
12.4.1宏功能模块概述 295
12.4.2宏功能模块的应用 296
12.4.3 IP核的应用 300
12.5 SignalTap Ⅱ嵌入式逻辑分析仪的使用 304
12.5.1正弦信号发生器的设计 304
12.5.2 SignalTap Ⅱ的使用实例 308
12.5.3 SignalTap Ⅱ的高级触发 313
第13章ModelSim仿真工具 316
13.1 ModelSim概述 316
13.1.1 ModelSim的运行模式 316
13.1.2 ModelSim的仿真流程 317
13.2设计输入 317
13.2.1创建工程 318
13.2.2向工程中添加文件 319
13.2.3建立库 321
13.3设计Testbench 323
13.3.1 Testbench的基本结构 323
13.3.2时钟信号的产生 324
13.3.3复位信号的产生 325
13.3.4 Testbench设计实例 326
13.4设计验证与仿真 328
13.4.1仿真的概念 328
13.4.2 ModelSim功能仿真 329
13.4.3 ModelSim时序仿真 335
13.4.4 ModelSim仿真效率 339
13.5 ModelSim的调试 340
13.5.1断点设置 340
13.5.2单步执行 341
13.5.3波形查看 341
13.6相关文件介绍 342
13.6.1 WLF文件 342
13.6.2 DO文件 343
13.6.3 modelsim.ini文件 343
参考文献 344