FPGA 与 ASIC:内部结构、差异与行业未来

让我们深入了解 FPGA 和 ASIC 的内部工作原理,探讨这两种技术的优缺点和业务影响: 我们将从半导体芯片设计中的抽象层开始,然后讨论 FPGA 和 ASIC 在结构上的差异,从技术、成本和数量的角度比较 FPGA 和 ASIC ,以及一些有趣的问题,如 "GPU 或 CPU 是 ASIC 吗?...

FPGA 与 ASIC:内部结构、差异与行业未来
让我们深入了解 FPGA 和 ASIC 的内部工作原理,探讨这两种技术的优缺点和业务影响:
  1. 在我们的日常生活中,包括智能手机、计算机和汽车电子产品在内,存在着数不清的半导体芯片,但很少有人真正了解它们背后的原理。
  2. 电子工程专业的学生和嵌入式开发人员经常使用FPGA板,但很少有人能详细了解 FPGA 的内部工作原理。

我们将从半导体芯片设计中的抽象层开始,然后讨论 FPGA 和 ASIC 在结构上的差异,从技术、成本和数量的角度比较 FPGA 和 ASIC,以及一些有趣的问题,如 "GPU 或 CPU 是 ASIC 吗?

数字芯片设计中的抽象层

一个复杂的数字芯片设计由多个抽象层组成:最高层定义了整个系统的行为,最低层一直到原子材料现象。下面是一个逐步分解的过程:
参考:https://www.quora.com/What-should-be-the-best-way-to-learn-VLSI-design
  • 系统级
    • 定义产品或系统级所需的功能和行为。
    • 例如,设计智能手机的通信调制解调器、摄像头处理、人工智能计算等的整体组件和接口。
  • 模块级
    • 设计构成系统的主要模块。
    • 确定每个功能模块的内部结构(微体系结构),如 CPU 内核、内存控制器、DSP 块等。
    • 用硬件描述语言 (HDL) 描述每个模块的行为。
  • 门级
    • 一旦模块设计完成,就将其抽象为实现该模块的门网表。每个功能都由 逻辑门组合实现,如 AND、OR、XOR、触发器等。
    • 逻辑门由预定义的标准单元(ASIC)或 LUT 组合(FPGA)表示。
    • 例如,在 CMOS 电路中,NAND 栅极由几个 pMOS 和 nMOS 晶体管组成。
    • 在此阶段,晶体管原理图的行为通常通过 SPICE 仿真来验证,例如[2]
  • 器件级
    • 作为一种半导体器件,晶体管由器件物理驱动,例如使电子通过通道的场效应,以及在掺杂硅晶片上沉积氧化膜和金属线的过程。
    • 在这个层面上,半导体制程技术和器件物理非常重要。
  • 硅层面
    • 在最基本的层面上,我们可以考虑掺杂硅的晶体结构和电子在原子层面上的行为。
    • 这些物理现象是我们设计的逻辑能够良好运行的根本基础。

系统→模块→栅极→晶体管电路→设备工艺→材料(原子)系统→模块→栅极→晶体管电路→设备工艺→材料(原子)的这一层抽象,使工程师能够抽象出其设计层面的详细复杂性。

例如,RTL 设计师关注的是模块的功能而不是栅极或晶体管,物理设计师关注的是栅极放置和布线,等等。有了这些背景知识,让我们来看看FPGAASIC的内部结构是怎样的,我们将使用这两种东西:

Annatomy of an FPGA

由 AMD Xilinx 提供的 Xilinx Spartan®-7 SP701 FPGA 评估套件是业界常用的 FPGA 套件之一。来源: 贸泽电子
  1. 现场可编程门阵列 (FPGA) 是一种可编程芯片,允许用户在制造完成后在现场重新配置硬件的行为。
  2. "Gate Array"("门阵列"),因此而得名,其内部由许多可编程逻辑块呈网格状排列,并有一个可编程布线网络将它们连接起来。
  3. FPGA 用户通过 HDL 代码设计所需的数字电路,然后将称为比特流的配置数据加载到 FPGA 中,从而根据需要设置逻辑块的功能和布线。

