图书简介:
第1章 EDA技术概述 1
1.1 EDA技术及其发展 1
1.2 Top-down设计与IP核复用 4
1.2.1 Top-down设计 4
1.2.2 Bottom-up设计 5
1.2.3 IP复用技术与SoC 5
1.3 数字设计的流程 7
1.3.1 设计输入 7
1.3.2 综合 9
1.3.3 布局布线 9
1.3.4 仿真 10
1.3.5 编程配置 10
1.4 常用的EDA软件工具 10
1.5 EDA技术的发展趋势 14
习题1 15
第2章 FPGA/CPLD器件 16
2.1 PLD器件概述 16
2.1.1 PLD器件的发展历程 16
2.1.2 PLD器件的分类 17
2.2 PLD的基本原理与结构 19
2.2.1 PLD器件的基本结构 19
2.2.2 PLD电路的表示方法 20
2.3 低密度PLD的原理与结构 21
2.4 CPLD的原理与结构 26
2.4.1 宏单元结构 26
2.4.2 典型CPLD的结构 27
2.5 FPGA的原理与结构 30
2.5.1 查找表结构 30
2.5.2 典型FPGA的结构 32
2.6 FPGA/CPLD的编程元件 37
2.7 边界扫描测试技术 41
2.8 FPGA/CPLD的编程与配置 43
2.8.1 在系统可编程 43
2.8.2 CPLD器件的编程 44
2.8.3 FPGA器件的配置 44
2.9 FPGA/CPLD器件概述 50
2.10 FPGA/CPLD的发展趋势 54
习题2 55
第3章 Quartus Ⅱ集成开发工具 56
3.1 Quartus Ⅱ原理图设计 56
3.1.1 半加器原理图设计输入 56
3.1.2 编译与仿真 60
3.1.3 1位全加器编译与仿真 64
3.2 Quartus Ⅱ的优化设置 65
3.2.1 分析与综合设置 65
3.2.2 优化布局布线 67
3.2.3 设计可靠性检查 72
3.3 Quartus Ⅱ的时序分析 73
3.3.1 时序设置与分析 73
3.3.2 时序逼近 75
3.4 基于宏功能模块的设计 77
3.4.1 Megafunctions库 77
3.4.2 Maxplus2库 82
3.4.3 Primitives库 83
习题3 85
实验与设计 87
3-1 简易数字钟 87
3-2 序列产生器 88
3-3 m序列发生器 89
3-4 8位带符号乘法器 89
3-5 模24方向可控计数器 92
3-6 用锁相环模块实现倍频和分频 94
第4章 Verilog设计初步 97
4.1 Verilog简介 97
4.2 Verilog模块的结构 98
4.3 Verilog基本组合电路设计 102
4.3.1 用Verilog设计基本组合电路 102
4.3.2 用Verilog设计加法器 102
4.4 Verilog基本时序电路设计 105
4.4.1 用Verilog设计触发器 105
4.4.2 用Verilog设计计数器 106
习题4 108
实验与设计 108
4-1 Synplify Pro综合器的使用方法 108
4-2 Synplify综合器的使用方法 112
第5章 Verilog语法与要素 114
5.1 Verilog语言要素 114
5.2 常量 115
5.2.1 整数(Integer) 115
5.2.2 实数(Real) 117
5.2.3 字符串(Strings) 117
5.3 数据类型 118
5.3.1 net型 118
5.3.2 variable型 119
5.4 参数 121
5.5 向量 123
5.6 运算符 125
习题5 129
实验与设计 130
5-1 RAM存储器设计 130
5-2 用rom模块实现4×4无符号数乘法器 132
第6章 Verilog行为语句 136
6.1 过程语句 136
6.1.1 always过程语句 137
6.1.2 initial过程语句 140
6.2 块语句 141
6.2.1 串行块begin-end 141
6.2.2 并行块fork-join 142
6.3 赋值语句 143
6.3.1 持续赋值与过程赋值 143
6.3.2 阻塞赋值与非阻塞赋值 144
6.4 条件语句 145
6.4.1 if-else语句 146
6.4.2 case语句 147
6.5 循环语句 151
6.5.1 for语句 152
6.5.2 repeat、while、forever语句 153
6.6 编译指示语句 155
6.7 任务与函数 156
6.7.1 任务(task) 156
6.7.2 函数(function) 158
6.8 顺序执行与并发执行 161
习题6 162
实验与设计 163
6-1 4×4矩阵键盘检测电路 163
6-2 计数器设计 164
第7章 Verilog设计的层次与风格 167
7.1 Verilog设计的层次 167
7.2 门级结构描述 167
7.2.1 Verilog HDL内置门元件 168
7.2.2 门级结构描述 170
7.3 行为描述 171
7.4 数据流描述 172
7.5 不同描述风格的设计 173
7.5.1 半加器设计 173
7.5.2 1位全加器设计 174
7.5.3 4位加法器设计 176
7.6 多层次结构电路的设计 177
7.7 基本组合电路设计 179
7.7.1 门电路 179
7.7.2 编译码器 179
7.7.3 其他组合电路 181
7.8 基本时序电路设计 182
7.8.1 触发器 182
7.8.2 锁存器与寄存器 182
7.8.3 计数器与串并转换器 184
7.8.4 简易微处理器 185
7.9 三态逻辑设计 187
习题7 189
实验与设计 189
7-1 数字表决器 189
7-2 FIFO缓存器设计 192
第8章 Verilog有限状态机设计 195
8.1 有限状态机 195
8.2 有限状态机的Verilog描述 197
8.2.1 用三个过程描述 198
8.2.2 用两个过程描述 199
8.2.3 单过程描述方式 201
8.3 状态编码 203
8.3.1 常用的编码方式 203
8.3.2 状态编码的定义 207
8.4 有限状态机设计要点 209
8.4.1 复位和起始状态的选择 209
8.4.2 多余状态的处理 209
习题8 211
实验与设计 211
8-1 流水灯控制器 211
8-2 汽车尾灯控制器 213
8-3 状态机A/D采样控制电路 214
8-4 用状态机实现字符液晶显示控制 215
第9章 Verilog设计进阶 222
9.1 加法器设计 222
9.1.1 级连加法器 222
9.1.2 数据流描述的加法器 223
9.1.3 超前进位加法器 224
9.1.4 流水线加法器 225
9.2 乘法器设计 226
9.2.1 并行乘法器 226
9.2.2 移位相加乘法器 228
9.2.3 布斯乘法器 231
9.2.4 查找表乘法器 233
9.3 奇数分频与小数分频 234
9.3.1 奇数分频 234
9.3.2 半整数分频与小数分频 235
9.4 VGA图像的显示与控制 237
9.4.1 DE2—70的VGA显示电路 237
9.4.2 VGA图像显示原理与时序 238
9.4.3 VGA图像显示与控制的实现 241
9.5 点阵式液晶显示控制 247
9.6 乐曲演奏电路 252
习题9 257
实验与设计 259
9-1 数字跑表 259
9-2 实用多功能数字钟 266
第10章 Verilog设计的优化 275
10.1 设计的可综合性 275
10.2 流水线设计技术 277
10.3 资源共享 281
10.4 过程 283
10.5 阻塞赋值与非阻塞赋值 285
习题10 289
实验与设计 289
10-1 小数分频 289
10-2 如何在FPGA设计中消除毛刺 291
10-3 消抖动电路 294
第11章 Verilog仿真与测试 295
11.1 系统任务与系统函数 295
11.2 用户自定义元件 299
11.2.1 组合电路UDP元件 300
11.2.2 时序逻辑UDP元件 301
11.3 延时模型的表示 303
11.3.1 时间标尺定义`timescale 303
11.3.2 延时的表示与延时说明块 304
11.4 测试平台 305
11.5 组合和时序电路的仿真 308
11.5.1 组合电路的仿真 308
11.5.2 时序电路的仿真 310
习题11 310
实验与设计 311
11-1 用ModelSim仿真8位二进制加法器 311
11-2 仿真乘累加器 316
第12章 Verilog语言的发展 318
12.1 Verilog—2001语法结构 318
12.1.1 语法结构的扩展与增强 318
12.1.2 设计管理 324
12.1.3 系统任务和系统函数的扩展 326
12.1.4 VCD文件的扩展 329
12.2 Verilog—2002语法结构 330
12.2.1 硬件单元建模 331
12.2.2 属性 334
12.2.3 编程语言接口 338
习题12 339
第13章 通信与信号处理设计实例 340
13.1 m序列发生器 340
13.1.1 m序列的原理与性质 340
13.1.2 m序列产生器设计 342
13.2 Gold码 344
13.2.1 Gold码的原理与性质 344
13.2.2 Gold码产生器设计 345
13.3 CRC校验码 347
13.4 FSK解调 349
13.5 数字过零检测与等精度频率测量 352
13.5.1 数字过零检测法 352
13.5.2 等精度频率测量 353
13.6 QPSK调制器的FPGA实现 356
13.7 FIR数字滤波器 359
13.8 FPGA信号处理基础及浮点计算实例 363
13.8.1 定点数的表示法 363
13.8.2 浮点数的表示法 364
13.8.3 定点数到浮点数的格式转换 366
13.8.4 浮点数乘法 368
13.8.5 浮点数加法 371
13.8.6 浮点数除法 374
习题13 376
实验与设计 376
13-1 信号音产生器 376
13-2 异步串行接口(UART) 383
附录A Verilog HDL(IEEE Std 1364—1995)关键字 389
附录B Verilog HDL(IEEE Std 1364—2001)关键字 390
附录C DE2系统介绍 391
附录D DE2—70系统介绍 393
附录E 有关术语与缩略语 395
参考文献 400
展开
前 言
本书在第4版的基础上做了部分修订,增加了实验与设计的内容,使之更便于实践教学。本书的主要内容包括FPGA/CPLD器件、EDA设计工具(包括Quartus Ⅱ、Synplify Pro、ModelSim等)、Verilog硬件描述语言,以及一些典型的数字设计实例。书中的实例多数在Altera的DE2或DE2—70实验板上做了实际验证,并尽量给出程序综合与仿真的结果,以便于对照。此外,对于EDA软件工具、实验平台、设计案例均做了精心选择,是作者认为目前较有典型性和代表性的方案。
本书的定位是作为EDA技术、FPGA开发或数字设计方面的教材。在编写的过程中,遵循的是重视基础、面向应用的原则,力图在有限的篇幅内,将EDA技术与FPGA设计相关的知识简明扼要、深入浅出地进行阐述,并融入作者在教学、科研中的实践经验。EDA技术是一门实践性的课程,所以选择一些具有趣味性的设计案例,有助于学生由浅入深快速地掌握设计语言,并通过实践加深体会。另外,本书与作者的另一拙作《数字系统设计与VHDL》(电子工业出版社,2010年5月)互为补充,前者以Verilog语言开发为主,后者则以VHDL语言的设计为重点。
全书共13章。第1章对EDA技术做了综述;第2章介绍FPGA/CPLD器件的结构与编程配置;第3章介绍Quartus II集成开发工具以及基于宏功能模块的设计;第4章对Verilog程序设计进行初步介绍;在第5、6章中,系统介绍Verilog的语法、语句、任务与函数等内容;第7章讨论Verilog设计的层次与风格;第8章是有关有限状态机的内容;第9章列举了一些典型电路的设计与实现;第10章讨论设计优化的问题;第11章是Verilog仿真与验证的内容;在第12章中就Verilog—2001、Verilog—2002标准对Verilog语言所做的扩展与增强做了较为全面的介绍;第13章是通信和信号处理等较为复杂的数字逻辑系统的设计举例。另外,在附录中除了给出Verilog HDL关键字和有关术语、缩略语之外,还对Altera的DE2和DE2—70实验平台做了介绍。
本书在撰写的过程中力求准确、简约,避免烦琐,以期做到深入浅出。所有举例均经过综合工具或仿真工具的验证。EDA技术是一门实践性很强的技术,同时EDA技术的发展又非常迅速,要真正掌握数字设计技术,成为行家里手,需要设计者在实践中不断摸索与积累,逐步提高自己的实际能力与水平。本书虽经很大努力,但由于编著者水平所限,书中疏漏与错误之处在所难免,希望同行和广大读者给予批评指正。
E-mail:wjm_ice@163.com
编著者
2013年12月于解放军理工大学
展开