第1章 FPGA硬件结构知识 1
1.1 CPLD/FPGA概述 1
1.2 FPGA体系结构 5
1.2.1 FPGA基本结构 5
1.2.2 FPGA的结构特点 12
1.3 FPGA编程与配置 12
1.3.1 FPGA的下载接口 13
1.3.2 FPGA的JTAG在线配置 13
1.3.3 FPGA专用配置器件 14
1.3.4 使用单片机在线配置 17
1.3.5 使用CPLD配置FPGA 18
1.4 FPGA常用芯片与选用 19
1.4.1 FPGA常用芯片 19
1.4.2 FPGA器件的选用 23
第2章 VHDL语言编程基础 26
2.1 系统的表示方法和硬件描述语言特点 26
2.1.1 FPGA系统的VHDL表示方法 26
2.1.2 VHDL硬件描述语言特点 28
2.2 VHDL语言结构与要素 29
2.2.1 VHDL语言结构 29
2.2.2 VHDL语言要素 38
2.3 VHDL基本语句 52
2.3.1 VHDL顺序语句 52
2.3.2 VHDL并行语句 75
第3章 硬件开发工具QuartusⅡ的使用 89
3.1 QuartusⅡ软件综述 89
3.1.1 QuartusⅡ软件的特点及其支持的器件 89
3.1.2 QuartusⅡ软件工具及功能简介 90
3.1.3 QuartusⅡ软件的用户界面 92
3.1.4 QuartusⅡ支持文件类型 94
3.2 QuartusⅡ软件开发流程 95
3.3 QuartusⅡ的安装 100
3.4 QuartusⅡ的使用 102
3.4.1 创建QuartusⅡ项目 102
3.4.2 设计输入 104
3.4.3 项目配置及时序约束 108
3.4.4 编译 112
3.4.5 仿真 113
3.4.6 器件编程和配置 117
第4章 门电路设计与实现 119
4.1 基本门电路与组合门电路 119
4.1.1 基本门电路 119
4.1.2 组合逻辑门电路 124
4.2 三态门和总线缓冲器 130
4.2.1 三态门 130
4.2.2 单向总线缓冲器 132
4.2.3 双向总线缓冲器 134
第5章 常用组合逻辑电路的设计 136
5.1 编码器 136
5.1.1 普通编码器 136
5.1.2 优先编码器 137
5.2 译码器 139
5.2.1 二进制译码器 140
5.2.2 十进制译码器 142
5.2.3 七段译码器 143
5.3 数据选择器和数据分配器 146
5.3.1 数据选择器 146
5.3.2 数据分配器 147
5.4 数值比较器和奇偶校验器 149
5.4.1 数值比较器 149
5.4.2 奇偶校验器 151
5.5 运算器 152
5.5.1 加法器 153
5.5.2 减法器 156
5.5.3 乘法器 158
5.5.4 除法器 160
第6章 常用时序电路与状态机的设计 163
6.1 触发器 163
6.1.1 R-S触发器 163
6.1.2 D触发器 165
6.1.3 J-K触发器 167
6.1.4 T触发器 169
6.2 计数器 171
6.2.1 常用二进制计数器 171
6.2.2 可逆计数器 179
6.3 锁存器和寄存器 182
6.3.1 锁存器 183
6.3.2 基本寄存器 184
6.3.3 移位寄存器 188
6.4 存储器 198
6.4.1 ROM只读存储器 198
6.4.2 RAM随机存储器 200
6.4.3 FIFO存储器 202
6.4.4 LIFO存储器 205
6.5 分频器 207
6.5.1 偶数分频器 207
6.5.2 奇数分频器 210
6.5.3 2n分频器 213
6.5.4 占空比可调分频器 214
6.5.5 半整数分频器 216
6.5.6 数控分频器 217
6.6 状态机的设计 219
6.6.1 状态机的结构、分类及特点 219
6.6.2 一般状态机 220
6.6.3 Moore状态机 223
6.6.4 Mealy状态机 225
6.7 序列信号发生器与检测器 228
6.7.1 序列信号检测器的设计 228
6.7.2 m序列信号发生器的设计 231
6.7.3 计数型序列信号发生器的设计 234
第7章 FPGA的显示及键盘控制 236
7.1 LED广告灯设计 236
7.1.1 LED控制原理 236
7.1.2 闪烁广告灯的设计 238
7.1.3 流水广告灯的设计 240
7.1.4 拉幕式与闭幕式广告灯的设计 243
7.1.5 复杂广告灯的设计 248
7.2 LED数码管显示控制 252
7.2.1 单个LED数码管显示设计 252
7.2.2 8位LED数码管动态显示设计 256
7.2.3 8位LED数码管移位显示设计 259
7.3 键盘控制 265
7.3.1 键盘控制原理 265
7.3.2 按键计数控制 267
7.3.3 查询式按键设计 274
7.3.4 矩阵式键盘控制设计 278
7.3.5 简单拨号键盘设计 286
7.4 字符式LCD显示控制 295
7.4.1 LCD液晶显示原理 295
7.4.2 字符式LCD静态显示 301
7.4.3 字符式LCD移位显示 311
第8章 FPGA在数字系统设计中的应用 322
8.1 交通信号灯控制器 322
8.1.1 交通信号灯的控制要求 322
8.1.2 交通信号灯的硬件连接 322
8.1.3 交通信号灯的程序设计 323
8.1.4 交通信号灯控制器的波形仿真 333
8.1.5 交通信号灯的引脚锁定与硬件验证 334
8.2 MIDI音乐发生器 335
8.2.1 MIDI音乐发生器的控制要求 335
8.2.2 MIDI音乐发生器的播放原理 335
8.2.3 MIDI音乐发生器的硬件连接 337
8.2.4 MIDI音乐发生器的程序设计 338
8.2.5 MIDI音乐发生器的波形仿真 349
8.2.6 MIDI音乐发生器的引脚锁定与硬件验证 350
8.3 智力抢答器 351
8.3.1 智力抢答器的控制要求 351
8.3.2 智力抢答器的硬件连接 351
8.3.3 智力抢答器的程序设计 352
8.3.4 智力抢答器的波形仿真 362
8.3.5 智力抢答器的引脚锁定与硬件验证 363
8.4 可调数字钟 365
8.4.1 可调数字钟的控制要求 365
8.4.2 可调数字钟的硬件连接 365
8.4.3 可调数字钟的程序设计 366
8.4.4 可调数字钟的波形仿真 372
8.4.5 可调数字钟的引脚锁定与硬件验证 373
8.5 VGA彩条信号发生器 374
8.5.1 VGA彩条信号发生器的控制要求 374
8.5.2 VGA彩条信号发生器的基本知识 374
8.5.3 VGA彩条信号发生器的硬件连接 376
8.5.4 VGA彩条信号发生器的程序设计 376
8.5.5 VGA彩条信号发生器的波形仿真 381
8.5.6 VGA彩条信号发生器的引脚锁定与硬件验证 382
8.6 电梯控制器 383
8.6.1 电梯控制器的控制要求 383
8.6.2 电梯控制器的硬件连接 383
8.6.3 电梯控制器的程序设计 384
8.6.4 电梯控制器的波形仿真 396
8.6.5 电梯控制器的引脚锁定与硬件验证 396
第9章 FPGA在数字信号处理中的应用 398
9.1 CORDIC算法的应用设计 398
9.1.1 CORDIC算法的基本理论 398
9.1.2 CORDIC算法的设计思路 400
9.1.3 CORDIC算法的程序设计 400
9.1.4 CORDIC算法的波形仿真 406
9.2 FIR滤波器的设计 406
9.2.1 FIR滤波器的原理 407
9.2.2 直接形式的FIR滤波器设计 407
9.2.3 转置结构的FIR滤波器设计 409
9.3 IIR滤波器的设计 411
9.3.1 IIR滤波器的基本理论 412
9.3.2 直接型IIR滤波器设计 414
9.3.3 级联型IIR滤波器设计 415
第10章 宏功能模块与SOPC技术的应用 425
10.1 宏功能模块的应用 425
10.1.1 LPM_COUNTER在数控分频器中的应用 425
10.1.2 LPM_ROM在4位乘法器中的应用 429
10.1.3 LPM_RAM随机存储器在FPGA中的读/写控制 434
10.1.4 LPM_FIFO先入先出存储器在FPGA中的读/写控制 437
10.1.5 ALTPLL锁相环在倍频/分频中的应用 442
10.2 SOPC技术的应用 451
10.2.1 SOPC的设计流程与系统架构 451
10.2.2 LED流水灯的设计 456
参考文献 474