本书以培养电子信息技术应用型人才为目标,以实际应用为背景,深入浅出地介绍了FPGA的基本技术。在内容取材上,力求反映国内外FPGA技术的新成果、新应用,简明精练;在描述方法上,既注重基本理论的介绍,力求通俗易懂;又强调理论与实践相结合,通过大量的实用例程,帮助读者更深入地了解FPGA技术及应用开发方法。
全书共8章,内容包括绪论、可编程逻辑器件、VHDL硬件描述语言基础、VHDL描述语句、有限状态机(FSM)、常用接口电路的FPGA实现、FPGA在通信系统设计中的应用及FPGA在数字信号处理中的应用等。
本书内容安排丰富,由浅入深,重点突出,强调理论与实践相结合,且书中每章都列举了一定数量的例题,章末还附有相关拓展思考题。
本书可作为高等学校电子信息类专业的本科生或研究生教材,也可作为广大数字电路或者数字系统设计开发人员的参考书。
第1章 绪论 1
1.1 电子设计自动化技术概述 1
1.1.1 EDA技术的发展历程 1
1.1.2 EDA的基本特征 2
1.2 专用集成电路设计方法 4
1.3 HDL的特点 6
1.3.1 VHDL 6
1.3.2 Verilog HDL 7
1.4 常用的FPGA工具软件 7
1.4.1 EDA工具 7
1.4.2 Xilinx公司的Vivado开发工具 概述 9
1.4.3 Altera公司的Quartus Ⅱ开发工具 概述 9
1.5 FPGA设计流程 10
1.6 EDA技术的发展趋势 12
拓展思考题 13
第2章 可编程逻辑器件 14
2.1 PLD简介 14
2.1.1 PLD概述 14
2.1.2 PLD的优点 15
2.1.3 PLD的分类 15
2.1.4 PLD的发展趋势 16
2.2 PLD的硬件结构 17
2.2.1 PLD的表示方法 18
2.2.2 PROM的结构原理 19
2.2.3 PLA的结构原理 20
2.3 CPLD的硬件结构 21
2.3.1 乘积项原理 21
2.3.2 CPLD的基本结构 21
2.3.3 Altera公司的CPLD器件 23
2.4 FPGA的硬件结构 25
2.4.1 查找表原理 25
2.4.2 FPGA的基本结构 26
2.4.3 Altera公司的FPGA器件 28
2.4.4 Cyclone Ⅴ系列器件 29
2.5 CPLD/FPGA开发应用选择 36
2.5.1 PLD选择的依据 36
2.5.2 FPGA与CPLD的比较 37
拓展思考题 39
第3章 VHDL硬件描述语言基础 40
3.1 VHDL概述 40
3.2 VHDL结构与要素 40
3.2.1 库 41
3.2.2 程序包 43
3.2.3 实体 45
3.2.4 结构体 47
3.2.5 配置 48
3.3 VHDL文字规则 51
3.3.1 数字型文字 51
3.3.2 字符串型文字 52
3.3.3 标识符 52
3.3.4 下标名与下标段名 53
3.3.5 保留字 54
3.4 VHDL数据对象 54
3.4.1 常量 54
3.4.2 变量 55
3.4.3 信号 56
3.4.4 数据对象的比较 57
3.5 VHDL数据类型 58
3.5.1 VHDL预定义数据类型 58
3.5.2 IEEE预定义标准逻辑位与矢量 61
3.5.3 其他预定义标准数据类型 62
3.5.4 用户自定义数据类型 63
3.6 VHDL操作符 69
3.6.1 操作符种类 69
3.6.2 赋值操作符 71
3.6.3 逻辑操作符 73
3.6.4 关系操作符 74
3.6.5 算术操作符 75
3.6.6 重载操作符 77
3.7 VHDL预定义属性 77
3.7.1 值类属性 78
3.7.2 函数类预定义属性 78
3.7.3 信号类预定义属性 79
3.7.4 数据类型类预定义属性 80
3.7.5 数据范围类预定义属性 80
拓展思考题 80
第4章 VHDL描述语句 81
4.1 VHDL描述语句概述 81
4.2 顺序语句 82
4.2.1 变量赋值语句 82
4.2.2 信号赋值语句 82
4.2.3 wait语句 83
4.2.4 if语句 84
4.2.5 case语句 87
4.2.6 loop语句 88
4.2.7 exit语句 90
4.2.8 next语句 92
4.2.9 return语句 93
4.2.10 null语句 94
4.2.11 assert语句 94
4.2.12 report语句 96
4.2.13 过程调用语句 97
4.3 并行语句 99
4.3.1 进程语句 99
4.3.2 块语句 101
4.3.3 并行信号赋值语句 101
4.3.4 并行过程调用语句 103
4.3.5 并行断言语句 104
4.3.6 类属语句 105
4.3.7 元件例化语句 106
4.3.8 生成语句 107
拓展思考题 110
第5章 有限状态机 112
5.1 有限状态机概述 112
5.1.1 有限状态机的基本结构 112
5.1.2 有限状态机的表示方法 113
5.1.3 有限状态机的VHDL设计描述 113
5.1.4 有限状态机的设计步骤 115
5.1.5 有限状态机的设计模板 116
5.2 Moore型有限状态机设计 119
5.3 Mealy型有限状态机设计 124
5.4 FSM状态编码 129
拓展思考题 130
第6章 常用接口的FPGA实现 132
6.1 概述 132
6.2 UART接口实现 132
6.2.1 UART的工作原理 132
6.2.2 UART顶层设计的VHDL描述 133
6.2.3 UART发送器 135
6.2.4 UART接收器 138
6.2.5 波特率发生器 142
6.3 IIC接口实现 143
6.3.1 IIC接口工作原理 143
6.3.2 IIC顶层设计的VHDL描述 145
6.3.3 IIC核心模块的VHDL描述 151
6.3.4 仿真波形 158
6.4 SPI接口实现 158
6.4.1 SPI的工作原理 158
6.4.2 SPI顶层设计的VHDL描述 160
6.4.3 移位寄存器 164
6.4.4 SPI主从选择模块 166
6.4.5 时钟信号发生器 168
6.4.6 SPI控制的管理模块 169
6.5 VGA接口实现 177
6.5.1 VGA的显示原理 177
6.5.2 VGA的VHDL描述及其仿真波形 178
拓展思考题 180
第7章 FPGA在通信系统设计中的应用 181
7.1 概述 181
7.2 数字调制 183
7.2.1 数字调制的基本理论 183
7.2.2 数字调制的程序设计 185
7.2.3 数字调制的代码分析 191
7.2.4 数字调制的仿真波形 192
7.3 数字上变频和下变频 192
7.3.1 数字上变频和下变频的基本理论 192
7.3.2 数字上变频和下变频的程序设计 194
7.3.3 数字上变频和下变频的代码分析 203
7.3.4 数字上变频和下变频的波形分析 204
7.4 (7,4)汉明码编译码与Viterbi译码 204
7.4.1 (7,4)汉明码编译码 204
7.4.2 Viterbi算法译码 217
7.5 基于软件无线电的误码检测系统的实现 224
7.5.1 误码检测系统的基本理论 224
7.5.2 误码检测系统的程序设计 225
7.5.3 误码检测系统的代码分析 229
7.5.4 误码检测系统的仿真波形 231
拓展思考题 231
第8章 FPGA在数字信号处理中的应用 232
8.1 概述 232
8.2 常用的数字滤波器 233
8.2.1 FIR数字滤波器的基本理论 233
8.2.2 FIR数字滤波器的系统构成 236
8.2.3 FIR数字滤波器的设计实现 237
8.2.4 FIR数字滤波器的VHDL程序设计 237
8.2.5 FIR数字滤波器的仿真波形 240
8.2.6 IIR数字滤波器的基本理论 241
8.2.7 IIR数字滤波器的系统构成 243
8.2.8 IIR数字滤波器的设计实现 243
8.2.9 IIR数字滤波器的VHDL程序设计 244
8.2.10 IIR数字滤波器的仿真波形 249
8.3 时频信号变换——快速傅里叶变换 251
8.3.1 傅里叶变换基本理论 251
8.3.2 CooleyTukey FFT算法实现 252
8.3.3 程序设计 254
8.3.4 仿真波形 261
8.4 信号的自适应滤波 261
8.4.1 自适应滤波概述 261
8.4.2 LMS算法原理 262
8.4.3 自适应滤波器VHDL程序设计 263
8.4.4 仿真波形 265
8.5 数字图像的初步处理 265
8.5.1 边缘检测的基本原理 266
8.5.2 Sobel算法设计实现 267
8.5.3 Sobel算法程序设计 268
8.5.4 仿真波形 271
拓展思考题 272
附录Ⅰ Quartus Prime 18.0安装 273
附录Ⅱ Quartus Prime 18.0新建工程 278
参考文献 300