大话FPGA-“万能的芯片?”

原创 歪睿老哥 2021-10-17 08:30


说起FPGA之前,先提个问题。


芯片的本质是什么?


老哥认为芯片的本质是电路!


简单来说,数字芯片,不论多复杂,其底层就是 与,或,非的组合。


这个是某宝上可以买到的世界上简单的芯片之一, 74LS系列,很便宜,两毛钱;

               

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

                        



上图中一共4个二输入与非门。


而CPU或者GPU等大芯片,有几千万门甚至上亿门的电路。


但是如果我们深入到大芯片的底层,就会发现这些大芯片也是一个与非门,或非门,等逻辑门组成的。


这就是电路,CPU和GPU也是一种电路的组织形式。


无论多复杂的芯片,都是芯片设计工程师通过硬件描述语言(HDL)来描述电路。


看起来像是和软件工程师一样,都在敲代码,在编程,实际上是在搭电路。


EDA工具把语言转换成电路,最终得出这个版图(GDS)。然后这个版本提交给厂家生产。流片厂家把GDS变成硅。封装厂家完成硅 (DIE)到 CHIP的封装。


这个过程和设计PCB电路基本上是非常相似的。


都是电路转换成PCB 到厂家制版。


我们所说的卡脖子,目前看,主要是制造环节,也就是从版图到硅的阶段。其他也有,但是这个问题这个有时间找专题另说。


今天主要说一下 ,设计一款芯片研发最大的问题是啥?


有两点是大家公认的。


第一,研发迭代周期长:


大芯片花费了一年或者2年研制,这个很常见。或者因为功能缺陷,或者市场变化,最终没有卖出去,又要重新迭代。这个就是非常恐怖,小的芯片公司,因为芯片失败,钱花光,直接一波流带走也是很常见的。


第二,芯片投入高:


芯片研发包括流片成本,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 这个电路举例:


一个16x1的RAM,这个RAM的每一bit都可以编程为0或1。


这个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。


大家可以试一下:通过配置16bitRAM 的值,可以实现A,B,C,D四个输入的任何逻辑操作。


FPGA就是利用了这个转化,具备了描述任何电路的能力。


上图这个结构在FPGA中有一个专有名词,叫做LUT ,lookup table( 查找表)。


LUT就构成了所有FPGA的最基本的单元。


LUT只能实现数字组合逻辑,所以又添加了一个寄存器flipflop (ff),可以实现数据的锁存;


如下图所示:LUT+寄存器构成了现代FPGA基本结构。


FPGA的基本结构,就是依靠如此简单的电路实现了无比复杂的逻辑。


这个包括LUT和FF的基本结构,这两个合并成为一个基本的逻辑单元(LOGIC BLOCK)。



这种能够实现ABCD四个输入计算的LUT的叫做4输入LUT,此外还有5输入,6输入等等变种。


万变不离其宗。


这种结构,从FPGA诞生以来,就没有怎么变过。     


这个电路,也可以看作是一个最小的FPGA。


现在能实现一个功能的芯片,少则几万门,多则几千万门,上亿门。


单纯靠这个电路实现,这就是开玩笑了。


那么就需要无数的LUT和FF来实现,。


FPGA就实现了一个无数 Logic Block(Logic Block内部就是LUT+FF)的阵列,中间用布线资源连接起来。


把互联和逻辑单元结合起来就是一个FPGA芯片,图如下所示。

               


一个典型的FPGA开发流程如下。从HDL(verilog的电路描述语言)到配置文件 bit流


相比一下,专用芯片的开发流程从HDL(verilog的电路描述语言)到硅。这个时间就长多了。

               


这些bit流包括啥?


开头说过了,16bitRAM (LUT)配置为 0000000000000001 , 

则等效F=A&B&C&D;


FPGA最终生成的Bit-stream流,包括 LUT 的配置文件,以及布线资源的配置文件。


到这里,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:功耗分析工具


这些还算是最少的集合,但已经比一个CPU芯片提供给用户GCC编译工具要难多了。


老哥装过某司的EDA工具,这些大小都是十几个G,比windows安装盘还要大。


如果CPU的GCC工具难度是1,FPGA的EDA工具的难度就是10到100。


借用《让子弹飞》里的一段话:


项目成功了,芯片功劳怎么才占7成。


七成是EDA的,芯片也就三成。


就这三成,还要看EDA的脸色。

     

辛辛苦苦半天,做出来芯片,还要看EDA工具的脸色。 


看看EDA都有哪些“脸色”?                          



以上图的布局布线工具为例,看起来就比较复杂。


如果做不好,整个FPGA的利用率极低,还布不通,你说重要不重要。


