FPGA发展历程
1 可编程逻辑器件的起源与发展
FPGA(现场可编程门阵列)是可编程逻辑器件(PLD)家族的重要成员。在FPGA出现之前,PLD经历了多个发展阶段,主要包括PLA、PAL、GAL和CPLD等器件。
1.1 可编程逻辑阵列(PLA)
PLA(Programmable Logic Array)于20世纪70年代后期问世,是最早的可编程逻辑器件之一。其原理架构如下图所示:

- 结构特点:由可编程的“与”阵列和可编程的“或”阵列组成。可见PLA实现的是一个SOP表达式的功能,其中“打叉”的部分表示待编程位置。
- 优点:灵活性高,能够实现复杂的组合逻辑电路。
- 缺点:由于结构复杂,编程复杂度较高,运行速度相对较慢,功耗较高,且成本较高,主要用于小规模逻辑电路的设计。
1.2 可编程阵列逻辑(PAL)
PAL(Programmable Array Logic)在PLA的基础上进行了改进,旨在提高运行速度和降低成本。其原理架构如下图所示:

- 结构特点:采用可编程的“与”阵列和固定的“或”阵列。这种结构简化了编程过程,提高了运行速度。
- 优点:简化了结构,提高了速度,降低了功耗和成本。
- 缺点:由于采用熔丝工艺,PAL通常只能编程一次,且输出结构固定,缺乏灵活性,适用于中小规模的可编程电路设计。
1.3 通用阵列逻辑(GAL)
GAL(Generic Array Logic)在PAL的基础上进一步发展,主要改进在于引入了可重复编程的特性。以一个八输入八输出的GAL器件为例,其原理架构如下图所示:

- 结构特点:采用电可擦除的CMOS工艺(E²CMOS),允许器件多次编程。此外,增加了可编程的输出逻辑宏单元(OLMC),使输出可以设置为不同的工作状态(如组合逻辑输出、寄存器输出等),增强了器件的通用性。
- 优点:可重复编程,增强了器件的可重配置性和灵活性。
- 应用:在中小规模可编程电路设计中得到广泛应用。
OLMC结构如下图所示:

通过对OLMC配置,可以得到不同类型的输出电路结构。 OLMC的工作模式参考下表:
| 工作模式 | 输出极性 | 条件 |
|---|---|---|
| 专用输入 | \ | 1和11脚为数据输入,三态门禁止 |
| 专用组合输出 | 低电平有效 高电平有效 | 1和11脚为数据输入,三态门选通 |
| 反馈组合输出 | 低电平有效 高电平有效 | 1和11脚为数据输入,三态门选通信号是第一乘积项,反馈信号取自IO端 |
| 时序电路组合输出 | 低电平有效 高电平有效 | 1脚接GCLK,11脚接OE取反,至少又另外一个OLMC为寄存器输出模式 |
| 寄存器输出 | 低电平有效 高电平有效 | 1脚接GCLK,11脚接OE取反 |
1.4 复杂可编程逻辑器件(CPLD)
随着对更高集成度和复杂度的需求,CPLD(Complex Programmable Logic Device)应运而生。其原理架构如下图所示:

- 结构特点:将多个小规模的MC(如PAL、GAL)作为基本逻辑块(通常称为宏单元),通过可编程互连矩阵连接,形成中大规模的可编程逻辑器件。每个宏单元包含逻辑门、触发器和可编程互连。外围的IOB是专门的输入输出接口模块,功能类似于GAL的OLMC。
- 优点:逻辑部分和开关部分的延时较固定且可预测,设计相对容易,非易失性,上电即可工作。
- 应用:适用于实现中等规模的控制逻辑、接口电路和简单的组合逻辑。
2 现场可编程门阵列(FPGA)的诞生与发展
FPGA(Field-Programmable Gate Array)于1985年由赛灵思(Xilinx)公司推出第一款产品——XC2064,标志着可编程逻辑器件进入新的发展阶段。其原理架构如下图所示:

