FPGA到底是什么?
前言-芯片的本质
芯片的本质是什么?
老哥认为芯片的本质是电路!
简单来说,数字芯片,不论多复杂,其底层就是 与,或,非的组合。
这个是某宝上可以买到的世界上简单的芯片之一, 74LS系列,很便宜,两毛钱;

其功能就是二输入与非门。这是一个最简单的芯片,其电路和版图如下

上图中一共4个二输入与非门。
而CPU或者GPU等大芯片,有几千万门甚至上亿门的电路。
通过深入剖析大芯片的底层结构,我们能够揭示其内部所包含的逻辑单元。
这就是电路,CPU和GPU也是一种电路的组织形式。
即使最复杂的芯片,芯片设计工程师也只能通过硬件描述语言(HDL)来描述其电路。
看起来像是和软件工程师一样,都在敲代码,在编程,实际上是在搭电路。
EDA工具将语言信息映射为电路设计,最终生成该设计版图(GDS)。随后,该版本被提交至厂家进行生产流程。流片厂家将GDS转换为硅基材料。封装厂家完成从DIE到CHIP封装的工艺流程。
这个过程和设计PCB电路基本上是非常相似的。
都是电路转换成PCB 到厂家制版。
当前来看,核心环节主要是制造环节,具体来说,即从版图到硅的阶段。除此之外,其他环节也有一定的关注,但这个问题,以后可以深入探讨。
今天主要说一下 ,设计一款芯片研发最大的问题是啥?
有两点是大家公认的。
第一,研发迭代周期长:
大芯片投入研发一年或两年,这已成为常见做法。由于功能缺陷或市场变化等原因,最终无法售出,不得不重新规划。这令人震惊,小型芯片公司因芯片失败导致资金耗尽,一气呵成也是常见现象。
第二,芯片投入高:
芯片研发涵盖流片成本、IP成本以及人力成本等多个方面。28nm的MASK约为1000万元,12nm的约为2500万元,此外还有人力成本和IP成本等。研发一颗28nm的芯片的总投入成本大几千万,而7nm和5nm的投入则高达几亿元。如此高昂的成本(NRE)最终将分摊到每一颗芯片上。
对于一个项目或需求,其数量在数千到数万颗之间,是否值得投入研发芯片则成为一个需要深入考虑的问题。
当流程线不适用时,是否真的没有替代方案?通过缩短迭代周期并降低实现成本,可以有效满足这一电路的需求。
FPGA,他来了!
1:FPGA:实现电路的电路
FPGA
Field Programmable Gate Array。
现场可编程门阵列。
FPGA和专用芯片不同。
可以编程。
文章开头说过了, 芯片的本质就是电路。
那么FPGA的本质是什么?
FPGA本质也是一种芯片。
但是,既可以实现数字电路功能,也可以将如CPU、GPU、NPU等如数字电路均可以放置于FPGA内部,具体效率则需进一步探讨。
那FPGA的本质就是可以通过编程实现电路的电路。
这个是怎么做到的?
或者说,什么样的电路可以实现与或非这些基本操作
我们采用 F=A&B&C&D 这一电路作为示例:
这个RAM有4位地址, DCBA。通过这4bit选择RAM的输出。
通过配置RAM中不同的值,实现输出F 和输入A,B,C,D的关系

上图中,我们把16bitRAM 配置为 0000000000000001 ,这个电路 则等效 F=A&B&C&D;
只有A=B=C=D=1时, F=1,其他情况 F=0;
完美实现了 F=A&B&C&D;
重要的事情再说一遍;
16bitRAM 配置为 0000000000000001 , 则等效F=A&B&C&D;
那么现在“0000000000000001” 这串数就是FPGA的编程。
这就是FPGA最基本的原理;
举一反三,如果实现电路 F=A|B|C|D 。
这个电路如何编程:

16bit RAM 配置为 01111111111111111, 则等效F=A|B|C|D。
建议大家进行尝试:通过调整16\text{bit}RAM的设置,能够支持处理A、B、C、D四个输入的所有逻辑运算。
FPGA就是利用了这个转化,具备了描述任何电路的能力。
上图这个结构在FPGA中有一个专有名词,叫做LUT ,lookup table( 查找表)。
(nnd神奇啊)
LUT就构成了所有FPGA的最基本的单元。
LUT仅能完成数字组合逻辑,为了进一步提升功能,又添加了一个寄存器flipflop(ff),实现数据的保持功能;
如下图所示:LUT+寄存器构成了现代FPGA基本结构。
FPGA的基本结构,就是依靠如此简单的电路实现了无比复杂的逻辑。
该方法由LUT和FF的基础结构构成,其中的LUT和FF整合为一个基础的逻辑单元(LOGIC BLOCK)。

在数字电路设计中,能够处理四个输入变量进行计算的LUT表,通常被称为4输入LUT。此外,随着需求的变化,还出现了5输入、6输入等变种。
万变不离其宗。
这种结构,从FPGA诞生以来,就没有怎么变过。
这个电路,也可以看作是一个最小的FPGA。
现在能实现一个功能的芯片,少则几万门,多则几千万门,上亿门。
单纯靠这个电路实现,这就是开玩笑了。
那么就需要无数的LUT和FF来实现,。
基于FPGA架构实现了大量Logic Block的构成,每个Logic Block内部由LUT和FF构成,通过布线资源进行连接。
把互联和逻辑单元结合起来就是一个FPGA芯片,图如下所示。

FPGA开发流程通常包括以下步骤。首先,使用Verilog(一种电路描述语言)编写HDL代码,随后将其转换为bit流配置文件。
相较于以往,专用芯片的开发流程从HDL(基于verilog的电路描述语言)到硅基芯片,所用时间显著增加。

这些bit流包括啥?
开头说过了,16bitRAM (LUT)配置为 0000000000000001 ,
则等效F=A&B&C&D;
FPGA生成的Bit-stream流序列,包含LUT配置信息以及布线资源配置信息。
到这里,FPGA的设计及编程就完成了。
简单明了!
FPGA基本原理
FPGA的核心原理及其工作机制
如果还是不能理解,那就瞅瞅这个视频。
FPGA简短介绍
FPGA概述
2:EDA工具:从知到行的距离
看起来设计一个FPGA芯片也不复杂。
电路不复杂,市场上高性能的FPGA,可选择的余地不多。
从知到行,这里面有一个巨大的鸿沟,
按照本文开头的原理,假如一个厂商设计完毕了一款FPGA芯片。
等到给客户使用的时候,就碰上了一个大麻烦。
EDA工具。
如果给客户提供FPGA芯片,则需要配套提供给客户一个EDA工具。
没有EDA工具,难不成让客户手动生成FPGA的bitstream的文件。
芯片都做出来了,EDA工具,还难吗?
难,真的难!
这是一个巨大的坑。
此图具有一体化架构,展示了基于开源平台的硬件可编程架构的设计流程图。我们可探究,即便一个开源项目,其所需的EDA工具最少应包含哪些?

这些需要给客户的EDA工具包括:
- 1:通用工具
- 2:布线排布工具
- 3:bit制作工具
- 4:时序评估工具
- 5:仿真模拟工具
- 6:用于调试的嵌入式逻辑分析仪器等
- 7:功耗评估工具
这些集合可以被视为最小规模的,但相比而言,这些集合的复杂性已经超越了单个CPU芯片支持的GCC编译器水平。
老哥安装过某个公司开发的EDA工具,这些工具的体积大约都是十几个GB,比Windows安装盘大得多。
如果CPU的GCC工具难度是1,FPGA的EDA工具的难度就是10到100。
借用《让子弹飞》里的一段话:
项目成功了,芯片功劳怎么才占7成。
七成是EDA的,芯片也就三成。
就这三成,还要看EDA的脸色。
辛辛苦苦半天,做出来芯片,还要看EDA工具的脸色。
看看EDA都有哪些“脸色”?




