FPGA

一种可编程的集成电路芯片

FPGA是“现场可编程逻辑门阵列(Field-Programmable Gate Array)”的缩写。它是一种 PLD ,用户可通过改变配置信息对其功能进行定义,以满足设计需求 。与ASIC(Application-Specific Integrated Circuit)相比,FPGA具有更高的灵活性和可重构性,因此在需要快速开发、验证和修改 数字电路 的应用中得到了广泛应用 。

简介

FPGA是可编程逻辑门阵列(Field-Programmable Gate Array)的缩写,是一个含有可编辑元件的半导体设备,可供使用者现在程序化的逻辑门阵列元件 。FPGA可以通过编程来实现各种数字电路,包括微处理器、 DSP芯片 、数字信号编 解码器 等 。FPGA最初是作为ASIC领域中的一种半定制电路而出现的。与定制电路相比,ASIC可以实现更高的性能和更低的功耗,但需要进行 物理设计 和制造,并且成本较高,生产周期较长 。而FPGA既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它可以通过编程实现不同的电路功能,具有更高的灵活性和可重构性,同时还可以在较短的时间内进行开发和生产 。因此,FPGA在数字电路设计和 嵌入式系统开发 中得到了广泛应用 。FPGA还可以用于 高性能计算 、 图像处理 、通信网络处理 等领域。

发展历史

FPGA的发展历史可以追溯到20世纪80年代初,FPGA的发展主要分为四个阶段,分别为发明阶段、扩展阶段、积累阶段和系统阶段。(1)发明阶段(1984-1992):1985年, 赛灵思 公司( Xilinx )推出的首款FPGA器件XC2064,其仅包含64个逻辑模块,每个模块含有两个3输入查找表和一个 寄存器 。虽然容量很小,但是该器件的 晶片 尺寸非常大,比当时的微处理器还要大,而且采用的工艺技术也勉强能制造出这种器件。该器件只有64个 触发器 ,但由于晶片太大,成本高达数百美元。此外,该器件的产量对大晶片来说是超线性的,因此晶片尺寸增加5%就会让成本翻一倍,同时也导致初期的赛灵思无产品可卖。(2)扩展阶段(1992-1999):FPGA 初创公司是无晶圆厂公司,无法获得领先的芯片技术。到上世纪 90 年代后期,IC代工厂生产 晶体管 和电线,使得基于 sram 的 FPGA 可以制造。每一代新工艺的出现使晶体管数量增加一倍,使每功能成本减半,并将最大 FPGA 尺寸增大一倍。CMP 技术使代工厂在 IC 上堆叠更多金属层,使 FPGA 厂商可以增加片上互联,以适应更大的 LUT 容量。(3)积累阶段(2000-2007):FPGA在新千年成为 数字电路 通用组件,容量和设计尺寸快速增加,并在 数据通信 领域占据市场。 降低成本 促使小型研发团队采用FPGA,而不是风险较高的定制芯片。FPGA 厂商通过生产低成本 FPGA 和开发针对重要功能的软逻辑库,来应对市场增长挑战。其中软逻辑功能包括存储器控制器、通信协议模块和软微处理器。设计特点在 2000 年代发生了改变,设计者需要考虑系统标准要求并处理通信标准,使 FPGA 在计算密集型应用中发挥重要作用。FPGA 已不仅是门阵列,而是集成可编程逻辑的复杂功能集,成为一个系统。(4)系统时代(2008-至今):FPGA 整合了系统模块和控制功能,Zynq All-Programmable 器件是很好的例子。同时,工具也在不断发展,系统 FPGA 需要高效的系统 编程语言 ,如 OpenCL 和 C 语言编程。

基本结构

