第一篇 绪论 8
总结 8
思考题 8
第二篇 基础部分 11
第一章 Verilog的基本知识 11
1.1 硬件描述语言 11
1.2 Verilog HDL的历史 12
1.2.1 Verilog HDL 12
1.2.2 Verilog HDL的产生及发展 12
1.3 Verilog HDL和VHDL的比较 13
1.4 Verilog的应用情况和适用的设计 14
1.5 采用Verilog HDL设计复杂数字电路的优点 14
1.5.1 传统设计方法——电路原理图输入法 14
1.5.2 Verilog HDL设计法与传统的电路原理图输入法的比较 15
1.5.3 Verilog的标准化与软核的重用 15
1.5.4 软核、固核和硬核的概念以及它们的重用 15
1.6 采用硬件描述语言的设计流程简介 16
1.6.1 自顶向下设计的基本概念 16
1.6.2 层次管理的基本概念 17
1.6.3 具体模块的设计、编译和仿真过程 17
1.6.4 对应具体工艺器件的优化、映像和布局布线 17
本章小结 18
思考题 19
第二章 Verilog语法的基本概念 20
2.1 Verilog模块的基本概念 21
2.2 Verilog用于模块的测试 23
本章小结 25
思考题 25
第三章 模块的结构、数据类型和变量、基本的运算符号 27
3.1 模块的结构 27
3.1.1 模块的端口 27
3.1.2 模块的内容 28
3.1.3 理解要点 29
3.2 数据类型及其常量与变量 30
3.2.1 常量 30
3.2.2 变量 33
3.3 运算符及表达式 36
3.3.1 基本的算术运算符 36
3.3.2 位运算符 37
本章小结 38
思考题 38
第四章 运算符、赋值语句与结构说明语句 40
4.1 逻辑运算符 40
4.2 关系运算符 41
4.3 等式运算符 41
4.4 移位运算符 42
4.5 位拼接运算符 42
4.6 缩减运算符 43
4.7 优先级别 43
4.8 关键词 44
4.9 赋值语句和块语句 44
4.9.1 赋值语句 44
4.9.2 块语句 46
本章小结 49
思考题 50
第五章 条件语句、循环语句、块语句与生成语句 51
5.1 条件语句(if/else语句) 51
5.2 case语句 54
5.3 条件语句的语法 58
5.4 多路分支语句 59
5.5 循环语句 61
5.5.1 forever语句 61
5.5.2 repeat语句 61
5.5.3 while语句 62
5.5.4 for语句 63
5.6 顺序块和并行块 64
5.6.1 块语句的类型 64
5.6.2 块语句的特点 66
5.7 生成块 68
5.7.1 循环生成语句 69
5.7.2 条件生成语句 72
5.7.3 case生成语句 73
5.8 举例 74
5.8.1 4选1多路选择器 74
5.8.2 4位计数器 75
本章小结 76
思考题 77
第六章 结构语句、系统任务、函数语句和显示系统任务 80
6.1 结构语句 80
6.1.1 initial语句 80
6.1.2 always语句 81
6.1.3 task和function语句的不同点 84
6.1.4 task语句 85
6.1.5 function语句 87
6.1.6 函数的使用举例 89
6.1.7 自动(递归)函数 91
6.1.8 常量函数 92
6.1.9 带符号函数 92
6.1.10 关于使用任务和函数的小结 93
6.2 常用的系统任务 93
6.2.1 $display和$write任务 93
6.2.2 文件输出 97
6.2.3 显示层次 99
6.2.4 选通显示 99
6.2.5 值变转储文件 100
6.3 其他系统函数和任务 101
本章小结 102
思考题 102
第七章 调试用系统任务和常用编译预处理语句 103
7.1 系统任务$monitor 103
7.2 时间度量系统函数$time 104
7.3 系统任务$finish 105
7.4 系统任务$stop 105
7.5 系统任务$readmemb和$readmemh 106
7.6 系统任务$random 108
7.7 编译预处理 109
7.7.1 宏定义define 109
7.7.2 “文件包含”处理include 111
7.7.3 时间尺度timescale 115
7.7.4 条件编译命令ifdef、else和endif 116
7.7.5 条件执行 118
本章小结 119
思考题 120
第八章 语法概念练习 121
本章小结 133
第三篇 设计和验证部分 137
第九章 Verilog HDL模型的不同抽象级别 137
9.1 门级结构描述 137
9.1.1 与非门、或门和非门(反向器)及其说明语法 137
9.1.2 用门级结构描述D触发器 138
9.1.3 由已经设计成的模块来构成更高一层的模块 139
9.2 Verilog HDL的行为描述建模 140
9.2.1 仅用于产生仿真测试信号的Verilog HDL行为描述建模 141
9.2.2 Verilog HDL建模在Top-Down设计中的作用和行为建模的可综合性问题 144
9.3 用户定义的原语 144
本章小结 146
思考题 146
第十章 编写和验证简单的纯组合逻辑模块 147
10.1 加法器 147
10.2 乘法器 150
10.3 比较器 153
10.4 多路选择器 154
10.5 总线和总线操作 155
10.6 流水线 157
本章小结 163
思考题 163
第十一章 复杂数字系统的构成 164
11.1 运算部件和数据流动的控制逻辑 164
11.1.1 数字逻辑电路的种类 164
11.1.2 数字逻辑电路的构成 165
11.2 数据在寄存器中的暂时保存 167
11.3 数据流动的控制 168
11.4 同步时序逻辑在Verilog HDL设计中的应用 170
11.5 数据接口的同步方法 172
本章小结 174
思考题 174
第十二章 同步状态机的原理、结构和设计 175
12.1 状态机的结构 175
12.2 Mealy状态机和Moore状态机的区别 176
12.3 用Verilog来描述可综合的状态机 177
本章小结 185
思考题 186
第十三章 设计可综合状态机的指导原则 187
13.1 用Verilog HDL语言设计可综合状态机的指导原则 187
13.2 典型的状态机实例 188
13.3 综合的一般原则 190
13.4 语言指导原则 190
13.5 可综合风格的Verilog HDL模块实例 192
13.5.1 组合逻辑电路设计实例 192
13.5.2 时序逻辑电路设计实例 197
13.6 状态机的置位与复位 200
13.6.1 状态机的异步置位与复位 200
13.6.2 状态机的同步置位与复位 201
本章小结 203
思考题 203
第十四章 深入理解阻塞和非阻塞赋值 204
14.1 阻塞和非阻塞赋值的区别 204
14.1.1 阻塞赋值 205
14.1.2 非阻塞赋值 206
14.2 Verilog模块编程要点 206
14.3 Verilog的层次化事件队列 207
14.4 自触发alwaay s块 208
14.5 移位寄存器模型 209
14.6 阻塞赋值及一些简单的例子 213
14.7 线性反馈移位寄存器建模 213
14.8 组合逻辑建模 215
14.9 时序和组合的混合逻辑 217
14.10 其他将阻塞和非阻塞混合使用的原则 218
14.11 对同一变量进行多次赋值 219
14.12 常见的对于非阻塞赋值的误解 220
本章小结 222
思考题 222
第十五章 较复杂时序逻辑电路设计实践 223
15.1 一个简单的状态机设计——序列检测器 223
15.2 并行数据流转换为一种特殊串行数据流模块的设计 226
本章小结 234
思考题 235
第十六章 复杂时序逻辑电路设计实践 236
16.1 二线制I2C CMOS串行EEPROM 236
16.2 I2C总线特征介绍 236
16.3 二线制I2C CMOS串行EEPROM读写操作 237
16.4 EEPROM的Verilog HDL程序 238
本章小结 262
思考题 262
第十七章 简化的RISC CPU设计 263
17.1 课题的来由和设计环境介绍 263
17.2 CPU 263
17.3 RISC CPU结构 264
17.3.1 时钟发生器 266
17.3.2 指令寄存器 268
17.3.3 累加器 270
17.3.4 算术运算器 271
17.3.5 数据控制器 272
17.3.6 地址多路器 273
17.3.7 程序计数器 274
17.3.8 状态控制器 275
17.3.9 外围模块 281
17.4 RISC CPU的操作和时序 282
17.4.1 系统的复位和启动操作 282
17.4.2 总线读操作 283
17.4.3 写总线操作 284
17.5 RISC CPU的寻址方式和指令系统 284
17.6 RISC CPU模块的调试 285
17.6.1 RISC CPU模块的前仿真 285
17.6.2 RISC CPU模块的综合 299
17.6.3 RISC CPU模块的优化和布局布线 307
本章小结 312
思考题 313
第十八章 虚拟器件、虚拟接口模型、基于平台的设计方法及其在大型数字系统设计中的应用 314
18.1 软核和硬核、宏单元、虚拟器件、虚拟接口模型和基于平台的设计方法 314
18.2 虚拟器件和虚拟接口模块的供应商 315
18.3 虚拟模块的设计 316
18.4 虚拟接口模型的实例 321
本章小结 373
思考题 373
参考文献 374