**记录学习,记录成长
介绍FPGA的基本结构并说明FPGA如何实现可编程功能。
为什么要了解FPGA基本结构呢?
了解这些后,在进行FPGA设计时,可以大概知道电路在FPGA上是如何实现的。在进行时序约束或者提高时钟频率时,知其然更知其所以然。
目录
1.FPGA介绍
FPGA:field programmable gate array 【现场可编程门阵列】
现场可编程:指的是编程可直接在现场进行,意味着FPGA的即时可得性。
门阵列:FPGA可编程功能主要是对逻辑门操作实现的,这些逻辑门在FPGA器件中进行排列组成门阵列。
按编程方式和逻辑功能可分下面三种类型:
①SRAM-查找表类型(Intel Xilinx)
②反熔丝的多路开关类型FPGA器件(ACtel)
③基于Flash的FPGA(Lattice)
2.FPGA组成三要素
FPGA基本组成三要素:
①可编程逻辑块(CLBs,configurable logic blocks) ②片内互联线(programmable interconnect)③ 输入输出块(IOBs,I/O blocks)
FPGA可编程功能的实现主要由上面三种结构实现的。
2.1 CLBs可编程逻辑块
可编程逻辑块(CLB),也称作逻辑单元(LE),是可编程逻辑实现的主体。
主要有下面三部分组成:①查找表(LUT,look up table)②D触发器(DFF) ③进位链(carry chain)。
LUT用来实现组合逻辑功能,D触发器寄存数据,进位链用来实现加法
Cyclone IV E 上的可编程逻辑功能块
LUT:用来实现组合逻辑功能。
LUT本质上是一个RAM。根据配置将相应数值写入RAM,输入信号作为地址信号。
当输入数据超过一个LUT的接口数量时,就需要多个LUT进行级联。
DFF:对数据进行寄存。
D触发器中的数据是LUT的输出值,也就是对LUT的值打了一拍。
逻辑单元可以选择是直接输出LUT的输出值,还是D触发器中的值。使用D触发器可以减少组合路径长度,有利于时序收敛。
进位链:完成加法/减法逻辑,与其他CLBs通信。
https://zhuanlan.zhihu.com/p/92385125
2.2 可编程输入输出块【I/OBs】
I/OBs是FPGA内部逻辑与外部管脚之间的接口,实现与外部器件的通信。
基本单元包括:
①输入/输出寄存器
②输入/输出延迟链
③输出使能寄存器 【用来编程接口完成输入或者功能】
④上拉电阻等..
可实现功能:
①I/O模块配有缓冲器和寄存器,可实现电平匹配,提高驱动能力,延时等功能。
②可实现单端I/O和差分I/O。
③I/O电平驱动防过冲解决:分压电阻和齐纳二极管。
Cyclone IV E 可编程输入输出块
2.3 片内互联线
将CLBs和I/O口连接起来,实现特定的电路功能。
Altera FPGA采用行、列、局部快速通道。
信号的传输需要时间以及不同通道传输时间不同,通过约束将相近逻辑尽量靠近,可提高时序收敛性能。
3.FPGA其他可选资源
①存储器资源(块RAM,分布式RAM)
②数字时钟管理单元(分频/倍频、数字延迟、时钟锁定)
③算数运算单元(高速硬件乘法器,乘加器)
④高速串行I/O接口
⑤特殊功能模块(PCIE、DDR等硬IP核)
⑥微处理器(COrtex,PowerPC)
参考资料:
https://www.cnblogs.com/Dinging006/p/9512506.html
https://zhuanlan.zhihu.com/p/92385125