CPU、GPU、FPGA三者能力相加就是芯片的未来!

很多粉丝问我,嵌入式方向中的FPGA怎么样?收入如何?

前言


这个时候,一定会有抬杠青年说,我见过国内生产的FPGA芯片,还用过呢。【通常遇到这一类质疑声,我一般都会说:你是对的!】

后来*****************************************************

要知道CPU、GPU、FPGA三者能力相加就是芯片的未来!

FPGA门槛之高在芯片行业里无出其右。

FPGA是一个本领群集型的行业,没有坚实的本领功底,很难造成有角逐力的产物。

好了,我们来介绍下到底什么是FPGA吧!

一、什么是FPGA?

FPGA 是一种硬件可重构的体系结构。它的英文全称是Field Programmable Gate Array,中文名是现场可编程门阵列

FPGA就是一个可以通过编程来改变内部结构的芯片,FPGA常年来被用作专用芯片(ASIC)的小批量替代品,

同时也在微软、百度等公司的数据中心大规模部署,以同时提供强大的计算能力和足够的灵活性。

在没有FPGA之前,要想实现一个新计算机体架构的设计想法,

必须要开发一个ASIC作为原型,在面板上安装很多个体积庞大的IC。

但是,与这些需要投入巨大成本和精力的方式不同,一旦用户创建了具有多个FPGA的原型板,就可以立即运行您设计的新架构。

而且,修正和更改规格也变得轻松简单。

要知道、流片的价格可不低!

因此,许多新的架构应运而生因此,对可重构处理器的研究和对新FPGA架构的研究也开始蓬勃发展,

在此之后,FPGA使用灵活,适用性强的特征在通信/图像处理领域也大获好评,并将其应用于路由器等通信网络的各种设备中。

与ASIC的概念截然相反,FPGA的概念是在短时间能以低成本让用户得到想要的逻辑

赛灵思Xilinx公司

可编程FPGA技术于上个世纪80年代初由美国赛灵思Xilinx公司发明。

Xilinx于1985年首次推出商业化产品“XC2000”。

近40年来,先后有超过60家以上的公司从事过FPGA技术与产品的研发,

其中包括Intel、IBM、AMD、TI、GE、AT&T、摩托罗拉、朗讯、三星、东芝、飞利浦等实力雄厚的大公司,

但绝大多数在耗费了上亿美元后功亏一篑!

欧洲、日本、韩国、等经济强国和中国台湾等地区都尚未真正掌握其核心技术。

二、FPGA的应用场景

FPGA是集成电路大产业中的小领域,5G和AI为行业增长提供确定性,国产替代叠加行业增长,国产FPGA市场腾飞在即。

全球FPGA市场规模走势及未来预测:

借助5G、自动驾驶、AI,FPGA需求还在逐步增大,未来空间还非常巨大。

1,通信领域。

通信领域需要高速的通信协议处理方式,另一方面通信协议随时都在修改,不适合做成专门的芯片,所以能够灵活改变的功能的FPGA就成了首选

电信行业一直大量使用FPGA。电信标准不断变化,建造电信设备非常困难,因此首先提供电信解决方案的公司往往会占领最大的市场份额。由于ASIC需要花费很长时间才能制造,因此FPGA提供了捷径的机会。最初的电信设备版本开始采用FPGA,这引发了FPGA价格冲突。尽管FPGA的价格与ASIC仿真市场无关紧要,但电信芯片的价格却很重要。许多年前,AT&T和朗讯制造了自己的FPGA,称为ORCA(优化的可重配置单元阵列),但就硅片的速度或尺寸而言,它们与Xilinx或Altera不具有竞争优势。

2,算法领域。

FPGA对于复杂信号的处理性很强,可以处理多维信号。

3,嵌入式领域。

利用FPGA构建一个嵌入式的底层环境,然后在此之上编写一些嵌入式软件,事务性的操作更加繁杂一些,对FPGA的操作较少。

4,在安防监控领域

目前CPU很难做到多通道处理和只能检测分析,但是加上FPGA之后就可以轻松解决了,尤其在图形算法领域有得天独厚的优势。

5,在工业自动化领域

FPGA可以做到多通道的马达控制,目前马达电力消耗占据全球能源消耗的大头,在节能环保的趋势下,未来各类精准控制马达得以采用,一片FPGA就可以控制大量的马达。

三、公司

FPGA多年来被四大巨头Xilinx(赛灵思)、Altera(阿尔特拉)、Lattice(莱迪思)、Microsemi(美高森美)垄断。

还有一些小公司勉强在夹缝中生存。

其中Xilinx(赛灵思)是全球领先的可编程逻辑完整解决方案的供应商。
Xilinx研发、制造并销售范围广泛的高级集成电路、软件设计工具以及作为预定义系统级功能的IP(Intellectual Property)核。