FPGA的基本结构由可编程逻辑单元(Configurable Logic Block,CLB)、输入输出块(Input/Output Block,IOB)、块 随机访问存储器 模块(Block Random Access Memory ,BRAM)和时钟管理模块(Clock Management Module,CMM)等组成 。其中,CLB是FPGA中最基本的逻辑单元,由查找表(Look-Up Table, LUT )和 触发器 (Flip-Flop)组成,用于FPGA 中处理数据的有序流程,按照电路信号编码程序的规则对门电路进行优化编程 。IOB用于连接FPGA芯片和外部电路,负责了 FPGA 数据信 号收录、传输的作业要求 。BRAM专用 集成电路 是服务于各个行业控制的应用型电路,可以存储大量的数据并支持高速读写,针对数据端口传输的位置、存储结构、元件功能等要素,提供一个最稳定的逻辑存储方式 。CMM用于管理FPGA芯片内部的时钟信号,可以提高时钟频率和减少时钟抖动 。

工作原理

FPGA的最基本逻辑单元是可编程逻辑单元(Configurable Logic Block,CLB),它由查找表(Look-Up Table, LUT )和 触发器 (Flip-Flop)组成,可以实现任意的逻辑功能 。 LUT 可以实现与、或、非、异或等逻辑运算。触发器用于存储逻辑电路中的状态信息,如 寄存器 、 计数器 等。FPGA中的逻辑单元(如CLB)通过可编程的连线(Programmable Interconnect)连接起来,形成任意的 数字电路 。FPGA还具有可编程的输入输出块(IOB),用于连接FPGA芯片和外部电路,实现输入输出功能 。FPGA还具有时钟管理模块(Clock Management 模组 ,CMM),用于管理FPGA芯片内部的时钟信号,包括时钟分频、时钟延迟、时钟缓冲等功能,以提高时钟频率和减少时钟抖动 。FPGA的编程和配置是通过将设计好的硬件描述语言(Hardware Description Language,HDL)代码综合、 映射 到FPGA芯片中来实现的。设计者需要使用HDL语言如 Verilog 、 vhdl 等来描述逻辑电路,并将其综合、映射到FPGA芯片中 。在编程和配置过程中,需要进行时序分析、布局布线等操作,最终生成可加载到FPGA芯片中的 配置文件 。FPGA的编程和配置可以通过不同的方式实现,如JTAG接口、USB接口、SD卡等。FPGA还支持在线配置,即在FPGA芯片运行时,通过重新配置FPGA芯片中的逻辑单元和连线,实现不同的 数字电路 功能 。这种在线配置的方式可以大大提高FPGA芯片的灵活性和可重构性,适用于需要频繁修改和更新数字电路的应用 。

优缺点

优点

灵活性高

FPGA具有极高的灵活性,可以根据需要实现各种数字电路,包括逻辑电路、存储器、处理器等,相比于ASIC(应用特定 集成电路 ),FPGA不需要进行定制化设计和制造,可以节省时间和成本。 。

可重构性强

FPGA可以在运行时重新编程,可以通过更改FPGA芯片上的比特流文件实现不同的电路功能。此外,FPAG还具有可编程的连线和输入输出块,这些可编程元素可以根据需要进行重新配置,从而实现不同的逻辑。这种可重构性使得FPGA在应用中更加灵活,可以适应不同的应用场景 。

高性能

FPGA具有高性能的特点,可以实现高速数据处理和复杂算法运算。同时,其硬件结构可以同时处理多个任务,从而提高处理效率。相比于传统的软件实现,FPGA可以实现更高的并行度和更低的延迟 。

低功耗

FPGA可以实现较低的功耗,因为它只实现所需的逻辑电路,而不需要像通用处理器那样实现不必要的功能。在一些需要低功耗的应用场景中,FPGA可以比传统处理器更加节能 。

缺点

设计复杂度高

相对于传统的软件开发,FPGA的开发需要具备硬件设计和FPGA编程技能,这增加了开发难度和学习成本。此外,由于FPGA硬件是可重构的,设计人员需要对硬件资源的优化和利用有更深入的理解,在开发过程中需要考虑电路的时序、布线等问题,因此设计过程可能较为繁琐 。

可编程性差

一旦FPGA硬件电路被编程,它们就不能被更改。如果需要修改,只能重新设计电路并重新编程,这会增加维护的复杂度。相比于软件编程,FPGA 的编程难度较大,需要掌握硬件描述语言(HDL)等专业知识 。

