导图社区 FPGA学习-《FPGA设计技巧与案例开发》
这是一篇关于FPGA学习-《FPGA设计技巧与案例开发》的思维导图,主要内容包括:书本框架,总结,帮助读者掌握FPGA的基本知识和应用技巧,提高设计能力和实践水平。
编辑于2025-02-24 14:19:44FPGA学习-《FPGA设计技巧与案例开发》
书本框架
第一部分 FPGA基础理论
第1章 浅谈FPGA技术、优势、学习途径
1.1 FPGA的诞生、发展与未来
1.1.1 FPGA的诞生
1.1.2 FPGA的发展与未来
1.1.3 博弈,在入门之前
1.2 Altera FPGA介绍及其发展、应用
1.2.1 Altera公司介绍
1.2.2 Altera公司产品介绍
1.2.3 Altera FPGA的开发平台
1.2.4 Altera FPGA的动态与应用
1.2.5 Altera FPGA的应用
完成不同接口的数据格式转换,同时实现传输速度的匹配
进行不同电平之间的转换
引脚扩展功能
无可比拟的并行处理优势
1.2.6 对比ARM与DSP,认清FPGA
1.3 善用网络资源,不断总结自我
第2章 MAX II CPLD/Cyclone IV FPGA PCB硬件设计
2.1 浅谈PCB Layout
2.2 MAX II CPLD核心电路设计
2.2.1 MAX II CPLD背景及简介
CPLD(Complex Programmable Logic Device, 复杂可编程逻辑器件)
2.2.2 EPM240T100C5N设计需求研究分析
2.2.3 EPM240T100C5N核心板原理图设计
2.2.4 EPM240T100C5N核心板布局布线
2.3 Cyclone IV FPGA核心电路设计
2.3.1 Cyclone IV FPGA简介
2.3.2 EP4CE15F12C8N设计需求研究分析
2.3.3 Cyclone IV FPGA核心原理图设计
2.3.4 FPGA核心板Layout注意事项
2.4 FPGA/CPLD电路焊接、调试经验总结
2.5 本书配套FPGA开发平台硬件介绍
2.5.1 VIP_Board硬件资源介绍
2.5.2 VIP_Board相关外设实物介绍
第3章QuartusII软件安装与VerilogHDL简介
3.1 Quartus II软件安装
3.1.1 写在前面的话
3.1.2 Quartus II 18.0软件下载
3.1.3 Quartus II 18.0软件安装
3.1.4 USB Blaster下载器驱动程序的安装
3.2 Verilog HDL设计
3.2.1 Verilog HDL与VHDL的对比
硬件电路综合能力
Verily HDL偏重硬件,底层综合做的好
VHDL风格严谨、逻辑综合能力强
3.2.2 Verilog HDL的发展
具备的描述能力
设计行为特征
设计的数据流特征
设计的结构组成
响应监控和设计验证方面的延时和波形产生机制
特征
3.2.3 Verilog HDL的应用
Verilog HDL文件头编写规范
Module列表编写规范
always模块编写规范
Module的例化编写规范
规范
3.3 Testbench文件架构
3.3.1 Testbench的介绍
做仿真测试
基本流程
3.3.2 Testbench代码设计风格
3.4 Quartus II“工程目录”定义约定
dev
工程设置、脚本等
core
IP核保存区
src
用户代码保存区
sim
Testbench仿真测试文件
doc
设计参考及版本、档案
第二部分 FPGA初级入门
第4章 4位计数器的设计与仿真验证
4.1 写在前面的话
4.2 FPGA/CPLD开发流程
6大步骤
设计框架
通过Verilog HDL或原理图、IP核等方式设计电路
利用Quartus进行电路综合
综合:将电路的高级语言转化为低级的,可以FPGA\CPLD或构成ASIC的门阵列基本结构相映射的网表文件或程序。 综合包括编译,转换,调度,分配,控制器综合和结果的生成等几个步骤
利用Quartus进行逻辑电路的布局布线
使用第三方软件进行仿真、逻辑验证
固化FPGA/CPLD
4.3 基于Quartus II 18.0的4位计数器设计流程
4.3.1 Quartus II工程的创建
4.3.2 4位计数器的逻辑电路设计
4.3.3 Quartus II编译流程与工程设置分析
4.4 基于Modelsim-Intel 10.5b的4位计数器仿真验证流程
4.4.1 关于FPGA设计的各种仿真概念分析
4.4.2 Modelsim版本的简要介绍
4.4.3 Modelsim工程的创建
4.4.4 Testbench激励文件的编写
4.4.5 Modelsim波形的仿真与分析
4.5 设计思路的验证与总结
第5章 LED驱动电路设计
5.1 LED驱动电路设计方案1—入门
5.1.1 LED驱动电路设计方案
5.1.2 8位LED的自加显示实验
5.2 LED驱动电路设计方案2—升级
5.2.1 LED驱动电路设计方案
5.2.2 74HC595驱动分析与实现
5.3 8位LED跑马灯显示实验
5.4 LED特效呼吸灯的设计
5.4.1 PWM协议的基本介绍
5.4.2 LED呼吸灯的设计
第6章 独立按键与矩阵键盘的FPGA驱动电路实现
6.1 按键及其工作模式介绍
6.1.1 按键抖动原理分析
6.1.2 硬件消抖动
6.1.3 软件消抖动
6.2 独立按键的FPGA驱动电路设计
6.2.1 独立按键电路设计
6.2.2 FSM状态机的Verilog HDL介绍
6.2.3 FPGA按键驱动电路设计方案1
6.2.4 FPGA按键驱动电路设计方案2
6.3 矩阵键盘的FPGA驱动电路设计
6.3.1 工作原理及电路设计
6.3.2 FPGA矩阵键盘驱动电路设计
第7章 “Hello World”的LCD1602显示驱动电路实现
7.1 LCD1602介绍及硬件设计
7.1.1 LCD1602字符液晶介绍
7.1.2 LCD1602硬件电路设计
7.1.3 LCD1602的时序及初始化分析
7.2 LCD1602的FPGA驱动电路实现
7.2.1 LCD1602的C语言实现方案
7.2.2 LCD1602的Verilog HDL实现方案
第8章 优化设计FPGA全局时钟管理模块
8.1 异步复位,同步释放机制
8.1.1 组合电路中的竞争—冒险
8.1.2 时序电路中的竞争—冒险
8.2 无PLL的全局时钟管理模块设计
8.3 Quartus II IP核介绍及PLL的定制
8.3.1 Quartus II IP核的介绍
8.3.2 PLL IP核的定制与分析
8.4 带PLL的全局时钟管理模块设计
第9章 基于FPGA与MCU通信的SPI总线协议设计
9.1 SPI总线协议介绍及硬件的设计
9.1.1 SPI总线协议介绍
9.1.2 STM8的硬件电路设计
9.1.3 SPI总线协议时序分析
9.2 SPI总线协议的通信实现
9.2.1 STM8的SPI总线收发设计
9.2.2 边沿检测电路的FPGA实现
9.2.3 SPI通信的数据接收模块设计
9.2.4 SPI通信的数据发送模块设计
第10章 基于FPGA与PC通信的UART串口设计
10.1 追根溯源解析串口通信
10.1.1 串口通信简介
10.1.2 串口波特率
10.1.3 串口协议分析
10.2 串口电路的设计
10.2.1 TTL转RS-232电路的设计
10.2.2 USB转UART电路的设计
10.2.3 UART电路的调试
10.3 细说真正的任意分频
10.3.1 分频电路的重要性
10.3.2 任意频率发生器的原理
10.3.3 任意频率发生器的验证
10.4 串口通信的硬件实现
10.4.1 uart_receiver接收模块的设计
10.4.2 uart_transfer发送模块的设计
10.4.3 PC2FPGA UART联调测试
第11章 基于FPGA的VGA驱动显示设计
11.1 VGA接口、时序及驱动电路设计
11.1.1 VGA接口介绍
11.1.2 VGA时序分析
11.1.3 RGB三原色模型
11.1.4 VGA驱动电路设计
11.2 VGA驱动的FPGA实现
11.2.1 VGA驱动时序电路的设计
11.2.2 任意分辨率的VGA显示控制器设计
11.3 “Hello World”的VGA显示驱动实现
11.3.1 “Hello World”字模的提取
11.3.2 C2Mif软件的介绍与Mif文件的生成
11.3.3 VGA字符显示的FPGA实现
11.4 彩色图像的VGA显示驱动电路
11.4.1 彩色图像显示的理论分析
11.4.2 彩色图像的数据提取
11.4.3 VGA彩色图像显示的FPGA实现
第三部分 FPGA高级进阶
第12章 基于SDRAM的VGA显示控制器的设计与实现
12.1 跨时钟域数据交互
12.2 SDRAM的介绍及其控制器的移植与优化
12.2.1 SDRAM的特性及时序驱动介绍
12.2.2 SDRAM的硬件驱动电路设计
12.2.3 SDRAM控制器的移植与优化
12.2.4 Sdram_Control_2Port的封装与协议制定
12.3 基于SDRAM的VGA显示控制器的实现
第13章 基于OV7725的摄像头视频图像采集系统
13.1 系统框架设计思路分析
13.1.1 系统框架分析
13.1.2 算法的实现流程
13.2 OV7725摄像头介绍与视频采集实现
13.2.1 CMOS摄像头的简介
13.2.2 OV7725的特性介绍及驱动电路设计
13.2.3 OV7725 SCCB接口及寄存器介绍
13.2.4 OV7725感光阵列与视频时序分析
13.2.5 OV7725寄存器I2C初始化设计
13.2.6 OV7725的视频采集模块设计
13.3 OV7725视频图像显示的实现
13.4 本章小结
第14章TimeQuest时序分析与实战演练
14.1 写在前面的话
14.2 保持裕量和建立裕量的深刻理解
14.3 时钟约束—内对内模型
14.3.1 内对内模型公式分析
14.3.2 约束时钟及PLL
14.4 output引脚约束—内对外模型
14.4.1 内对外模型公式分析
14.4.2 output引脚约束
14.5 input引脚约束—外对内模型
14.6 阶段性小总结
14.7 约束异常
14.7.1 Set Multicycle Path
14.7.2 Set False Path
14.8 决战SDRAM时序约束
14.9 Altium Designer查看走线报表
第四部分 FPGA终极修炼
第15章 基于FPGA的硬件系统设计
15.1 FPGA芯片选型
15.2 FPGA的与众不同—PCB布局在设计原理图之前
15.3 存储器的选型
15.4 FPGA外围器件的选择与设计
15.4.1 电阻
15.4.2 电容
15.4.3 磁珠
15.4.4 熔丝
15.5 基于核心板的系统设计
15.6 基于低功耗系统的电源选型
15.7 高速系统的PCB设计要点
15.7.1 结构布局
15.7.2 电路板的多层设计
15.7.3 过孔设计要点
15.7.4 防止串扰的布线原则
15.7.5 差分线布线原则
15.7.6 开关电源PCB设计要点
15.8 本章小结
第16章FPGA与深度学习加速器
16.1 引言
16.2 AI兴起的背景与三要素
16.3 深度学习背后的技术—AI计算平台发展现状
16.3.1 算力需求的来源—深度学习中的训练与推断
16.3.2 深度学习中的计算平台
16.3.3 深度学习与FPGA
16.4 深度学习的FPGA设计导向
两个核心点
算力
带宽
即为每个乘法器实时运行中,读取数据的供给速度和输出数据的写入速度之和
寻求算力和带宽的平衡。当算力增长并超过带宽吞吐能力时,使用各种优化方法提升每次读取数据的重复使用次数,降低对带宽的依赖。
16.5 基于FPGA的深度学习加速器的优化要点
16.5.1 流式处理与构架优化对数据复用率的提升
16.5.2 CNN中的数据复用
16.5.3 片上存储
16.5.4 位宽压缩
16.5.5 基于稀疏的模型压缩与计算架构
16.6 CNN的FPGA加速器设计
16.6.1 CNN中的基本算子
16.6.2 CNN加速器中的卷积计算
16.6.3 CNN加速器中的存储器优化
16.6.4 CNN加速器中的非卷积运算单元
16.6.5 CNN加速器的数据依赖与任务并行
16.6.6 CNN加速器的设计——实例1
16.6.7 CNN加速器的设计——实例2
16.7 CNN设计思路的讨论
总结
c1-l1
时钟、时钟是难点
各种协议模块的驱动
计算机“学习”的就是遵循自然发展
神经网络——主要处理哪一块,怎么处理,本质跟图像处理处理一样
关键是算法