FPGA基本原理
学习《小梅哥FPGA时序分析和约束实例演练课程》做的笔记
1.1 FPGA基本结构
1.1.1 现场可编程
通过JTAG、AS、PS等方式,可以现场对器件进行编程,以实现各种不同的定制功能。
1.1.2 门
只要能实现基本逻辑关系的电路称为门。最基本的逻辑关系是与、或、非,最基本的逻辑门是与门、或门和非门
1.1.3 门阵列
将实现基本逻辑关系的电路按照阵列的形式排布,就形成了门阵列。
1.2 FPGA组成的三要素
- 可编程逻辑功能块
- 片内互联线(Programmable Interconnect)
- 输入输出块(I/O)
1.2.1 可编程逻辑功能块
- 可编程逻辑功能块是实现用户功能的基本单元,多个逻辑功能块通常规则地排列成一个阵列结构,分布于整个芯片
- 一个可编程逻辑功能块基本组成包括
- 查找表
- D触发器
- 进位链
- …
1.2.2 可编程输入输出块
可编程输入输出块完成芯片内部逻辑与外部管教之间的接口,围绕在逻辑单元阵列四周,可编程输入输出块的功能和性能从一定程度上也决定了该器件的市场定位。
一个可编程输入输出基本单元包括:
- 输出寄存器
- 输入寄存器
- 输出使能寄存器
- 输入延迟链
- 输出延迟链
- 上拉电阻
- …
1.2.3 可编程的内部互联资源
可编程内部互联资源包括各种长度的连线线段和一些可编程连接开关,他们将各个可编程逻辑块或输入/输出块连接起来,构成了特定功能的电路。用户可以通过编程决定每个单元的功能以及他们的互联关系,从而实现所需的逻辑功能。
1.3 FPGA可编程原理
-
与PLD的主要区别:编程原理
- PLD:修改具有固定内联电路的逻辑功能来进行编程
- FPGA:修改一或多跟内连线的布线,更适合实现多级的逻辑功能
-
按编程方式或逻辑功能的类型主要有三种:
- SRAM-查找表类型(Intel Xilinx)
- 反熔丝的多路开关类型FPGA器件(Actel)
- 基于Flash的FPGA(Lattice)
1.3.1 基于查找表的结构模块
什么是查找表?
- 一个N输入查找表(LUT,Look Up Table)可以实现N个输入变量的任何逻辑功能,如N输入“与”、N输入“异或”等
- 输入多于N个的函数、方程必须分开用几个查找表(LUT)实现
假设图2中输入为0:选择上方通道,为1选择下方通道。由查找表可以实现多种逻辑。以a&b&c&d为例 ,只有当a=b=c=d=1时,输出结果才是1,否则为0,则对应图中RAM前15个值都为0,最后一个为1。
1.4 可编程IO功能
- I/O模块配有缓冲器和寄存器,可实现电平匹配、提高驱动能力、延时等功能。
- 可实现单端I/O和差分I/O,差分I/O有 LDVS和LVPECL两种协议,他们的电平和外部终端电路不一样
- I/O电平驱动防过冲解决该方案:分压电阻和齐纳二极管。
- 能兼容TTL和CMOS多种接口和电压标准
- 可配置为输入、输出、双向、三态、双速率等形式
- 能提供适当的驱动电流
- 降低功耗,防止过冲和减少电源噪声
- 支持多种接口电压(降低功耗)
1.5 FPGA可选扩展资源
除了上述构成FFPGA基本结构的三种资源以外,随着工艺的进步和应用系统需求的发展,一般在FPGA中还可能包含一下可选资源:
- 存储器资源(块RAM、分布式RAM);
- 数字时钟管理单元(分频/倍频、数字延迟、时钟锁定);
- 算数运算单元(高速硬件乘法器、乘加器);
- 高速串行I/O接口
- 特殊功能模块(PCIE、DDR等硬IP核)
- 微处理器(Cortex-M3、Cortex-A9、Cortex-A53、PowerPC)
-
图8 典型FPGA结构