除了传统的EDA工具,实现HDL,例如verilog这种编程之外,还包括HLS这种高层次综合的描述语言。


               

HLS的引入使软件工程师也能参与到FPGA设计中来,把电路开发屏蔽掉,直接开发软件,这个就更是EDA工具的能力了。


但是,这个本质上,讲高级语言(C,C++)转换成硬件描述语言(HDL),在通过综合工具转换成电路。


好处是,更贴近软件工程师的习惯,缺点就是加了一层转换,带来了效率的损失。


3:FPGA的架构:融合超越

 

文章开始说了,FPGA就是Logic Block,内部主要是(LUT+FF),以及布线资源。


除了这些。


FPGA还有很多硬核IP,也叫做宏单元。


例如PLL,SERDES,RAM等常规IP的。


随着现在芯片的演进。


FPGA内部也集成了很多新的东西。


这些新东西中,比较有特色的就是CPU,在FPGA内部集成了硬核CPU系统,甚至可以运行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更适合做ASSP,配合CPU做专门的运算单元使用,适合专一的大数据量的计算。


FPGA既然是”万能的芯片“,似乎那就可以替代实现所有芯片功能。


是不是可以不研发专用芯片,只用FPGA。


相比专用集成电路:FPGA有三个劣势


1:面积大,成本高:


和专用集成电路(芯片)相比,FPGA由于采用LUT来表征基本逻辑门单元,所以其面积粗略来比是专用电路的10倍,所以其成本简单类比也会高很多。


2:面积大,功耗高:


同样功耗也没有优势,做低功耗设备,例如手持的供电式设备,基本不太可行。


3:运行频率低,计算效率低。


FPGA内部LUT之间,由于其互联较长,导致FPGA的频率相比同工艺下的ASIC也是慢很多。专用电路门与门之间的延迟要小很多。


但是,FPGA优势也很明显。


FPGA最大的优势,就是灵活性高。


用FPGA不用重新流片,节约了NRE成本。


在一些雷达,5G,网络,存储,高性能计算等数据密集型计算领域都有广泛的应用。


特别是需求不明确,量不大,不值得做芯片,或者,需求老在变化,FPGA都是不错的选择。


intel收购后altera后, FPGA的重心变成了数据中心市场,特别是利用FPGA在数据中心加速方面,投入颇大,最新的intel的IPU其中是FPGA技术,用于数据中心基础设施的卸载,也是类似DPU的一种实现。(见上一篇:大话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是如此,芯片也是如此。



后记

“节前写了《大话DPU—从网络到数据》,提到了很多厂家目前用FPGA实现DPU。到底是DPU专用芯片流片实现,还是FPGA实现,这个见仁见智,不论什么方式实现,真正满足用户需求,提供解决方案,能够获得客户认可并规模出货,才是最终解决问题之道。



 欢迎关注:歪睿老哥,如果你觉得本文还不错,欢迎点赞,在看,分享。


往期阅读:

大话DPU—从网络到数据

芯片代工产业简史-创造自己,也创造了客户

“无法破解的芯片”到底是个什么原理?

"乾坤大挪移",FPGA工程师七层技术修炼之道

苹果也来凑热闹,能否补齐RISC-V的短板?

资本宠儿慕容复,芯片创业为什么会失败?

大话手机处理器-世界上最复杂的芯片

日本芯片产业大败局

“硅仙人”Jim Keller的芯片研发封神之道

EDA工具,芯片打工人爱恨交织的宿命

矿机芯片的今天,AI芯片的明天?

云端芯片之战-小乌云还是大风暴

芯片过热?一场芯片供应链的饱和式救援。

“为了这点醋,包了一顿饺子”-AI芯片的落地之道

降低芯片流片失败风险的"七种武器"

芯片设计公司修炼的“四层境界”



歪睿老哥 芯片设计行业老兵,聚焦芯片行业的那些事,唯武侠与芯片不可辜负。
评论
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 45浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 84浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 101浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 105浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 44浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 136浏览
  •         在有电流流过的导线周围会感生出磁场,再用霍尔器件检测由电流感生的磁场,即可测出产生这个磁场的电流的量值。由此就可以构成霍尔电流、电压传感器。因为霍尔器件的输出电压与加在它上面的磁感应强度以及流过其中的工作电流的乘积成比例,是一个具有乘法器功能的器件,并且可与各种逻辑电路直接接口,还可以直接驱动各种性质的负载。因为霍尔器件的应用原理简单,信号处理方便,器件本身又具有一系列的du特优点,所以在变频器中也发挥了非常重要的作用。  &nb
    锦正茂科技 2024-12-10 12:57 76浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 65浏览
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 69浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 68浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 70浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 78浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