资源有限

尽管FPGA可定制性高,但是相较于专门的处理器,它的资源是有限的。在一些需要大量计算和存储资源的应用中,FPGA的资源可能会不足,例如 LUT (查找表)和 寄存器 数量等,这可能会限制设计的复杂度和性能 。

设计语言

FPAG 的设计语言通常是硬件描述语言(Hardware Description Language,简称HDL),是一种用于描述 数字电路 行为和结构的语言 。常见的硬件描述语言包括 vhdl 和 Verilog 。VHDL和Verilog都是基于 事件驱动模型 的,可以描述电路的行为和结构,并且可以进行 仿真 、综合、布局和布线等操作,生成最终的FPGA 配置文件 。这些语言允许设计者描述 模拟电路 的行为和性能,从而生成可编程的电路模块。FPAG 的设计语言相对于传统的模拟电路设计语言而言更加灵活和可扩展,因为它们允许设计者在设计过程中对电路进行快速的原型开发和测试,并且可以进行在线的调整和优化 。除了 vhdl 和 Verilog 以外,其他硬件描述语言如 SystemVerilog 、 SystemC 等也在逐渐流行,而且近年来,一些开源的高层次综合工具也逐渐崛起,如Chisel 等,它们提供了一种更为灵活、高效的FPGA设计方式。

应用领域

通信领域

PGA广泛应用于通信领域,如数字信号处理 、协议转换 、解调 、编码 、解码 、信道 仿真 等。FPGA的灵活性和可重构性使得它们在 通信系统 的设计和优化中具有优势。

嵌入式系统

FPGA可以用于嵌入式系统的设计和开发,如控制器、数据采集器、机器人控制器、智能家居等 。FPGA的低功耗和高性能使得它们在 嵌入式系统 中具有优势 。

高性能计算

FPGA可以用于 高性能计算 ,如 加速器 、并行处理器、 DSP芯片 、图像处理器 等。FPGA的高性能和可重构性使得它们在高性能计算中具有优势 。

人工智能

FPGA可以用于 人工智能 领域,如 卷积神经网络 、 循环神经网络 、 深度学习 等。FPGA的高性能和低功耗使得它们在人工智能领域中具有优势 。

航空航天

FPGA可以用于航空航天领域,如卫星通信 、导航 、 遥感 、飞行控制 等。FPGA的高可靠性和可重构性使得它们在航空航天领域中具有优势 。

医疗设备

FPGA可以用于医疗设备,如医疗成像、生命监测、医疗诊断等 。FPGA的高性能和低功耗使得它们在医疗设备中具有优势 。

参考资料

  1. 2023-04-02
  2. 2023-04-02
  3. 2023-04-02
  4. 2023-05-04
  5. 2023-05-04
  6. 2023-05-04
  7. 2023-04-02
  8. 2023-04-02
  9. 2023-04-02
  10. 2023-04-03
  11. 2023-04-19
  12. 2023-04-18
  13. 2023-04-18
  14. 2023-04-02
  15. 2023-04-02
  16. 2023-04-02
  17. 2023-04-02
  18. 2023-04-02
  19. 2023-04-02
  20. 2023-04-02
  21. 2023-04-02
  22. 2023-04-02
  23. 2023-04-20
  24. 2023-04-20
  25. 2023-04-19
  26. 2023-04-02
  27. 2023-04-02
  28. 2023-04-02
  29. 2023-04-02
  30. 2023-04-02
  31. 2023-04-02
  32. 2023-04-02
  33. 2023-04-02
  34. 2023-04-02
  35. 2023-04-02
  36. 2023-04-02
  37. 2023-04-02
  38. 2023-04-02
  39. 2023-04-02
  40. 2023-04-02
  41. 2023-04-02
  42. 2023-04-02
  43. 2023-04-03
  44. 2023-04-02
  45. 2023-04-02
  46. 2023-04-02
  47. 2023-04-02
  48. 2023-04-03
  49. 2023-04-02
  50. 2023-04-02
  51. 2023-04-03