国外三巨头占据90%全球市场,国产厂商暂时落后。

FPGA市场呈现双寡头垄断格局,Xilinx和Altera分别占据全球市场56%和31%,

在中国FPGA市场中,占比也高达52%和28%,

由于技术、资金、人才上的壁垒及FPGA量产带来的规模经济,行业领导者地位较为稳定。

国产厂商目前在中国市场占比约4%,未来随着国产厂商技术突破,

FPGA领域国产替代或将是百亿级的机会,替代空间广阔。

Altera目前已被Intel收购,AMD正在收购赛灵思,预计2021年底完成收购。


我国FPGA公司

  • 1、京微齐力:二次创业,瞄准AI云边端
  • 2、上海遨格芯:从编译软件切入生态链
  • 3、广东高云:28nm中高密度FPGA
  • 4、深圳紫光同创:高性能FPGA已量产商用
  • 5、西安智多晶:小米为第四大股东
  • 6、上海安路科技:28nm今年批量供应
  • 7、成都华微科技:出身国家“909”工程
  • 8、上海复旦微电子:超大规模亿门级FPGA

五、IP核

FPGA有个最重要的概念就是IP核。

IP(Intelligent Property) 核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。

如果还不理解,你就当他是一个软件模块,或者是一个积木的部件。

比如赛灵思已经基于FPGA设计好了UDP 核、PCIE xDMA 核、UART 核,我们只需要把人家的核添加到我们工程中,那么就相当于与我们的板子已经支持了这个功能。

对于FPGA 开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占用率就越高。

一句话:IP核很值钱!

六、语言和举例

talk is cheap,show you code!

下面我们举一个例子来讲解

下面我们用verilog实现超前进位加法器:

例1:超前进位信号的产生原理

ab = 1 --> co = 1
a + b = 1,且ci = 1 --> co =1
两位多位数中第i位相加产生的进位输出co(i)可以表示位coi=aibi+(ai+bi)(cii)
从全加器的真值表写出第i位和s(i)的逻辑式:
si=aibi′cii′+ai′bicii′+ai′bi′cii+(ai+bi)cii
上式变换位异或函数位:
si=ai⊕bi⊕cii

代码:

module carry_look_aheadadder(output     [3:0]   s,output             co,input      [3:0]   a,input      [3:0]   b,input              ci);
wire  [3:0]    co_tmp;
wire  [3:0]    cin;assign  cin[3:0]  = {co_tmp[2:0],ci};//计算中间进位
assign  co_tmp[0] = a[0]&b[0] || (a[0] || b[0])&(cin[0]);
assign  co_tmp[1] = a[1]&b[1] || (a[1] || b[1])&(cin[1]);
assign  co_tmp[2] = a[2]&b[2] || (a[2] || b[2])&(cin[2]);
assign  co_tmp[3] = a[3]&b[3] || (a[3] || b[3])&(cin[3]);//计算和
assign s[0] = a[0] ^ b[0] ^ cin[0];
assign s[1] = a[1] ^ b[1] ^ cin[1];
assign s[2] = a[2] ^ b[2] ^ cin[2];
assign s[3] = a[3] ^ b[3] ^ cin[3];assign co = co_tmp[3];
endmodule
module carry_look_aheadadder_tb;
wire      [3:0]       s;
wire                  co;
reg       [3:0]       a;
reg       [3:0]       b;
reg                   ci;initial
begina = 4'b0000; b = 4'b0000; ci = 0; #10   a = 4'b1111; b = 4'b1111; ci = 0; #10   a = 4'b1100; b = 4'b1001; ci = 0; #10   a = 4'b0111; b = 4'b0110; ci = 0; #10   a = 4'b0101; b = 4'b0101; ci = 1; #10   a = 4'b1110; b = 4'b1001; ci = 1; #10   a = 4'b0010; b = 4'b0110; ci = 1; #10   a = 4'b0110; b = 4'b1100; ci = 1; #10   $finish;
endinitial begin$fsdbDumpfile("test.fsdb");$fsdbDumpvars();
endcarry_look_aheadadder u_carry_look_aheadadder(.s(s),.co(co),.a(a),.b(b),.ci(ci));endmodule

结果:

可以看到,这个和一般的高级语言差别比较大。

学习FPGA必须有过硬的硬件电路基础。

例2:

上述为lattice的一款FPGA架构,你可以把它想象成一块放满电子元件的硬件电路板,图中“电路板”上的元件有IIC和SPI硬核接口“器件”,有NVCM程序存储“器件”,有RAM数据存储“器件”,还有最小单元的LUT(查找表)器件。