-> 因此,FPGA 提供了一个允许设计变更的硬件平台,并被广泛用于快速原型开发或小批量生产。

要了解 FPGA 的内部结构,让我们逐一了解其中的关键元素:

LUT 和触发器(逻辑单元)

FPGA 的基本构件是小型 逻辑单元

逻辑单元包括查找表(LUT)触发器(FF),整个 FPGA 中排列着数千到数百万个这样的单元。

LUT 是小型存储器,可为不同的输入组合预设输出值,用于实现任意组合逻辑功能。

例如,一个 4 输入 LUT 将在 16 个存储单元中存储 4 位输入的输出值,并使用输入作为地址输出这些单元中的值。 这样,即使是复杂的组合逻辑表达式,也可以在 LUT 中填入恰到好处的值,从而在一个周期内实现所需的结果。

大多数 FPGA 使用 4、5 或 6 输入 LUT,其中 6 输入 LUT 将真值表存储在 64 个 SRAM 单元中。

触发器是一种 1 位存储设备,它连接到每个 LUT 输出,并用作实现顺序逻辑的寄存器

通常情况下,FPGA 中的一个 可配置逻辑块逻辑阵列块由包含多个 LUT 和触发器的 逻辑单元集合组成,例如,Xilinx FPGA 中的一个 CLB 由两个成对的 LUT+FF 对组成,以此类推。

LUT 有时可链在一起作为一个更大的 LUT,或者它们可切换 模式,例如与嵌入式小型 全加法器结合使用以执行简单的加法功能。

布线矩阵和互连

FPGA 的另一个关键部分是可编程互连
《FPGA 路由教程》,Daniel Gomez-Prado Maciej Ciesielski
  1. 要创建将成为实际产品的复杂函数的逻辑,您需要构建布线路径,以便在逻辑单元之间传输信号。
  2. 在 FPGA 芯片内部,有一个纵横交错的密集布线通道网络,每个交叉点或分支点都有开关矩阵路由开关
  3. 这些开关是可编程多路复用器/晶体管开关的组合,可让您连接或断开任意两条信号线。

例如,如果您想将一个 LUT 的输出传递到几排之外的另一个 LUT 的输入,您可以打开中间的开关,创建一条连续的布线路径。

虽然不同 FPGA 芯片架构(通常为 "岛式 "结构)的布线结构的具体细节各不相同,但从概念上讲,整个布线结构可以看作是一个巨大的配电盘。

来自该布线矩阵的控制信息也嵌入到位流中,它通过打开和关闭某些开关来决定哪些逻辑单元的输出通向哪些单元的输入。

在 FPGA 中,布线延迟和资源使用会对性能产生重大影响,因此合成和布局布线 (P&R) 工具会自动放置 LUT,以优化其使用和布线。

电路越复杂,对布线通道和 LUT 数量的需求就越大,因此确保布线拥塞不会成为性能瓶颈是 FPGA 设计的关键。

最新的 FPGA 引入了分层布线、长距离布线(线路、总线宏)等功能,以更高效地支持更广泛的信号连接。

I/O Pads

沿着 FPGA 芯片边缘的是I/O 块 (IOB),它们将信号发送到芯片外部或从芯片外部发送信号。

每个 I/O 块都有一个 IO 焊盘和相关的缓冲器、收发器等,用于将 FPGA 的内部逻辑信号连接到外部引脚。

FPGA I/O 块可编程以支持多种电气标准,例如,您可以设置多种 I/O 电压和差分信号模式,包括 3.3 V LVTTL、1.8 V LVCMOS、LVDS 和 PECL。

您还可以灵活配置I/O 特性,例如调整输出驱动器的回转率、施密特触发输入或嵌入上拉/下拉电阻器。

高端 FPGA 在 I/O 周围配置了高速收发器(SERDES)、用于高频时钟的 PLL、振荡器驱动器等,从而可以实现简单 GPIO 以外的高速接口(例如 PCIe、SATA、HDMI 等)。

