第1章 概念扫盲 1
1.1 FPGA简单入门 1
1.2 FPGA应用领域 4
1.3 FPGA的优势 5
1.4 开发流程 6
思考 7
第2章 逻辑设计基础 8
2.1 0和1——精彩世界由此开始 8
2.2 表面现象揭秘——逻辑关系 10
2.3 内里本质探索——器件结构 14
思考 18
第3章 实验平台板级设计 19
3.1 FPGA板级电路设计五要素 19
3.1.1 能量供应——电源电路 21
3.1.2 心脏跳动——时钟电路 22
3.1.3 状态初始——复位电路 24
3.1.4 灵活定制——配置电路 24
3.1.5 自由扩展——外设电路 25
3.2 FPGA核心板设计 26
3.2.1 读懂器件手册 26
3.2.2 核心板电路设计架构 28
3.2.3 电源电路设计 30
3.2.4 时钟和复位电路设计 31
3.2.5 配置电路设计 34
3.2.6 SDRAM电路设计 38
3.2.7 引脚分配规划和扩展I/O电路 39
3.3 扩展子板设计 40
3.3.1 基本外设子板 41
3.3.2 LCD显示驱动子板 45
3.3.3 VGA显示驱动子板 50
3.3.4 USB和UART串口子板 54
3.3.5 超声波与视频采集子板 60
思考 64
第4章 开发工具简介 65
4.1 软件下载和license申请 65
4.2 QuartusⅡ的安装 68
4.3 ModelSim-Altera的安装 71
4.4 USB-Blaster的驱动安装 71
思考 73
第5章 Verilog语法概述 74
5.1 语法学习的经验之谈 74
5.2 可综合的语法子集 76
5.3 代码风格与书写规范 82
思考 95
第6章 入门实例 96
6.1 分频计数之LED闪烁 96
6.1.1 功能概述 96
6.1.2 设计说明 96
6.1.3 源码解析 110
6.1.4 板级调试 111
6.2 分频计数之蜂鸣器 112
6.2.1 功能概述 112
6.2.2 设计说明 113
6.2.3 源码解析 116
6.2.4 板级调试 116
6.3 流水灯控制 117
6.3.1 功能概述 117
6.3.2 设计说明 117
6.3.3 源码解析 120
6.3.4 板级调试 121
6.4 模式流水灯 121
6.4.1 功能概述 121
6.4.2 设计说明 122
6.4.3 源码解析 126
6.4.4 板级调试 127
6.5 数码管显示驱动 127
6.5.1 功能概述 127
6.5.2 设计说明 128
6.5.3 源码解析 131
6.5.4 板级调试 134
6.6 LCD显示驱动 134
6.6.1 功能概述 134
6.6.2 设计说明 135
6.6.3 源码解析 137
6.6.4 板级调试 140
6.7 LCD的32级红色显示 141
6.7.1 功能概述 141
6.7.2 设计说明 141
6.7.3 源码解析 141
6.7.4 板级调试 143
6.8 VGA/SVGA显示驱动 144
6.8.1 功能概述 144
6.8.2 设计说明 145
6.8.3 源码解析 153
6.8.4 板级调试 160
6.9 超声波测距数据采集 161
6.9.1 功能概述 161
6.9.2 设计说明 161
6.9.3 源码解析 163
6.9.4 板级调试 164
6.10 倒车雷达 167
6.10.1 功能概述 167
6.10.2 设计说明 167
6.10.3 源码解析 168
6.10.4 板级调试 170
6.11 UART串口收发测试 171
6.11.1 功能概述 171
6.11.2 设计说明 171
6.11.3 源码解析 173
6.11.4 板级调试 182
第7章 片内资源应用 184
7.1 PLL配置 184
7.1.1 功能概述 184
7.1.2 源码解析 188
7.1.3 板级调试 189
7.2 片内存储器应用之ROM 189
7.2.1 功能概述 190
7.2.2 设计说明 191
7.2.3 源码解析 199
7.2.4 板级调试 200
7.3 片内存储器应用之单口RAM 204
7.3.1 功能概述 204
7.3.2 设计说明 204
7.3.3 源码解析 210
7.3.4 板级调试 211
7.4 片内存储器应用之移位寄存器 212
7.4.1 功能概述 212
7.4.2 设计说明 213
7.4.3 源码解析 216
7.4.4 板级调试 218
7.5 片内存储器应用之FIFO 219
7.5.1 功能概述 219
7.5.2 设计说明 219
7.5.3 源码解析 224
7.5.4 板级调试 227
7.6 基于FPGA内嵌RAM的LCD字符显示 227
7.6.1 功能概述 227
7.6.2 设计说明 228
7.6.3 源码解析 236
7.6.4 板级调试 240
思考 241
第8章 时序设计实例 242
8.1 时序分析基础 242
8.1.1 基本的时序分析理论 242
8.1.2 时钟、建立时间和保持时间 245
8.1.3 基本时序路径 247
8.1.4 reg2reg路径的时序分析 249
8.2 VGA驱动接口时序设计 251
8.3 CMOS摄像头接口时序设计 261
第9章 设计仿真 271
9.1 仿真验证概述 271
9.2 ModelSim软件概述 275
思考 278
第10章 在线调试实例 279
10.1 基于FPGA的在线系统调试概述 279
10.2 基于In-System Logic Analyzer的UART串口接收数据采集 281
10.2.1 功能概述 281
10.2.2 设计说明 282
10.2.3 源码解析 284
10.2.4 板级调试 285
10.3 基于In-System Sources and Probes Editor的A/D采集 286
10.3.1 功能概述 286
10.3.2 设计说明 287
10.3.3 源码解析 290
10.3.4 板级调试 293
10.4 基于In-System Sources and Probes Editor的D/A采集 295
10.4.1 功能概述 295
10.4.2 设计说明 295
10.4.3 源码解析 297
10.4.4 板级调试 301
10.5 基于In-System Memory Content Editor的LCD实时显示字符更改 302
10.5.1 功能概述 302
10.5.2 设计说明 302
10.5.3 源码解析 303
10.5.4 板级调试 303
思考 305
第11章 视频图像采集设计 306
11.1 CMOS摄像头应用背景与驱动原理 306
11.2 视频采集系统设计概述 307
11.3 I2C接口配置模块设计 309
11.4 视频流采集设计 313
11.5 SDRAM控制器设计 315
11.6 LCD控制器设计 316
11.7 工程实践与板级调试 316
思考 316
参考文献 318