FPGA 简介
什么是 FPGA
FPGA 的全称为 Field-Programmable Gate Array,即 现场可编程门阵列。FPGA 是在 PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物,作为专用集成电路(ASIC)领域中的一种半定制电路出现。它既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。简单来说,FPGA 就是一个可以通过编程来改变内部结构的芯片。
FPGA 功能实现:FPGA 的功能需要通过编程来实现,通常使用硬件描述语言(HDL)编写逻辑代码,经过 EDA 工具(电子设计自动化工具)编译、综合、布局布线后,生成可烧录的文件,最后将该文件加载到 FPGA 器件中,从而改变 FPGA 内部的连接,实现所需的功能。
FPGA 性能对比:与 单片机 和 CPU 等集成电路芯片相比,FPGA 拥有更高的效率和更低的功耗,但其开发难度和易用性远低于单片机和 CPU。虽然 FPGA 在数字芯片设计中相较 ASIC(专用集成电路)具有更短的开发周期,但其成本较高、性能相对较差,且资源利用率不如 ASIC。因此,FPGA 不能完全替代 ASIC。
FPGA 的基本结构
FPGA 的可编程特性决定了它的数字逻辑实现结构不能像专用的 ASIC 那样通过固定的逻辑门电路来完成,而是采用可以重复配置的结构来实现。当前主流的 FPGA 芯片大多基于 SRAM 工艺的查找表结构(LUT)。
FPGA 芯片参数:包括可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目以及存储器资源(如嵌入式 RAM)的大小。
在 FPGA 的最底层可配置逻辑模块(如片上的逻辑单元)中,主要包含两种基本部件:触发器 和 查找表(LUT)。查找表用于实现数字逻辑功能,通过查找预先存储在 RAM 中的真值表来进行运算。LUT 本质上是一个 RAM,例如 4 输入的 LUT 可以看成一个有 4 位地址线的 RAM。
更为复杂的 FPGA 架构
随着技术的发展,FPGA 的容量和性能不断提升,同时功耗也在不断优化。在高端器件中,可能会使用 六输入、八输入 或更多输入端口的查找表。多输入的查找表可以分解成多个较小输入的查找表,从而提高资源的利用效率。
FPGA 内部通过软内核与硬内核的结合来实现不同功能。软内核是通过编程来实现的灵活功能,而硬内核则是通过硬件实现的固定功能,具有较高的资源利用率、低功耗和更小的占用面积。
带嵌入式处理器的 FPGA
现代 FPGA 还能够通过可编程构造来实现嵌入式处理器内核。例如,一些 FPGA 可以完全以硬内核方式实现双路 ARM Cortex-A9 微控制器子系统,运行时钟高达 1GHz,内建浮点引擎、片上缓存、计数器和定时器等功能,并具有广泛的硬内核接口,如 SPI、I2C 和 CAN 等。
这种嵌入式处理器的实现使得 FPGA 具备了强大的计算能力,并能够支持高效的系统级应用。
数据存储以及配置方式
FPGA 内部拥有存储单元,如片内 RAM 块,用于存储数据并设置工作状态。为了使 FPGA 工作,必须将数据烧录到 FPGA 内部的 RAM。根据不同的配置模式,FPGA 可以通过多种方式进行编程:
并行模式:通过并行 PROM 或 Flash 配置 FPGA。
主从模式:使用一片 PROM 配置多个 FPGA。
串行模式:通过串行 PROM 配置 FPGA。
外设模式:将 FPGA 作为微处理器的外设,由微处理器对其编程。
主流 FPGA 通常基于 SRAM 工艺,并采用 串行配置模式。由于 SRAM 掉电后会丢失数据,因此通常会连接外部存储器(如 SDRAM 或 DDR3)来保存程序。每次上电时,FPGA 会从外部存储器中读取数据进行配置。