2.1 FPGA的结构特点
- 内部结构:与CPLD类似,最外层的仍然是功能强大的IOB模块,不过与CPLD相比,它们的内部结构大有不同。FPGA中的基本逻辑单元为CLB模块,一个CLB模块中一般包含了若干个基本的查找表、寄存器和多路选择器资源,因此,FPGA中的逻辑表达不是基于SOP表达式的,而是基于LUT的,这是FPGA与前面这些可编程器件最大的区别。一个FPGA芯片中往往有成千上万个CLB,而这些CLB是均匀散列在FPGA芯片内部的,这点与CPLD也不一样。在这些CLB组成的行与列之间,如原理架构图所示,穿插着丰富的连线资源,供CLB之间通信使用。
- 编程技术:通常基于SRAM(静态随机存取存储器)技术,因此配置信息在每次上电时需要从外部存储器(如闪存)加载,实现现场更新和重新配置。
- 灵活性与并行性:提供高度的灵活性和可配置性,特别擅长实现复杂的时序逻辑、并行处理和大规模算法。
为了能够在CLB之间建立灵活可配置的连接关系,光有硬件连线不行,还需要用到两个非常重要的资源一连线盒(CB)和开关盒(SB)。其中CB的作用是将CLB的输入输出接通到连线资源中,而SB的作用是对水平和竖直连线资源进行切换。关于开关盒,有三种基本结构,如下图所示:

2.2 FPGA与CPLD的区别
尽管FPGA和CPLD都属于高密度可编程逻辑器件,但它们在结构、编程方式、性能和应用场景等方面存在显著区别:
-
内部结构:
- CPLD:采用“与-或”阵列结构(Product-Term based),由多个宏单元通过可编程互连矩阵连接。宏单元的逻辑延时相对固定且可预测。
- FPGA:采用查找表(LUT)结构(Look-Up Table based),由大量的逻辑单元、输入/输出块和可编程互连资源组成。逻辑单元通常包含LUT和触发器。
-
编程和配置:
- CPLD:通常基于EEPROM或Flash技术,是非易失性的,编程后配置信息永久保存,上电即可工作。
- FPGA:通常基于SRAM技术,是易失性的,每次上电需要从外部存储器(如闪存)加载配置数据。这使得FPGA在现场更新和重新配置方面更具优势。
-
集成度和资源类型:
- CPLD:集成度相对较低,逻辑资源(主要是组合逻辑)丰富,触发器资源相对较少,适用于实现控制逻辑、地址译码等中小型设计。
- FPGA:集成度高,拥有丰富的逻辑资源(包括LUT和触发器)、内存块(Block RAM)、DSP块等,适用于实现复杂的算法和高性能计算。
-
速度和功耗:
- CPLD:由于互连结构相对简单,信号延时可预测性高,适用于对时序要求严格且延时固定的设计。功耗相对较低。
- FPGA:由于互连资源丰富,布线路径选择多,信号延时相对不确定。但整体上可以实现更高频率的操作。由于其复杂的结构和大量可编程互连,功耗通常较高,尤其是在大规模设计中,需要进行功耗管理。
-
应用场景:
- CPLD:适用于简单的控制逻辑、胶合逻辑、地址译码、小规模状态机等对速度和功耗有一定要求但逻辑复杂度不高的应用。
- FPGA:广泛应用于需要高速处理和复杂逻辑的领域,如数字信号处理、通信系统、人工智能加速、数据中心、嵌入式系统和原型验证等。
2.3 FPGA的未来发展
2.3.1 AI时代的复兴(2010年代至今)
随着人工智能和深度学习的兴起,FPGA凭借其高度的并行处理能力和可重构性,在AI加速器领域焕发新生。FPGA被广泛应用于数据中心、云计算和边缘计算等场景,提供高效的计算加速解决方案。
2.3.2 行业整合与新变局(2020年代)
近年来,FPGA行业经历了显著的整合。例如,2022年AMD收购赛灵思,进一步加强了其在FPGA领域的布局。同时,中国FPGA企业也在崛起,积极参与全球市场竞争,共同推动FPGA技术的持续创新和发展。
综上所述,FPGA自其前身PLD器件发展而来,凭借其灵活性、可编程性、高性能和可重构性,在数字电路设计和多种高科技领域中发挥着越来越重要的作用。理解其与CPLD等器件的区别,有助于根据具体需求选择最适合的解决方案。