第1章 FPGA开发入门 1
1.1 FPGA基础入门 1
1.2 FPGA的优势在哪里 4
1.3 FPGA应用领域 5
1.4 FPGA开发流程 6
第2章 实验平台“勇敢的芯”板级电路详解 8
2.1 板级电路整体架构 8
2.2 电源电路 10
2.3 复位与时钟电路 12
2.3.1 关于FPGA器件的时钟 12
2.3.2 关于FPGA器件的复位 14
2.3.3 实验平台电路解析 14
2.4 FPGA下载配置电路 15
2.5 SRAM接口电路 17
2.6 ADC/DAC芯片电路 18
2.7 UART接口电路 19
2.8 RTC接口电路 19
2.9 4×4矩阵按键电路 20
2.10 VGA显示接口电路 21
2.11 蜂鸣器、流水灯、数码管、拨码开关电路 22
2.12 超声波接口、外扩LCD接口电路 22
第3章 逻辑设计基础 24
3.1 0和1——精彩世界由此开始 24
3.2 表面现象揭秘——逻辑关系 26
3.3 内里本质探索——器件结构 30
第4章 软件安装与配置 35
4.1 软件下载和license申请 35
4.2 Quartus Ⅱ与ModelSim-Altera的安装 36
4.3 文本编辑器Notepad++安装 37
4.4 Quartus Ⅱ中使用Notepad++的关联设置 41
4.5 USB-Blaster的驱动安装 43
4.5.1 Windows XP系统USB-Blaster安装 43
4.5.2 在Windows 7系统安装USB-Blaster 45
4.5.3 在Windows 8系统安装USB-Blaster 47
4.6 串口芯片驱动安装 48
4.6.1 驱动安装 48
4.6.2 设备识别 48
第5章 Verilog语法概述 50
5.1 语法学习的经验之谈 50
5.2 可综合的语法子集 52
5.3 代码风格与书写规范 57
第6章 基于仿真的第一个工程实例 72
6.1 新建工程 72
6.2 Verilog源码文件创建与编辑 75
6.2.1 Verilog源码文件创建 75
6.2.2 Verilog源码文件编辑 75
6.3 Verilog语法检查 76
6.4 ModelSim仿真验证 77
6.4.1 Quartus Ⅱ基本设置 77
6.4.2 测试脚本创建与编辑 77
6.4.3 测试脚本关联设置 80
6.4.4 调用ModelSim仿真 82
第7章 基于板级调试的第二个工程实例 84
7.1 PWM蜂鸣器驱动——功能概述 84
7.2 PWM蜂鸣器驱动——引脚分配 86
7.3 PWM蜂鸣器驱动——综合、映射与配置文件产生 88
7.4 Altera FPGA配置方式 90
7.4.1 概述 90
7.4.2 配置方式 91
7.5 PWM蜂鸣器驱动——FPGA在线下载配置 92
7.6 PWM蜂鸣器驱动——FPGA配置芯片固化 94
7.7 PWM蜂鸣器驱动——复位与FPGA重配置功能 98
第8章 基础入门实例 100
8.1 蜂鸣器开关实例 100
8.1.1 功能简介 100
8.1.2 代码解析 101
8.1.3 打开工程 101
8.1.4 下载配置操作 102
8.2 流水灯实例 103
8.2.1 功能简介 103
8.2.2 代码解析 104
8.2.3 下载配置 104
8.3 3-8译码器实例 104
8.3.1 功能简介 104
8.3.2 代码解析 105
8.3.3 板级调试 106
8.4 按键消抖与LED开关实例 106
8.4.1 按键消抖原理 106
8.4.2 功能简介 107
8.4.3 代码解析 108
8.4.5 板级调试 110
8.5 经典模式流水灯实例 110
8.5.1 功能简介 110
8.5.2 代码解析 111
8.5.3 板级调试 113
8.6 基于PLL分频计数的LED闪烁实例 113
8.6.1 PLL概述 113
8.6.2 功能简介 114
8.6.3 新建IP核文件 114
8.6.4 PLL配置 116
8.6.5 模块化设计概述 120
8.6.6 模块化设计实践 121
8.6.7 代码解析 121
8.6.8 板级调试 123
8.7 数码管驱动实例 123
8.7.1 数码管驱动原理 123
8.7.2 功能概述 124
8.7.3 代码解析 125
8.7.4 板级调试 129
8.8 SRAM读写测试实例 129
8.8.1 SRAM读写时序解读 129
8.8.2 功能简介 132
8.8.3 代码解析 133
8.8.4 仿真设置 139
8.8.5 功能仿真 139
8.8.6 FPGA在线配置 140
8.8.7 触发采样波形 140
8.9 UART loopback测试 142
8.9.1 功能概述 142
8.9.2 代码解析 143
8.9.3 板级调试 150
8.10 VGA驱动ColorBar显示实例 151
8.10.1 VGA概述 151
8.10.2 功能简介 154
8.10.3 代码解析 155
8.10.4 板级调试 161
8.11 LCD基本驱动实例 161
8.11.1 LCD驱动时序 161
8.11.2 功能简介 163
8.11.3 代码解析 163
8.11.4 装配 167
8.11.5 板级调试 167
8.12 LCD字符显示驱动实例 168
8.12.1 字符取模 168
8.12.2 ROM初始化文档创建 171
8.12.3 新建源文件 172
8.12.4 ROM配置 173
8.12.5 功能简介 176
8.12.6 代码解析 176
8.12.7 板级调试 180
8.13 矩阵按键扫描检测实例 181
8.13.1 键盘概述 181
8.13.2 矩阵按键工作原理 181
8.13.3 功能概述 182
8.13.4 代码解析 183
8.13.5 RTL Viewer 188
8.13.6 State Machine Viewer 190
8.13.7 Technology Map Viewer 191
8.13.8 板级调试 192
第9章 FPGA片内资源应用实例 193
9.1 基于SignalTap Ⅱ的超声波测距调试实例 193
9.1.1 超声波测距原理 193
9.1.2 功能简介 194
9.1.3 代码解析 194
9.1.4 硬件装配 197
9.1.5 SignalTapⅡ源文件创建 197
9.1.6 SignalTapⅡ配置 198
9.1.7 SignalTapⅡ调试 202
9.2 FPGA片内ROM实例 202
9.2.1 功能概述 202
9.2.2 代码解析 203
9.2.3 ROM初始化文档创建 205
9.2.4 新建IP核源文件 206
9.2.5 ROM配置 208
9.2.6 功能仿真 211
9.2.7 FPGA在线调试 211
9.3 FPGA片内RAM实例 212
9.3.1 功能概述 212
9.3.2 代码解析 213
9.3.3 新建IP核源文件 215
9.3.4 RAM配置 216
9.3.5 功能仿真 218
9.3.6 FPGA在线调试 220
9.4 FPGA片内FIFO实例 221
9.4.1 功能概述 221
9.4.2 代码解析 221
9.4.3 新建IP核源文件 224
9.4.4 FIFO配置 225
9.4.5 功能仿真 228
9.4.6 FPGA在线调试 229
9.5 FPGA片内异步FIFO实例 230
9.5.1 功能概述 230
9.5.2 代码解析 231
9.5.3 新建IP核源文件 234
9.5.4 FIFO配置 234
9.5.5 功能仿真 236
9.5.6 FPGA在线调试 238
9.6 FPGA片内ROM、FIFO、RAM联合实例 240
9.6.1 功能概述 240
9.6.2 代码解析 240
9.6.3 功能仿真 244
9.6.4 FPGA在线调试 245
第10章 综合进阶实例 247
10.1 基于数码管显示的超声波测距回响脉宽计数实例 247
10.1.1 功能简介 247
10.1.2 代码解析 248
10.1.3 板级调试 250
10.2 基于均值滤波处理的超声波测距回响脉宽计数实例 250
10.2.1 功能简介 250
10.2.2 滤波算法与实现 251
10.2.3 代码解析 251
10.2.4 板级调试 253
10.3 基于进制换算的超声波测距结果显示实例 253
10.3.1 功能简介 253
10.3.2 距离计算公式实现 253
10.3.3 进制换算实现 254
10.3.4 代码解析 254
10.3.5 乘法器IP核创建、配置与例化 256
10.3.6 除法器IP核创建、配置与例化 259
10.3.7 板级调试 262
10.4 倒车雷达实例 263
10.4.1 应用背景 263
10.4.2 功能简介 263
10.4.3 代码解析 264
10.4.4 板级调试 266
10.5 基于SRAM批量读写的UART bulk测试实例 266
10.5.1 功能概述 266
10.5.2 代码解析 267
10.5.3 板级调试 275
10.6 基于数码管显示的RTC读取实例 277
10.6.1 RTC芯片解析 277
10.6.2 功能简介 278
10.6.3 代码解析 279
10.6.4 板级调试 288
10.7 基于UART发送的RTC读取实例 289
10.7.1 功能简介 289
10.7.2 代码解析 289
10.7.3 板级调试 292
10.8 基于UART收发的RTC读写实例 293
10.8.1 功能简介 293
10.8.2 代码解析 293
10.8.3 板级调试 296
10.9 基于UART控制的VGA多模式显示实例 297
10.9.1 功能简介 297
10.9.2 代码解析 298
10.9.3 板级调试 298
10.10 基于LED显示的D/A输出驱动实例 299
10.10.1 D/A芯片概述 299
10.10.2 功能简介 300
10.10.3 代码解析 300
10.10.4 板级调试 305
10.11 基于按键调整和数码管显示的D/A输出实例 306
10.11.1 功能简介 306
10.11.2 代码解析 306
10.11.3 板级调试 307
10.12 波形发生器实例 307
10.12.1 功能简介 307
10.12.2 代码解析 308
10.12.3 IP核CORDIC配置与例化 312
10.12.4 板级调试 317
10.13 基于数码管显示的A/D采集实例 317
10.13.1 A/D芯片接口概述 317
10.13.2 功能简介 318
10.13.3 代码解析 318
10.13.4 板级调试 322
10.14 A/D和D/A联合测试实例 322
10.14.1 功能简介 322
10.14.2 代码解析 322
10.14.3 板级调试 324
10.15 RTC时间的LCD显示和UART设置实例 325
10.15.1 功能简介 325
10.15.2 代码解析 325
10.15.3 板级调试 329
参考文献 330