一般FPGA工程师会使用硬件描述语言Verilog或者VHDL对FPGA进行“编程”,之后,再经过厂家提供的FPGA开发工具(Diamond或Radiant、vivado)的综合、布局、布线,会产生bit文件或bin文件。

如果工程师将最终产生的bit文件或bin文件下载到FPGA中,就相当于一位硬件工程师,在FPGA芯片这块已经放置了“元件”的“电路板”上,进行了布线操作。(也就是把毫无关联的与器件,用铜线连接起来)

下载程序后的FPGA,我们就不能简单称之为“电路板”了。

举个例子,FPGA实现的功能是SPI转并口,那么这块FPGA就可以称为“spi接口转换板”。

当然,FPGA和“电路板”终究是不同的,FPGA可以进行重复编程,相当于一块可以反复布线的电路板。

七、为什么效率会如此之高?

1. FPGA与GPU的区别本质上是体系结构的区别

CPU、GPU 都属于冯·诺依曼结构,指令译码执行、共享内存。

FPGA 本质上是无指令、无需共享内存的体系结构。

  1. CPU与FPGA区别之(指令):
    CPU结构——有指令:
    冯氏结构中,由于执行单元(如 CPU 核)可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑。
    由于指令流的控制逻辑复杂,不可能有太多条独立的指令流,
    因此 GPU 使用 SIMD(单指令流多数据流)来让多个执行单元以同样的步调处理不同的数据,CPU 也支持 SIMD 指令。
    FPGA结构——无需指令:
    而 FPGA 每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令。

  2. CPU与FPGA区别之(内存)
    CPU结构——仲裁与共享内存:
    冯氏结构中使用内存有两种作用。一是保存状态,二是在执行单元间通信。
    由于内存是共享的,就需要做访问仲裁;
    为了利用访问局部性,每个执行单元有一个私有的缓存,这就要维持执行部件间缓存的一致性。

FPGA结构——无需仲裁与共享内存:
对于保存状态的需求,FPGA 中的寄存器和片上内存(BRAM)是属于各自的控制逻辑的,无需不必要的仲裁和缓存。
对于通信的需求,FPGA 每个逻辑单元与周围逻辑单元的连接在重编程(烧写)时就已经确定,并不需要通过共享内存来通信。

FPGA 同时拥有流水线并行和数据并行,而 GPU 几乎只有数据并行(流水线深度受限)。

  1. FPGA流水线与数据并行处理:
    例如:处理一个数据包有 10 个步骤,FPGA 可以搭建一个 10 级流水线,流水线的不同级在处理不同的数据包,每个数据包流经 10 级之后处理完成。每处理完成一个数据包,就能马上输出。

  2. GPU数据并行处理:
    而 GPU 的数据并行方法是做 10 个计算单元,每个计算单元也在处理不同的数据包,

然而所有的计算单元必须按照统一的步调,做相同的事情(SIMD,Single Instruction Multiple Data)。

这就要求 10 个数据包必须一起输入、一起输出,输入输出的延迟增加了。

总结一句话,很多算法如果用纯软件实现,需要很多条指令才能完成,
如果用FPGA,只需要在有限个时钟周期即可完成,速度快的不是一点半腥。

八、收入

FPGA军品使用非常广泛,基本上只要涉及无线通信的产品都会涉及到FPGA开发。

尤其在高校里,应用非常广,
这个领域,特别容易发论文(博士论文)

还有一些其他领域都是些小公司,工控机器人,3d成像,裸眼3d公司,led拼接屏公司,

通信领域用的比较多,还有些大数据的,比如说腾讯和百度也有类似的岗位做数据挖掘

一口君随手截取了某APP发布的南京、上海、深圳的FPGA岗位信息。

可见收入一般2万到5万,

和互联网寡头动辄上百万年薪,没法比,

和金融收入也没法比,

整体来说中规中矩吧!

对比软件行业属于薪水较低 但是经验积累时间长了,

工资会很高,越老越厉害,后面就比软件工资高了。

一口君曾经和龙芯的技术人员交流过,
他们的中流砥柱都是做FPGA出身的!