以上图的布局布线工具为例,看起来就比较复杂。
如果做不好,整个FPGA的利用率极低,还布不通,你说重要不重要。
除了传统的EDA工具,生成HDL描述,如Verilog这种编程语言之外,同时包含高层综合设计语言(HLS,High level Synthesis)作为高层次综合的描述语言。

HLS的引入,使得软件工程师能够更方便地参与FPGA设计流程中。通过HLS技术,电路开发被自动处理,软件开发成为主要关注点。这进一步凸显了EDA工具的强大功能。
该方法本质上是将高级编程语言(C/C++)被转换为硬件描述语言(HDL),并进一步通过综合工具将其转换为电路。
主要优点在于更符合软件工程师的习惯,然而,这种做法引入了额外的转换步骤,导致了效率上的损失。
3:FPGA的架构:融合超越
文章开始说了,FPGA就是Logic Block,内部主要是(LUT+FF),以及布线资源。
除了这些。
FPGA还有很多硬核IP,也叫做宏单元。
例如PLL,SERDES,RAM等常规IP的。
随着现在芯片的演进。
FPGA内部也集成了很多新的东西。
这些新产品的最具特色便是其硬核CPU系统,在FPGA内部实现了这一技术,甚至支持操作系统(OS)的运行。
这样CPU+FPGA。
CPU软件编程,FPGA 硬件电路编程,
这个就是双剑合璧,更胜一筹。
同样,serdes是高端FPGA的必要模块。缺少serdes,FPGA就孤立无援,无法实现与其他芯片电路的高速互联。
现在与外部器件连接,支持比如PCIe,SATA,10G/100G ethernet这些高速协议。
数字信号处理,FPGA应用于数字信号处理等计算密集型任务,如雷达等等
所以,FPGA内部也集成了了很多DSP单元,实现乘法等操作。
抓住人工智能领域这一战略机遇期,一些FPGA配备了用于AI处理的神经网络加速电路。
总结一下,除了LUT,FPGA内部集成硬核IP包括:
1:RAM:负责存储资源的实现;
2:PLL:提供高速时钟信号和资源;
3:DSP:涉及乘法操作、滤波器以及数字信号处理模块;
4:SERDES:支持实现PCIE、SATA、FC以及100G Ethernet等高速接口;
5:CPU系统:具备软件编程开发能力;
6:NPU核心:通过加速AI处理来提升性能。
而根据市场需要,还可能添加更多的硬核IP 与传统的FPGA进行融合。
融合更多功能IP。
这就是FPGA架构未来的趋势。
4:FPGA优势:解决问题才是王道
FPGA和CPU有什么区别和优势?
我们讨论一种架构的优劣,重点是解决了什么问题?
而不是CPU与FPGA,孰优?
只有放在固定的应用场景下,才能说哪种架构更适合解决这些问题。
FPGA编程是电路,本质上还是可以看作,逻辑门(与或非)等等效电路。
CPU是指令操作,运行的是软件。
FPGA采用时间并行技术,而CPU采用时间串行处理机制。单个CPU核心必须依次执行每一条指令以完成任务,尽管存在指令级并行的可能性,但其基本运行机制保持一致。
FPGA的并行度较高,相比CPU的计算方式,数据吞吐量大,时延控制比较好。
然而,CPU运行频率显著高,能够执行操作系统任务,作为通用计算单元展现出极高的灵活性,与FPGA相比,这种特性主要体现在其他方面。
FPGA更适合构建专用标准集成电路(Application Specific Standard Parts,ASDP),这种设计主要用于满足特定领域的需求。它与CPU协同构建专用运算单元,以实现专注于单一数据流量的高吞吐量计算任务。
FPGA既然是”万能的芯片“,似乎那就可以替代实现所有芯片功能。
是不是可以不研发专用芯片,只用FPGA。
相比专用集成电路:FPGA有三个劣势
1:面积大,成本高:
与专用集成电路(芯片)相比,FPGA采用LUT单元来表示基本逻辑门,其面积大致上是专用集成电路的10倍。基于此,FPGA的成本进行直接类比,其成本也会显著更高。
2:面积大,功耗高:
同样功耗表现无明显优势,实现低功耗设备并非易事,尤其是像手持供电设备这样的便携设备,基本不具备可行性。
3:运行频率低,计算效率低。
在FPGA内部,LUT之间由于互联线路较长,导致其运行频率相较于采用相同工艺的ASIC来说要慢得多。而专用电路门与门之间的延迟相比而言,要小得多。
但是,FPGA优势也很明显。
FPGA最大的优势,就是灵活性高。
用FPGA不用重新流片,节约了NRE成本。
这些技术广泛应用于多个领域,包括但不限于雷达系统、第五代移动通信技术、网络技术、存储技术以及高性能计算系统等。
在需求模糊且规模较小的情况下,没必要做芯片;而当需求经常变化时,FPGA则是理想的选择。
在Intel收购后,ALtera的重心转向数据中心市场。在FPGA领域,数据中心市场成为新的发展重点。最新的Intel IPU中采用FPGA技术,用于数据中心基础设施的卸载,类似于DPU的实现。
目前很多家DPU都是用Intel和Xilinx的FPGA实现的。
DPU需求不固定,数据中心对DPU的需求呈现动态调整趋势,具体表现为需求波动幅度逐渐增大。
全球FPGA市场在2018年的规模约为60亿美元,其中Xilinx和Altera在全球FPGA市场中占据重要地位,其他公司则处于次要地位。(2015年,英特尔以167亿美元收购了FPGA厂商Altera,这一举动使得其他公司获得的市场份额大为缩减)

