FPGA开发流程遵循ASIC开发的流程,都是集成电路方向,coding使用的编程语言和编程逻辑基本一致,绝大多数电子类硬件产品,能使用FPGA做出来,就能用ASIC做出来,通过两种方式都能实现同样的功能。
但在IC行业,这二者确实也属于两个不同的领域。有很多想要入行、转行IC的同学,都有“选FPGA还是ASIC”的问题。区分概念往往是做选择的前提,所以首先要明确二者的概念。
FPGA全称是Field Programmable Gate Array,中文名叫现场可编程门阵列,但究其本质它仍是芯片的一种。
很多人不清楚FPGA到底算软件还是硬件?其实它介于软硬件之间。如果用它做接口、通信的话,它就偏向硬件;如果用它做算法、控制,那么它就偏向软件。举个例子,FPGA在数字IC领域已经被用于验证RTL代码。相对于仿真器跑仿真,FPGA的运行速度更加接近真实芯片。
ASIC全称是Application Specific Integrated Circuit,是指专用集成电路,就是针对某些特定应用需求、特定用户要求和特定电子系统的需要而开发设计的芯片。
很多人听到ASIC都会下意识和数字IC画等号,但其实不论是数字、模拟还是数模混合,任何定制的芯片都可以称之为ASIC。
FPGA的灵活度高于ASIC。
众所周知芯片流片成本很高,一旦出问题就是流片失败。尤其是大规模的数字芯片,开发过程中需要验证团队花费大量的精力在RTL代码验证上。
FPGA就可以随时改变芯片的功能,哪怕已经制造出来甚至应用在了客户端,依然可以修改电路结构,这样就能很大程度上降低风险和成本。而如果设计本身并不需要太多灵活性的话,FPGA的灵活也许就是一种浪费,也会增加潜在的成本。
FPGA开发时间短。
一般来说对FPGA编程之后就可以直接使用,通常几个月就可以完成开发流程,不需要经过半年甚至一年以上的流片周期。
而ASIC更加复杂,尤其是全定制设计,需要大量的人力物力进行设计开发。与之相应的就是体积小、功耗低…芯片综合性能更抗打。
在两者都是相同的工艺和设计下,FPGA的性能比ASIC有所差距。
因为FPGA内部都是通用的结构,它可以根据需求的不同去实现乘法器、多路选择器等等组合逻辑。而ASIC内部都是固定的结构,乘法器就是乘法器,所以FPGA在结构上的通用性必然导致性能冗余。
成本取决于数量。如果是小批量的,FPGA成本低。如果是大批量的,ASIC成本低。
在使用量小的时候,FPGA是不需要支付几百万甚至几千万的流片成本的(FPGA比较大的成本就是板子),成本也就比较低。当使用量大的时候,使用ASIC反而是更加低成本且高性能的选择。这也就是很多高校的项目都是FPGA的原因之一。
业内规模最大的两家FPGA公司是Xilinx(赛灵思)和Altera(阿尔特拉)。
Altera在2015年就被英特尔收购,Altera这个名字也就很少再被提及了。作为龙头的赛灵思,也在2022年2月成功被AMD收购。不得不说,巨头也难逃被收购的命运。
从前有企业宣传FPGA是“万能芯片”,也有人说FPGA会取代ASIC。现在看,万能和取代肯定是谈不上了,不过FPGA凭借其优势也能在业内有一席之地。
FPGA入行是要更容易一些的。
需要先区分你是做FPGA本身的设计,还是用FPGA进行设计。前者的门槛很高,而且处于卡脖子的状态;后者门槛相对比ASIC要低一点。
但大多数情况下我们所讨论的FPGA都属于后者:只是基于已有的FPGA芯片去做后端排列组合的工作内容,而不是设计制造新的FPGA芯片,毕竟世界上能做这件事的公司屈指可数。
就工程师的实际工作内容来说,FPGA设计和IC设计使用的语言都是Verilog,且设计思想基本相同,开发环境和需要使用的EDA工具有所不同,项目难度和复杂度要看实际的工作要求。
总之,IC设计和FPGA都算是还不错的入行方向。FPGA的难度稍低入门也会快,但会受技术发展的限制,部分的工作内容会被新工具所取代,相对来说也会更快遇到职业瓶颈。
IC设计门槛更高,技术难度要大于FPGA,但就长期职业发展来说是比较有优势的。说简单一些:如果想要入行快,可以选择FPGA。但如果追求更高的天花板,就可以选择IC前端。
如果你对两个岗位还是不知道怎么选择的话,不妨先跟行业的工程师了解一下岗位的学习难度,薪资,就业这些信息,再做抉择。
这里放个入口:IC入行指导