位流和配置存储器

到目前为止,FPGA 的逻辑块(LUT/FF)和路由、I/O 等具有可编程开关,设置这些开关的信息集称为 比特流

比特流是一种二进制文件,被加载到 FPGA 内部的配置存储器中。大多数 FPGA 使用基于SRAM的配置存储器,这意味着在断电后,设置将丢失。某些 FPGA(例如 Microsemi/Microchip 的 FPGA)使用闪存或半可逆的防熔断方法在断电的情况下保持配置。"

位流由 FPGA 供应商的工具链生成,该工具链经过 HDL 设计→综合→实现步骤,最终生成一个特定于 FPGA 芯片的位流文件。

例如,当通过 JTAG 将该文件下载到 FPGA 时,LUT 的表值将被分配,每个开关矩阵将被设置为连接或断开状态,I/O 电气模式将被确定,FPGA 将按照您想要的电路运行。

如果您需要修改设计,您只需在电路板上加载一个新的 FPGA 位流,这比硅重新旋转(可能需要花费数月时间和大量资金)更加灵活和经济。

정리:FPGA 内部结构

(a)由多个 LUT+FF 组成的逻辑单元块

(b)连接这些单元块的可编程布线网络

(c)支持各种接口的 I/O 块

(d)构成所有单元块的位流存储器。

这种结构赋予了 FPGA 实现各种数字电路的灵活性,但另一方面,由于 FPGA 被设计为通用型,因此在实现特定电路时会引入大量不必要的逻辑和布线开销。以下 ASIC 芯片通过最大限度地减少这种开销,针对特定功能进行了优化

ASIC 的内部结构

专用集成电路 (ASIC) 是一种为特定用途或应用而定制设计的半导体芯片。

那么,ASIC 如何设计和实现其内部结构呢?虽然规模和设计方法各不相同,但大多数现代 ASIC 都采用了基于标准单元的设计技术。让我们来分析一下基于标准单元的 ASIC 的内部结构和物理设计元素:

基于标准单元的设计

标准单元从字面上理解就是预先标准化的小型逻辑电路单元。它是单个单元中晶体管/布线结构的组合,可提供诸如 AND、OR、XOR 和反相器等非逻辑门或诸如触发器和锁存器等存储设备等功能。

每个标准单元内部由多个 MOSFET 晶体管组成,单元的输入/输出引脚、电源和接地引脚的位置均已确定。

所有单元在设计上的宽度都因功能而异,但高度相同,因此当它们像乐高积木一样水平堆叠时,电源轨和接地轨(GND 轨)会交错在一条直线上。

这意味着当您在芯片设计中水平放置一个标准单元时,顶部的 VDD 线和底部的 VSS 线是直的,可连接到整个芯片电源网格。

在设计 ASIC 时,逻辑设计师使用 HDL 设计电路,并使用 合成工具获得实现电路所需的标准单元的 网络列表

合成的结果是一个由数千万到数亿个单元实例及其连接组成的列表,其中指定了 "500 个 AND 单元、200 个 OR 单元、100k 个触发器...... "等,以实现所需的逻辑。

然后,置放和路由工具 (P&R) 将此网表作为输入,在芯片区域创建一行又一行的标准单元,并通过路由将每个单元的输入和输出相互连接起来。

由于标准单元大小一致,因此我们将它们堆叠成行,当这些行单元密集地排列在整个芯片核心区域时,它们就包含了我们要实现的逻辑。

除了由标准单元组成的数字电路外,ASIC 内部还包含一些专用块,例如内存宏(SRAM/ROM)模拟电路(PMIC、PLL 等)I/O 单元

由于这些块的大小与标准单元无关,因此在 ASIC 底层规划阶段将它们放置在适当的位置,然后用标准单元逻辑行填充剩余的空间。

例如,在 SoC ASIC 中,CPU 内核、DSP、片上存储器和 IO 物理层 (PHY) 等大型块将首先放置,然后用标准单元逻辑填充剩余的区域。

标准单元库包含每个单元的物理布局、电气特性和时序特性,EDA 工具可参考这些特性来优化布局/布线。