老哥早些年,这两家FPGA都使用过,各有千秋。
国内有多家FPGA公司,部分公司的出货情况较为正常。与国际主要企业相比,目前仅能满足部分国产化需求,处于解决了有无的差距阶段。其规模和性能,特别是EDA工具方面,存在明显差距,仍需在市场中积累经验。
这里举两个国产FPGA的非典型案例,非常有意思。
2014年,俄罗斯被并入克里米亚,美国实施制裁,美国对俄罗斯实施的封锁禁运也相当严厉。俄罗斯芯片陷入危机,尤其是高端FPGA芯片的供应。某司的FPGA芯片抓住这一机遇,成功解决了国际合作伙伴的燃眉之急,并实现了FPGA芯片的出口,并获得了可观的利润。
此外,某手机制造商的手机屏幕具有特定的编码格式。因此,在进行返修时,只能使用原厂屏幕,其他屏幕格式无法兼容。原厂屏幕的价格通常较高。为了提升效率,某公司专门定制了一批超小型FPGA芯片,用于解码手机屏幕。中国的屏幕制造商众多,包括LCD和LED等多种类型,这些替代方案在手机返修市场表现非常出色。
在这些细分领域,找到了定位,实现了很大的突破,不论是利润还是数量。
如果有数量几十万片,几百万片,甚至更多,做专用芯片更合适。
如果没有那么多数量,需求又不固定,用FPGA更合适。
在芯片设计过程中,该环节即为FPGA原型验证。FPGA原型验证的过程是将芯片代码在FPGA平台上进行原型实现。该过程有助于提升芯片设计的迭代效率。
本文开始说:FPGA特性,就是能够描述芯片电路。
在数字芯片制作过程中,将芯片逻辑导入FPGA进行模拟测试,这一过程具有重要意义。
从这个角度看,FPGA和芯片(专用集成电路)从来就不是对立的,
FPGA,万能芯片,从功能上看是万能的,理论上可以实现所有功能。
但是从,PPA上看,性能,功耗,面积(成本),这三个维度来衡量,又是非常受限的。
FPGA也在进化,拓展更多的领域,满足那些变化的市场需求。
也有部分市场需求更为固化,被专用芯片所取代。
万能的芯片,变化的应用。
找到市场定位,解决用户的问题,才能获得一席之地。
FPGA是如此,芯片也是如此。
前辈的文章属实的干货满满,感恩的心
本文来自:[《FPGA芯片的“本质”是什么?》]
