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

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

前言

讲述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
begin
a = 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;
end initial begin
$fsdbDumpfile("test.fsdb");
$fsdbDumpvars();
end carry_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的学习,网上资料也比较多,

开发板是必须的,

一口君也多次强调,

购买开发板,第一要关注的不是价格,

也是关注采用的芯片是不是最新的,

最重要的是资料够不够全面

下面推荐几款正点原子的FPGA开发板,

学习的视频资料还是比较全面的,

视频资料和实例源码都有。

如果大家有需要可以加我微信:yikoupeng,

领取全场9折折扣券。

什么是FPGA?为什么FPGA会如此重要?的更多相关文章

  1. 如何学习FPGA?FPGA学习必备的基础知识

    如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA   基础知识       FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...

  2. FPGA - 认识FPGA

    一.何为FPGA? FPGA,英文全拼:Field-Programmable Gate Array 现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集 ...

  3. FPGA的引脚VCCINT 、VCCIO VCCA

    首先是看到FPGA在配置的时候有三种不同的电VCCINT .VCCIO VCCA,于是就查了下有什么不同: FPGA一般会有许多引脚,那它们都有什么用呢? VCCINT为施加于 FPGA 内核逻辑的电 ...

  4. FPGA与simulink联合实时环路系列——实验一 测试

    实验一 测试 实验内容 在simulink创建测试模块,通过测试模块产生信号,再传送到FPGA,FPGA读出后再将信号无处理传送回simulink进行显示.由此来测试整个硬件在环的功能是否正常,并且熟 ...

  5. 谈谈我对DSP和FPGA的看法

    1.DSP 在DSP里,你是一个软件设计者,硬件已经完全固化,你所要做的,就是在这个固定的硬件平台实现算法改进与优化, DSP的关键优势在于能够运行多种算法的灵活性: 2.FPGA 对于FPGA来说, ...

  6. CPLD VS FPGA

    FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的 ...

  7. 【原创】MIPS·Verilog·FPGA

    时至今日,终于将全部的计划55条MIPS指令在FPGA上全部验证完毕,通过这近一个月的不断的修改调试.修改调试,我对整个流程对MIPS有了深刻的体会和认识.借着刚刚现阶段任务的兴奋和短暂的空闲时间,将 ...

  8. 《那些年,我们拿下FPGA》做笔记

    spld.cpld和fpga等可不管什么样的逻辑是大自然来实现.任何逻辑可以由多项式来表示(要么逼关闭).比多项式乘法和处理操作仅此而已. 而就.您可以在门线上用.或门添加剂. fpga扩展架构SOP ...

  9. FPGA计算3行同列数据之和

    实验:FPGA计算3行同列数据之和 实验要求:PC机通过串口发送3行数据(一行有56个数据,3行共有56*3=168个数据)给FPGA,FPGA计算3行同一列数据的和,并将结果通过串口返回给上位机. ...

  10. 基于FPGA的Uart接收图像数据至VGA显示

    系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...

随机推荐

  1. 自定义U盘图标

    有没有想过你可以自定义U盘的图标 我才不想用这么Low的图标: 我的图标是这样的: 不好意思,本人叫郭飞,嘻嘻... 下面给出教程: 1.U盘里新建文件autorun.inf,并用记事本打开进行编辑 ...

  2. Android自动化无障碍服务开源库-Assists v3.0.0

    Assists v3.0.0 Android无障碍服务(AccessibilityService)开发框架,快速开发复杂自动化任务.远程协助.监听等 Android无障碍服务能做什么 利用Androi ...

  3. adb连接安卓设备失败failed to start daemon

    adb连接安卓设备失败failed to start daemon Reference:https://blog.csdn.net/whshuo2010/article/details/5109449 ...

  4. centos如何统计磁盘使用总量,以及cpu使用率

    剩余硬盘容量 T: df | awk '{print $4}' |sed 's/Available//g' |sed '/^\s*$/d' | awk '{sum+=$1} END {print su ...

  5. Springboot整合Apollo

    一.Apollo作用 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关.参数的配置.服务器的地址-- 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境.分集群管理配置,完善 ...

  6. Power BI实用技巧:轻松打造专业级甘特图

    Power BI实用技巧:轻松打造专业级甘特图 大家好,今天我们要一起探索Power BI中一个既实用又强大的功能--制作甘特图.甘特图以其直观展示项目时间线和任务进度的特点,在项目管理中扮演着重要角 ...

  7. 解决方案 | 笔记本电脑能连上WIFI,但是无Internet显示地球图标,怎么回事?(win10)

    一.背景 任务栏托盘区显示地球图标,但是实际上可以上网. 疑难诊断一般是这种情况: 二.可能的有效解决方案 0 方案0:使用360断网急救箱傻瓜式修复 个人制作 | 360断网急救箱新版-2.0版单文 ...

  8. IstioCon 回顾 | 网易数帆的 Istio 推送性能优化经验

    在 IstioCon2022 上,网易数帆资深架构师方志恒从企业生产落地实践的视角分享了多年 Istio 实践经验,介绍了 Istio 数据模型,xDS 和 Istio 推送的关系,网易数帆遇到的性能 ...

  9. log4cpp的安装及使用

    目录 前言 安装 使用 示例代码 配置文件 编译链接 输出 前言 本文的操作均在ubuntu20.04下进行 安装 本文仅介绍从源码编译安装log4cpp的过程. ①在开始编译前,首先要确保系统中安装 ...

  10. 在Django中查找重复项目

    在Django中查找重复项目通常涉及使用查询集(QuerySet)和模型(Model).假设你有一个模型,比如Item,你想查找其中重复的项目,可以通过以下步骤来实现: 确定重复的标准: 首先需要确定 ...