布局确定后,将创建一个掩模,以便在硅晶片上实现电路,ASIC 芯片就这样诞生了。

总之,ASIC 的内部结构是通过组装预先设计的标准单元组件而形成的定制电路

FPGA 使用通用逻辑块和路由来构建一切,而 ASIC 仅实现其所需的功能,因此几乎不会造成资源浪费。但是,灵活性会被牺牲,因为设计必须从头到尾一次性完成并制造。

电源网格和时钟树

在 ASIC 芯片内运行着数百万到数十亿个晶体管、为所有晶体管提供稳定的电源并为所有触发器提供相同的时钟信号是非常重要的。

电源交付网络是一个金属布线网络,用于为整个芯片提供足够的电源 (VDD) 和接地 (GND)。

我们在前面提到,当标准单元成行放置时,每一行都有一条 VDD/VSS 线,但这可能不足以向芯片中心供电。

因此,顶层金属层形成了一个晶格状的电源网格,使电源线能够贯穿整个芯片。

就像道路网络中的高速公路一样,来自芯片周围焊盘的 VDD/GND 以 X/Y 方向分布在较厚的金属层中,中间的通孔连接到较低的金属层,直至标准单元的电源线。

另一方面,时钟树是将同步信号(时钟)分配给 ASIC 中所有触发器的布线网络。它被称为时钟树,因为它只是以树形分布,但实际上涉及到大量复杂的缓冲器插入分支布线调整,以匹配偏移。

要同时将时钟传送到数千万个触发器,时钟路径上的延迟必须基本一致。

为此,我们构建了一棵从时钟源(如 PLL)到每个主要块的分层分布缓冲器树,最后在每个触发器附近构建了本地缓冲器来清理信号。

高性能 ASIC 使用 H-Tree(时钟树),时钟线单独位于金属顶层,并向下分支至底层。

时钟树是芯片上切换速度最快的信号网络,因此其动态功耗也是等式中的一个重要部分,这就是为什么在设计时钟树时,优化 CTS(时钟树合成)以减少不必要的负载并将延迟降至最低是关键所在。

在 ASIC 中,电源网格和时钟树要比在 FPGA 中重要得多。

虽然 FPGA 内部已经有了某种标准化的电源和时钟分配结构,但 ASIC 必须自行完成电源规划时钟聚合,而不是让设计人员自由地按需排列。

这使 ASIC 能够根据芯片尺寸优化功耗和时钟,从而最大限度地提高性能。

路由和物理实现

ASIC 的路由与 FPGA 的可编程互连形成鲜明对比、一旦通过光刻技术在硅片中实现,它就是无法更改的固定布线

P&R工具利用多层金属布线来连接许多标准单元的输入和输出,以尽可能短的路径绘制线路。

布线层通常有角色分工,较低的金属层较窄,用于短信号,较厚的用于电源/时钟,以此类推,层间根据设计规则通过通孔进行连接。

最终布线完成后,必须通过DRC/LSVS检查,并进行时序分析,以验证所有路径是否符合所需的速度。

这在 FPGA 设计中也会进行,但在 ASIC 中要严格得多,因为一旦绑扎完成,就很难再进行修改。

在 ASIC 布线后,还需要完成其他任务,例如封装 I/O 布局电源焊盘连接ESD 保护电路。最后,ASIC 芯片就完成了,它是一个单一的、固定的硬件实现,永远不会改变。

总结一下 ASIC 与 FPGA 相比的内部结构特点

  • 优化结构,无冗余(标准单元/定制设计)
  • 高效的电源/时钟分配,即使在大规模运行时也能保持高性能
  • 固定布线,最大限度地减少不必要的延迟完成设计的任务
  • 但一旦构建就无法修改,零灵活性

ASIC 的这些特性使其在性能、功耗和面积方面比 FPGA 具有显著优势。在下一节中,我们将从技术和业务角度对 FPGA 和 ASIC 进行直接比较。

FPGA 与 ASIC:技术、成本和大规模生产性比较

