目前主流FPGA都采用了SRAM工艺的查找表(LUT)结构,LUT本质上就是一个RAM。FPAG内部组成部分主要有:可编程输入/输出块(IOB)、可配置逻辑块(CLB)、嵌入式块RAM(BRAM)、丰富的布线资源、底层内嵌功能资源、内嵌专用硬核资源等。
(1)、可编程输入/输出块:为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。
(2)、可配置逻辑块:由查找表和可编程寄存器组成,查找表完成纯组合逻辑功能,内部寄存器可配置成触发器或锁存器。
(3)、嵌入式块RAM:可以配置成单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。
(4)、丰富的布线资源:布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。主要分为四类:全局布线资源、长线资源、短线资源、分布式布线资源。
(5)、底层内嵌的功能单元:主要包括DLL、PLL、DSP、CPU等,现在越来越丰富的内嵌的功能单元,使得FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。
(6)、内嵌专用硬核资源:内嵌的专用硬核是相对底层软核而言的,指FPGA处理能力强大的硬核,等效于ASIC电路。主要有乘法器、串并收发器、PCI-E、以太网控制器等。
FPGA内部LUT实现组合逻辑的原理:
LUT相当于存放逻辑表达式对应真值表的RAM。软件将逻辑表达式所有可能结果列出后存放在RAM中,输入作为RAM地址,输出为逻辑运算结果。如使用LUT模拟二输入“与”逻辑:
列出真值表: 00 -- 0,
01 -- 0,
10 -- 0,
11 -- 1。
此时将00 01 10 11作为地址线,依次将结果0 0 0 1存放在RAM中。当输入00时及输出0&0=0.
个人理解:LUT是FPGA能“高速运算”的本质原因。因为它其实不是在运算,它是先把所有题目的答案都列成一个表存起来。等你出题的时候,它直接根据你的题目,直接找到答案给你。它根本没有算,它是准备好了非常非常多的“小抄”,看到题目直接写结果。
https://www.bilibili.com/read/cv6840781?spm_id_from=33.999.list.card_article.click