什么是FPGA?为什么FPGA会如此重要?相关推荐

  1. 【FPGA】FPGA中的缓冲与驱动那些事

    目录 转载说明 原文精彩片段 缓冲: 驱动: 转载说明 为解决问题而学习才是由效率的,今天重新看了以前的那个项目的Verilog HDL程序,到现在我还没有弄明白细节,只有慢慢蚕食.看到了这样一串程序 ...

  2. Linux下rgmii接口与fpga相连,FPGA控制RGMII接口PHY芯片88E1512网络通信

    一.前言 网络通信中的PHY芯片接口种类有很多,之前接触过GMII接口的PHY芯片RTL8211EG.但GMII接口数量较多,本文使用RGMII接口的88E1512搭建网络通信系统.这类接口总线位宽小 ...

  3. [FPGA]基于FPGA的数字跑表

    基于FPGA的数字跑表的设计与实现 一.设计要求 用FPGA设计并实现一个数字跑表,范围为0~59分59.99秒.可以实现数字跑表进行启动.停止计时和显示读数三个操作,可以在数码管上显示读数. 二.设 ...

  4. 【FPGA】FPGA对AD7606进行串行数据采集

    个人笔记.这段时间在用FPGA对AD7606进行数据采集,现在把检测过程和遇到的问题记录一下,方便以后避坑.文章最后有相关资料链接. 1.AD7606概述 AD7606是16位,8通道同步采集模数数据 ...

  5. 【安路FPGA】FPGA开发日记(一)

    一.开发环境的安装 首先去安路官网下载安装包工具与资料下载-国产FPGA创新者 - 安路科技 下载后解压点击安装包直接傻瓜式安装即可 备注:安装后无法打开或者缺文件等情况是安路安装包不包含一些C++库 ...

  6. FPGA技术——FPGA的灵魂(FSM)你悟了吗?

    文章目录 前言 一.FSM是什么 ? 1.概念 2.要素 状态机组成的六个要素 状态机工作的四个要素 3.分类 二.如何设计FSM ? 1.状态抽象与转换 2.状态化简 3.状态编码 4.编程实现 三 ...

  7. 【FPGA】FPGA的介绍及入门

    文章目录 FPGA应用场景 一.FPGA的工作原理 二.FPGA的编程方式 .FPGA开发流程 三.FPGA设计方法 1.功能定义 2.设计输入 3.功能仿真 4.综合优化 五.综合后仿真 六.布局布 ...

  8. 如何学习FPGA,FPGA学习教程学习经验

    队长 路飞的电子设计宝藏 4月16日 一.入门首先要掌握HDL(HDL=verilog+VHDL). 第一句话是:还没学数电的先学数电.然后你可以选择verilog或者VHDL,有C语言基础的,建议选 ...

  9. FPGA学习---FPGA练习与解答

    FPGA练习与解答 练习题目如下,可以练习一下,后面是我做的,欢迎指出错误~ 最后面是可能有用的一些总结,这篇文章可能有用 FPGA学习-数电及verilog知识补充 第一阶段 1.设计4位全加器. ...

  10. FPGA - 基于FPGA的HDMI显示

    写在前面 HDMI接口很早之前就想调试了,由于没有时间,就拖到了现在,而且毕业设计也是和视频处理系统有关,就趁这个机会把这个接口调试下. 开发环境 vivado 18.3 pynq - z2 HDMI ...

最新文章

  1. Cisco ××× 完全配置指南-连载-IOS ×××阶段2连接详解
  2. 关卡设计快速入门_7. 自己来!
  3. 对象key值为数字时的处理
  4. 03_Android项目中读写文本文件的代码
  5. 【Spring MVC】 maven pom.xml 错误: Cannot upgrade/downgrade to Dynamic Web Module 3.0 facet.
  6. 文本分类实战技巧(tricks)汇总
  7. pythontkinter做计算器_Python Tkinter实现简易计算器功能
  8. PowerDesigner的基本使用
  9. ipop映射到ftp服务器,设备作为FTP客户端进行文件传输-IPOP
  10. Qt PDF预览功能实现汇总
  11. 2020年大学生编程比赛---ACM、蓝桥杯、天梯赛
  12. 演讲者模式投影到幕布也看到备注_PPT制作技巧:如何实现ppt放映不同界面(演讲者模式)?...
  13. 3套鱼塘合作引流话术模板?
  14. c语言人名首字母大写,关于字符串:如何在C中大写名字和姓氏的首字母?
  15. java 变量的命名
  16. Ubuntu 安装微信客户端
  17. Linux 系统结构详解
  18. win10主题更换_利用termuxapi手机定时更换网络随机壁纸;免费申请小米收款宝
  19. 计算机科学导论(5):计算机网络
  20. C#基于开源地图GMap的开发示例

热门文章

  1. Android bug篇(一) design editor is unavailable until after a successful project sync
  2. 高光谱吉林一号硬盘记录
  3. windows下openvc开发环境
  4. 用javascript复制地址
  5. HDFS(数据存储)
  6. 【python数据分析】将爬取的数据保存为csv格式
  7. 熔断降级与限流在开源SpringBoot/SpringCloud微服务框架的最佳实践
  8. Python获取当前时间的上一年,上一月,上一日
  9. 智能物流,让物流变得更加智能和高效
  10. Acwing---1227.分巧克力