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

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

上图中一共4个二输入与非门。
而CPU或者GPU等大芯片,有几千万门甚至上亿门的电路。
但是如果我们深入研究大芯片的本质结构, 从而发现这些大芯片本质上是由与非门, 或非门, 等逻辑门构成的一个集合.
这就是电路,CPU和GPU也是一种电路的组织形式。
不管多么复杂的芯片,都是由 chip design engineers 利用 hardware description language (HDL) 来进行电路建模和定义。
看起来像是和软件工程师一样,都在敲代码,在编程,实际上是在搭电路。
EDA工具将语言转化为电路结构,并最终生成该设计布局图(GDS)。随后将此版本提供给厂家进行加工制造。流片厂商会将GDS转换为硅基材料。封装厂商会将其封装至芯片( CHIP)中完成整个流程。
这个过程和设计PCB电路基本上是非常相似的。
都是电路转换成PCB 到厂家制版。
在目前的研究中,在讨论芯片技术瓶颈问题时,在目前的研究中,在讨论芯片技术瓶颈问题时
今天主要说一下 ,设计一款芯片研发最大的问题是啥?
有两点是大家公认的。
第一,研发迭代周期长:
大芯片耗时一年或两年研发成功,并不罕见。由于功能缺陷或市场环境的变化导致未能售出后需重新迭代。令人震惊的是,在小型芯片企业中因项目失败而资金耗尽后直接一气呵成带走同类产品的现象也非常普遍。
第二,芯片投入高:
在 chip 制造过程中涉及的成本项目主要包括 wafer 制造费用、集成电路 intellectual property (IP) 费用以及人力资源支出等多个方面。采用 28 纳米技术制造出来的 masks 的价格约为 1 千万人民币左右;而 12 纳米技术水平对应的 masks 接近 3 千万水平;除此之外还包含设计团队工资以及其他相关知识产权费用等其他支出项。生产一颗基于 28 纳米技术设计的集成电路所需投入的资金规模通常在数千万甚至更高;而采用 7 纳米或 5 纳米技术水平所造成的投资金额则会达到数亿元水平之遥。由于这些高昂的成本因素(称为 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位RAM的参数值(即16bitRAM),系统将能够支持对A、B、C、D四个输入的所有逻辑运算。
建议大家尝试一下:通过设置16位RAM的参数值(即16bitRAM),系统将能够支持对A、B、C、D四个输入的所有逻辑运算。
FPGA就是利用了这个转化,具备了描述任何电路的能力。
上图这个结构在FPGA中有一个专有名词,叫做LUT ,lookup table( 查找表)。
(nnd神奇啊)
LUT就构成了所有FPGA的最基本的单元。
LUT仅限于完成数字组合运算;为了克服这一运算限制而增加了相应的存储单元ff;从而能够有效存储数据。
如下图所示:LUT+寄存器构成了现代FPGA基本结构。
FPGA的基本结构,就是依靠如此简单的电路实现了无比复杂的逻辑。
这一系统涵盖LUT和FF的核心组件,并将其整合为一个统一的核心模块(LOGIC BLOCK)。

具备ABCD四个输入计算能力的LUT被称为4输入LUT,在此之外还包括5输入、6输入等多种形式
万变不离其宗。
这种结构,从FPGA诞生以来,就没有怎么变过。
这个电路,也可以看作是一个最小的FPGA。
现在能实现一个功能的芯片,少则几万门,多则几千万门,上亿门。
单纯靠这个电路实现,这就是开玩笑了。
那么就需要无数的LUT和FF来实现,。
该阵列由FPGA实现,并且其中每个Logic Block内部由LUT和FF组成。
把互联和逻辑单元结合起来就是一个FPGA芯片,图如下所示。

一个典型的FPGA开发过程如下。该过程将Verilog语言转换为配置文件中的bitstream。
相较于以往的设计流程,在专用芯片开发中需要从HDL(基于Verilog的语言)到硅这一过程耗时较长。

这些bit流包括啥?
开头说过了,16bitRAM (LUT)配置为 0000000000000001 ,
则等效F=A&B&C&D;
FPGA生成的Bit-stream序列包含了用于配置LUT和BLIR的数据
到这里,FPGA的设计及编程就完成了。
简单明了!
FPGA基本原理
Field-Programmable Gate Array核心内容
Field-Programmable Gate Array核心内容
如果还是不能理解,那就瞅瞅这个视频。
FPGA简短介绍
FPGA快速入门解析
2:EDA工具:从知到行的距离
看起来设计一个FPGA芯片也不复杂。
电路不复杂,市场上高性能的FPGA,可选择的余地不多。
从知到行,这里面有一个巨大的鸿沟,
按照本文开头的原理,假如一个厂商设计完毕了一款FPGA芯片。
等到给客户使用的时候,就碰上了一个大麻烦。
EDA工具。
如果给客户提供FPGA芯片,则需要配套提供给客户一个EDA工具。
没有EDA工具,难不成让客户手动生成FPGA的bitstream的文件。
芯片都做出来了,EDA工具,还难吗?
难,真的难!
这是一个巨大的坑。
这张图展示的是一个基于开源FPGA(OpenFPGA)的设计流程架构。从下图中可以看出,即使是典型的开源项目,其所需使用的EDA工具种类最少都需要哪些?

这些需要给客户的EDA工具包括:
- 1:通用型工具
- 2:布局规划与布线支持系统
- 3:Bit生成模块软件
- 4:时序分析框架系统
- 5:仿真平台软件
- 6:嵌入式逻辑调试设备(含功能扩展模块)
- 7:功耗评估与优化解决方案套件
数量上极为有限的这些集合,在支持为用户提供GCC编译工具方面也面临着极高的复杂度。
某人之前使用过某软件的ED数据分析工具,在使用过程中发现其数据存储规模达到了十几GB级别,并且这个规模远超Windows系统默认安装介质的容量。
如果CPU的GCC工具难度是1,FPGA的EDA工具的难度就是10到100。
借用《让子弹飞》里的一段话:
项目成功了,芯片功劳怎么才占7成。
七成是EDA的,芯片也就三成。
就这三成,还要看EDA的脸色。
辛辛苦苦半天,做出来芯片,还要看EDA工具的脸色。
看看EDA都有哪些“脸色”?




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

HLS的引入带来了硬件设计领域的变革,在FPGA设计中使硬件工程师无需深入电路细节即可参与设计工作。通过将电路开发功能隐式处理并直接进行软件开发,在FPGA设计中实现了更高的效率和简化流程。进而凸显EDA工具的强大能力。
这个过程本质上是实现从高级语言(C、C++)到硬件描述语言(HDL)的转换,并借助综合工具生成逻辑电路。
优点在于更加符合软件开发工程师的工作习惯;然而这也带来了额外的转换过程导致效率上的损失
3:FPGA的架构:融合超越
文章开始说了,FPGA就是Logic Block,内部主要是(LUT+FF),以及布线资源。
除了这些。
FPGA还有很多硬核IP,也叫做宏单元。
例如PLL,SERDES,RAM等常规IP的。
随着现在芯片的演进。
FPGA内部也集成了很多新的东西。
这一系列新事物中,最具代表性的就是CPU,在FPGA内部整合了硬核级CPU系统,并且能够运行操作系统。
这样CPU+FPGA。
CPU软件编程,FPGA 硬件电路编程,
这个就是双剑合璧,更胜一筹。
同样也是高性能 FPGA 的必要组件。缺少了 serdes 的 FPGA 就像是孤悬独立。它无法与其他芯片电路高效地连接起来。
现在与外部器件连接,支持比如PCIe,SATA,10G/100G ethernet这些高速协议。
数字信号处理,FPGA应用于数字信号处理等计算密集型任务,如雷达等等
所以,FPGA内部也集成了了很多DSP单元,实现乘法等操作。
许多FPGA配备了专为人工智能处理设计的核心功能模块。
总结一下,除了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更擅长应用于ASSP(专用集成电路用于特定领域设计),与CPU协同工作以建立专用运算单元,并专一地处理单一的数据量大的计算任务。
FPGA既然是”万能的芯片“,似乎那就可以替代实现所有芯片功能。
是不是可以不研发专用芯片,只用FPGA。
相比专用集成电路:FPGA有三个劣势
1:面积大,成本高:
与专用集成电路(芯片)相比,则基于LUT这一技术特征实现基本逻辑门单元的功能。因此,在面积上来说的话,则大约是专用电路的十倍大小。由此可知,在成本上也存在显著差异
2:面积大,功耗高:
同样在功耗方面也未显示出明显的优势,在实现低功耗设备方面也遇到了困难;例如手持的供电式设备等具体方案基本无法满足实际需求
3:运行频率低,计算效率低。
在FPGA内部的LUT之间,因为它们之间的互联相对较长而导致整个系统的运行频率相较于使用相同工艺的ASIC来说要低得多。不同专用电路模块之间的时序差异相对较小。
但是,FPGA优势也很明显。
FPGA最大的优势,就是灵活性高。
用FPGA不用重新流片,节约了NRE成本。
在多个雷达、5G网络、存储系统以及高性能计算等领域的数据密集型计算应用广泛。
特别强调,在需求模糊不清且规模较小的情况下,并没有必要投入大量资源去做芯片设计;相反地,则可以选择一种更为灵活的技术方案——FPGA作为一种理想的选择。
在收购Altera之后,在应用层面也发生了转变,在芯片设计领域尤其是在高速度、高效率的数据处理需求下得到了广泛关注。特别强调利用FPGA技术来加速数据中心相关的计算任务,并且这一领域的投入规模较大。特别指出最新的Intel IPU采用的是FPGA技术,并将其应用于数据中心基础设施的数据转换和处理过程优化中去。这种设计模式类似于DPU架构的设计模式
目前很多家DPU都是用Intel和Xilinx的FPGA实现的。
这种现象反映了数据中心对DPU需求的动态变化与持续演变。
FPGA全球市场在2018年的规模约为60亿美元,在该领域占据重要地位的是Xilinx和Altera两大主要供应商;而其他供应商多为中小型公司。(在2015年时,英特尔以167亿美元的价格收购了另一家FPGA厂商Altera)这一收购使得对其他竞争对手提供的市场空间大大缩减。

老哥早些年,这两家FPGA都使用过,各有千秋。
目前在FPGA领域内发展较为活跃的企业也很多,在市场中占据了一席之地的产品也不少。相比之下,在芯片容量和性能上存在明显不足,并且在EDA工具方面还有待提升。其中一些企业已经基本实现了进口替代,并在EDA工具方面的差距逐渐显现出来。
这里举两个国产FPGA的非典型案例,非常有意思。
在2014年期间,在成功吞并克里米亚后的一段时间内(具体时间未提及),美国实施了严厉的经济制裁政策,并对俄罗斯实施了最为严厉的态度。这一政策导致俄罗斯面临高端FPGA芯片短缺问题。A公司迅速推出了解决方案,并抓住这一机会,在全球市场中占据了重要地位,并实现了可观的利益。
此外, 某个手机品牌手机屏幕采用特殊的编码格式, 这使得在更换屏幕时必须选用该品牌提供的 genuine screen, 其他类型的屏幕无法与之匹配. genuine screens are generally quite expensive. 为了满足维修需求, 某家公司定制了一批超小型 FPGA 卡片, 成功开发了一套高效的解码技术. 这些替代方案不仅种类丰富, 如 LCD 和 LED 等等, 而且在智能手机维修市场备受欢迎.
在这些细分领域,找到了定位,实现了很大的突破,不论是利润还是数量。
如果有数量几十万片,几百万片,甚至更多,做专用芯片更合适。
如果没有那么多数量,需求又不固定,用FPGA更合适。
在芯片设计过程中,其中一项关键环节即为FPGA原型验证。该环节是指将芯片代码用于FPGA原型实现的过程,并显著提升芯片设计迭代的速度。
本文开始说:FPGA特性,就是能够描述芯片电路。
在数字芯片流片之前,采用FPGA将芯片逻辑导入进行等效测试这一过程同样不可或缺
从这个角度看,FPGA和芯片(专用集成电路)从来就不是对立的,
FPGA,万能芯片,从功能上看是万能的,理论上可以实现所有功能。
但是从,PPA上看,性能,功耗,面积(成本),这三个维度来衡量,又是非常受限的。
FPGA也在进化,拓展更多的领域,满足那些变化的市场需求。
也有部分市场需求更为固化,被专用芯片所取代。
万能的芯片,变化的应用。
找到市场定位,解决用户的问题,才能获得一席之地。
FPGA是如此,芯片也是如此。
前辈的文章属实的干货满满,感恩的心
本文来自:[《FPGA芯片的“本质”是什么?》]