由于起源和目标不同,FPGA 和 ASIC 在许多方面都具有明显的优缺点。以下是两种方法的差异比较,重点关注关键领域:

  • 性能和功耗效率:ASIC 的运行速度更快,功耗更低,因为它们直接为特定目的设计电路。 它们没有多余的逻辑元素,布线经过优化,因此在执行相同功能时,其时钟速度比 FPGA 高,功耗[22]也更低。由于 LUT、可编程开关等造成的逻辑/布线延迟,FPGA 的性能和功耗通常比 ASIC 低一个数量级。举个粗略的例子,FPGA 的最大时钟频率可比 ASIC 低几十到几百 MHz,而执行相同计算所需的功耗却高出许多倍。当然,现代 FPGA 具有嵌入式硬 IP(如 DSP 块和存储器),可以缩小差距,但就总体效率而言,ASIC 的优势是显而易见的[18].
  • 灵活性和开发时间: FPGA可重新编程,这是其最大的优势。当您想修改设计或改变功能时,只需修复 HDL 并添加新的比特流即可。这大大缩短了开发时间,并在项目早期轻松创建和测试原型[24]。此外,硬件功能一旦交付给客户,就可以像固件更新一样在现场进行升级。另一方面,ASIC 的设计、验证和制造可能需要几个月到一两年的时间,而且一旦生产出来,硬件功能就无法更改[25]。因此,FPGA 在快速响应市场需求变化方面具有优势,而 ASIC 则必须在早期规划阶段实现得近乎完美。
  • 净资源需求和单位成本:ASIC 开发涉及大量净资源需求,包括电路设计劳动力、EDA 工具费用和光掩膜生产成本。对于最先进的工艺而言,一套掩模的成本可达数百亿美元,因此除非产量巨大,否则很难收回投资[26]。相比之下,FPGA 由于使用现成的芯片,其 NRE 成本几乎为零。不过,FPGA 的单芯片成本较高:一般消费者(而非半导体公司)会为一个 FPGA 芯片支付数万至数十万美元不等的费用,而 ASIC 则可批量生产,单芯片成本仅为数十甚至数百美元[27]总之,FPGA 在小批量生产时更便宜,而 ASIC 在大批量生产时绝对更便宜。
  • 批量生产和可靠性:FPGA 使用半成品的商品芯片,因此在批量生产产品时,在供应链中采用相同的 FPGA 非常重要。另一方面,ASIC 是专为您的产品制造的芯片,因此您只需根据需要生产即可。不过,可能会出现良品率问题,因此您最初需要努力提高良品率。就可靠性而言,FPGA 是成熟 IP 的集合,因此前期风险较小,而 ASIC 是全新设计的,由于设计缺陷而导致失败的可能性需要很好地管理。 因此,对于小型初创企业而非大型企业而言,常见的策略是使用 FPGA 制作原型、测试市场,然后在有信心时转向 ASIC。从工程角度来看,将首先在 FPGA 中验证过的逻辑 ASIC 化也相对安全。事实上,"FPGA 到原型到 ASIC 到量产"步骤被认为是许多产品开发流程的标准组成部分[28]
  • 功能集成及其他:根据设计目标,ASIC 可以在一个芯片 (SoC) 上实现多种功能,甚至模拟/射频电路。FPGA 也被称为 SoC FPGA,可以包含 ARM 处理器,但定制 ASIC 在整体系统集成方面要灵活得多。 ASIC 在 IP 保护方面的另一个优势是,它们采用复杂电路的硬连线方式,因此相对难以进行逆向工程,这对于安全性[29]是有利的。

如下表所示,技术要求和业务背景将决定您是选择 FPGA 还是 ASIC

GPU 和 CPU 也是 ASIC 吗?

一个有趣的问题:像GPUCPU这样的处理器芯片也是 ASIC 吗?"

答案是"从广义上讲,是的。"

毕竟,GPU 和 CPU 是用于特定用途的专用集成电路。

例如,NVIDIA 的最新 GPU 是图形/AI 应用的专用架构,拥有数万个专用于图形和并行计算的内核以及高速内存接口。

