第1章 浅谈FPGA技术、优势、学习途径 1
1.1 FPGA的诞生、发展 1
1.1.1 FPGA的诞生 1
1.1.2 FPGA的发展与未来 4
1.1.3 博弈,在入门之前 7
1.2 Altera FPGA介绍及发展、应用 8
1.2.1 Altera公司介绍 8
1.2.2 Altera产品介绍 9
1.2.3 Altera FPGA的开发平台 15
1.2.4 Altera FPGA的动态与应用 17
1.2.5 Altera FPGA的应用 20
1.2.6 对比ARM与DSP,认清FPGA 23
1.3 善用网络资源,不断总结自我 26
第2章 Quartus Ⅱ 13.0套件的下载及安装 29
2.1 写在前面的话 29
2.2 Quartus Ⅱ 13.0软件下载 30
2.3 Quartus Ⅱ 13.0组件安装 32
2.4 Quartus Ⅱ 13.0 Device安装 36
2.5 USB Blaster下载器驱动程序的安装 39
第3章 Verilog HDL语法简介 43
3.1 What is Verilog HDL? 43
3.2 设计层次 44
3.3 设计流程 44
3.4 基本语法介绍 46
3.4.1 模块module 46
3.4.2 注 释 47
3.4.3 大小写 47
3.4.4 参数声明parameter 48
3.4.5 预处理指令 48
3.4.6 常量 49
3.4.7 变量 50
3.4.8 运算符 51
3.5 Verilog HDL建模 54
3.5.1 结构建模 54
3.5.2 数据流建模 56
3.5.3 行为建模 57
3.5.4 关于状态机 66
第4章 MAX Ⅱ CPLD/Cyclone Ⅱ/Ⅳ FPGA设PCB Layout设计 76
4.1 浅谈PCB Layout 76
4.2 MAX Ⅱ CPLD核心电路设计 77
4.2.1 MAX ⅡCPLD背景及简介 77
4.2.2 EPM240T100C5N设计需求研究及分析 79
4.2.3 EPM240T100C5N核心板原理图设计 83
4.2.4 EPM240T100C5N核心板布局布线 87
4.3 Cyclone Ⅱ FPGA核心电路设计 88
4.3.1 Cyclone Ⅱ FPGA背景及简介 88
4.3.2 Cyclone Ⅱ数据手册解读与EP2C8Q208C8N的设计研究 89
4.3.3 EP2C8Q208C8N核心板原理图设计 101
4.3.4 FPGA核心板Layout注意事项 110
4.4 Cyclone Ⅳ FPGA核心电路设计 113
4.4.1 Cyclone Ⅳ FPGA简介 113
4.4.2 Cyclone Ⅳ FPGA数据手册分析与EP4CE6E22C8N的设计研究 115
4.4.3 Cyclone Ⅳ FPGA核心电路设计 121
4.5 FPGA/CPLD电路焊接、调试经验总结 124
4.6 本书配套FPGA开发平台硬件介绍 128
4.6.1 VIPBoard 3.0硬件资源介绍 128
4.6.2 VIPBoard 3.0相关外设实物介绍 130
第5章 Verilog HDL设计与Testbench文件架构 134
5.1 Verilog HDL设计 134
5.1.1 Verilog HDL与VHDL的对比 134
5.1.2 Verilog HDL的发展 135
5.1.3 Verilog HDL代码设计风格 136
5.2 Testbench文件架构 141
5.2.1 Testbench 的介绍 141
5.2.2 Testbench代码设计风格 142
5.3 Quartus Ⅱ工程目录文件夹的定制 145
第6章 4位计数器的设计与仿真验证 147
6.1 写在前面的话 147
6.2 FPGA/CPLD开发流程 147
6.3 基于Quartus Ⅱ 13.0的4位计数器设计流程 149
6.3.1 Quartus Ⅱ 工程的创建 149
6.3.2 4位计数器的逻辑电路设计 152
6.3.3 Quartus Ⅱ编译流程与工程设置分析 155
6.4 基于Modelsim-Altera 10.1d的4位计数器仿真验证流程 166
6.4.1 关于FPGA设计的各种仿真概念分析 167
6.4.2 Modelsim 版本的简要介绍 168
6.4.3 Modelsim 工程的创建 168
6.4.4 Testbench激励文件的编写 171
6.4.5 Modelsim波形的仿真与分析 174
6.5 设计思路的验证与总结 182
第7章 LED驱动电路设计 183
7.1 LED驱动电路设计方案1——入门 183
7.1.1 LED驱动电路设计方案 183
7.1.2 8位LED的自加显示实验 185
7.2 LED 驱动电路设计方案2——升级 196
7.2.1 LED 电路设计方案 196
7.2.2 74HC595驱动分析与实现 198
7.3 8位LED跑马灯显示实验 208
7.4 LED特效呼吸灯的设计 215
7.4.1 PWM协议的基本介绍 215
7.4.2 LED呼吸灯的设计 216
第8章 独立按键与矩阵键盘的FPGA驱动电路实现 227
8.1 按键及其工作模式介绍 227
8.1.1 按键抖动原理分析 228
8.1.2 硬件消抖动 228
8.1.3 软件消抖动 230
8.2 独立按键的FPGA驱动电路设计 230
8.2.1 独立按键电路设计 230
8.2.2 FSM状态机的Verilog HDL介绍 231
8.2.3 FPGA按键驱动设计方案1 234
8.2.4 FPGA按键驱动设计方案2 248
8.3 矩阵键盘的FPGA驱动电路设计 252
8.3.1 工作原理及电路设计 252
8.3.2 FPGA矩阵键盘驱动设计 255
第9章 “Hello World”的LCD1602显示驱动实现 267
9.1 LCD1602介绍及硬件设计 267
9.1.1 LCD1602字符液晶介绍 267
9.1.2 LCD1602 硬件电路设计 268
9.1.3 LCD1602的时序及初始化分析 271
9.2 LCD 1602 的FPGA驱动电路实现 275
9.2.1 LCD1602的C语言实现方案 276
9.2.2 LCD1602的Verilog HDL实现方案 277
第10章 优化设计FPGA全局时钟管理模块 290
10.1 异步复位,同步释放机制 290
10.1.1 组合电路中的竞争-冒险 291
10.1.2 时序电路中的竞争-冒险 292
10.2 无PLL的全局时钟管理模块设计 296
10.3 Quartus Ⅱ IP核介绍及PLL的定制 305
10.3.1 Quartus Ⅱ IP核的介绍 305
10.3.2 PLL IP核的定制与分析 311
10.4 带PLL的全局时钟管理模块设计 319
第11章 基于FPGA与MCU通信的SPI协议设计 325
11.1 SPI总线协议介绍及硬件的设计 325
11.1.1 SPI总线协议介绍 325
11.1.2 STM8的硬件电路设计 327
11.1.3 SPI总线协议时序分析 329
11.2 SPI总线协议的通信实现 330
11.2.1 STM8的SPI总线收发设计 330
11.2.2 边沿检测电路的 FPGA实现 332
11.2.3 SPI通信的数据接收模块设计 334
11.2.4 SPI通信的数据发送模块设计 343
第12章 基于FPGA与PC通信的UART串口设计 351
12.1 追根溯源透析串口通信 351
12.1.1 串口通信简介 351
12.1.2 串口波特率 354
12.1.3 串口协议分析 354
12.2 串口电路的设计 355
12.2.1 TTL转RS-232 电路的设计 355
12.2.2 USB→UART转换电路设计 356
12.2.3 UART 电路的调试 357
12.3 细说真正的任意分频 358
12.3.1 分频电路的重要性 358
12.3.2 任意频率发生器原理 358
12.3.3 任意频率发生器的验证 360
12.4 串口通信的硬件实现 364
12.4.1 uart receiver接收模块的设计 364
12.4.2 uart transfer发送模块的设计 372
12.4.3 PC2FPGA UART 联调测试 376
第13章 基于FPGA的VGA驱动显示设计 383
13.1 VGA接口、时序及驱动电路设计 383
13.1.1 VGA接口介绍 383
13.1.2 VGA 时序分析 385
13.1.3 RGB三原色模型 388
13.1.4 VGA驱动电路设计 391
13.2 VGA驱动的FPGA实现 396
13.2.1 VGA驱动时序电路的设计 396
13.2.2 任意分辨率的VGA显示控制器设计 408
13.3 “Hello World”的VGA显示驱动实现 411
13.3.1 “Hello World”字模的提取 411
13.3.2 C2Mif软件的介绍与Mif文件的生成 414
13.3.3 VGA字符显示的FPGA实现 418
13.4 彩色图像的VGA显示驱动实现 422
13.4.1 彩色图像显示的理论分析 422
13.4.2 彩色图像的数据提取 423
13.4.3 VGA彩色图像显示的FPGA实现 424
第14章 基于SDRAM的VGA显示控制器的设计与实现 427
14.1 跨时钟域数据交互 427
14.2 SDRAM的介绍及其控制器的移植与优化 431
14.2.1 SDRAM的特性及时序驱动介绍 431
14.2.2 SDRAM的硬件驱动电路设计 435
14.2.3 SDRAM控制器的移植与优化 437
14.2.4 Sdram Control 2Port的封装与协议制定 454
14.3 基于SDRAM的VGA显示控制器的实现 459
第15章 基于OV7725的摄像头视频图像采集系统 471
15.1 系统框架设计思路分析 472
15.1.1 系统框架分析 472
15.1.2 算法的实现流程 473
15.2 OV7725摄像头介绍与视频采集实现 476
15.2.1 CMOS摄像头的简介 476
15.2.2 OV7725的特性介绍及驱动电路设计 478
15.2.3 OV7725 SCCB接口及寄存器介绍 483
15.2.4 OV7725感光阵列与视频时序分析 492
15.2.5 OV7725寄存器I2C初始化设计 495
15.2.6 OV7725的视频采集模块设计 510
15.3 OV7725视频图像显示的实现 527
15.4 本章小结 537
第16章 TimeQuest的分析与实践 539
16.1 写在前面的话 539
16.2 保持裕量和建立裕量的深刻理解 539
16.3 时钟约束——内对内模型 542
16.3.1 内对内模型公式分析 542
16.3.2 约束时钟及PLL 543
16.4 output引脚约束——内对外模型 553
16.4.1 内对外模型公式分析 553
16.4.2 output引脚约束 554
16.5 input引脚约束——外对内模型 556
16.6 阶段性小总结 557
16.7 约束异常 557
16.7.1 Set Multicycle Path 557
16.7.2 Set False Path 562
16.8 决战SDRAM时序约束 562
16.9 Altium Designer查看走线报表 573
第17章 基于FPGA的系统设计 575
17.1 FPGA芯片选型 575
17.2 FPGA的与众不同——PCB布局在设计原理图之前 582
17.3 存储器的选型 583
17.4 FPGA外围器件的选择与设计 584
17.4.1 电阻 585
17.4.2 电容 585
17.4.3 磁珠 588
17.4.4 保险丝 590
17.5 基于核心板的系统设计 592
17.6 基于低功耗系统的电源选型 593
17.7 高速系统的PCB设计要点 598
17.7.1 结构布局 598
17.7.2 电路板的多层设计 598
17.7.3 过孔设计要点 599
17.7.4 防止串扰的布线原则 600
17.7.5 差分线布线原则 600
17.7.6 开关电源PCB设计要点 601
17.8 本章小结 602
第18章 基于高速相机的嵌入式视觉处理系统设计 603
18.1 视觉处理系统概述 603
18.2 嵌入式视觉处理系统结构设计 604
18.3 芯片选型 606
18.4 基于Camera Link工业相机接口的硬件设计 608
18.5 基于Camera Link接口的 FPGA程序设计要点 612
18.6 基于VGA接口的图像的实时缩小与算法结构 613
18.7 FPGA与DSP的协同工作模式 616
18.8 乒乓操作的进阶——零延时数据传输 616
18.9 系统调试 617
18.10 本章小结 618
缩略语对照表 619
符号对照表 625