这意味着 GPU 可被称为 "图形和并行计算专用集成电路(ASIC)",因为与通用 CPU 相比,GPU 具有应用专用性

类似地,PC 或智能手机的 CPU 也是通用处理器,但其本身是定制设计的芯片,并采用 ASIC 设计技术制造。

因此,NVIDIA 的物理设计工程师前往 QTI,而 QTI 的 RTL 工程师前往 NVIDIA,这是很自然的事情。

但一般而言,业界并不将 CPU 或 GPU 称为 ASIC,因为它们在很大程度上是 通用可编程处理器,而 ASIC一词通常用于指执行特定应用的非可编程芯片。

例如,比特币矿机 ASIC自动驾驶 AI 加速 ASIC 就是专为实现单一功能而设计的芯片。

再进一步区分:

CPU/GPU = 通用处理器,ASIC = 专用于特定功能的芯片是一种语言上的区分,但从技术上讲,CPU 或 GPU 也是 ASIC 的一个更广泛的类别,因为它是一种基于标准单元的定制设计芯片。

FPGA 制造商也经常将 FPGA 称为"可编程 ASIC",因为它们在逻辑上的行为与 ASIC 相似,只是可以多次重新配置。

底线是,GPU 和 CPU 在技术上是 ASIC 的子类别,但在通常的说法中,它们的叫法不同。

결론:

我们比较了 FPGA 和 ASIC 的内部结构和特点及其优缺点。FPGA 凭借其灵活性和较短的开发周期,一直是电子专业学生和工程师的理想工具,并将继续在原型开发和小批量专业应用中发挥重要作用。

日常智能手机中的 SoC、个人电脑中的 CPU/GPU、数据中心中的 AI 加速芯片以及汽车中的 ADAS 芯片都是由数百亿晶体管组成的 ASIC。

尤其是最近的人工智能热潮导致了 ASIC(如NPU/TPU)的爆炸式发展,从而使过去由 GPU 处理的深度学习计算变得更加高效。

FPGA 由于其开发的便捷性,往往在初创和研究阶段大放异彩,但一旦产品取得成功并被全球数百万人使用,它就会迁移到 ASIC。这是因为 ASIC 需要更多的前期投资和时间,但一旦完成,它们就能在其应用中提供无与伦比的性能/成本竞争力

如今,由于半导体设计人才短缺,ASIC 开发的准入门槛很高,但与此同时,通过云 FPGA 服务、高级合成 (HLS) 等方式对 FPGA 的使用越来越多,推动了将成熟设计快速移植到 ASIC 的进程。

"行业正在走向 ASIC",这意味着定制的 ASIC 芯片才能最终为广大用户带来价值。

随着市场的发展,即使是最初采用 FPGA 的创新也将采用 ASIC,从而实现更高的效率和经济性。

展望未来,半导体行业将继续在 FPGA 和 ASIC 之间的互补关系中发展,并最终继续以ASIC 为中心,朝着更高性能、更低功耗和更低成本的方向发展。

글 참여 도구

Share Join discussion
How did this article help? Used only as a private quality signal.

Private note

Spot an error or need clarification?

Send a private correction, question, or topic request directly to the editor.

VLSI Korea

Send a private note

Your message will be delivered to [email protected].

How should we receive it?

Anonymous mode omits your name and email. The delivery provider may still process technical data such as an IP address, so absolute anonymity cannot be guaranteed.

ENGINEER DISCUSSION

What are you seeing in practice?

Add evidence, a counterpoint, or experience from the field. Reply notifications keep the thread moving.

VLSI KOREA BRIEFING

Keep the signal. Lose the noise.

Semiconductor engineering and industry intelligence from a practicing engineer. Free, with no paywall.

FOR BUSINESS

Need this level of technical content?

Technical content, sponsored deep-dives and private team briefings—with clear scope and pricing.

Work with VLSI Korea →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
MY VLSI

내 읽기 보관함

저장한 글과 읽던 글을 한곳에서 이어보세요.