什么是FPGA?为什么FPGA会如此重要?

2023-11-12

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在集成电路行业中位置

全球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出身的!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是
  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • 警告:请求的映像平台 (linux/amd64) 与检测到的主机平台 (linux/arm64/v8) 不匹配

    警告 请求的映像平台 linux amd64 与检测到的主机平台 linux arm64 v8 不匹配 并且未请求特定平台 docker 来自守护程序的错误响应 无法选择具有功能的设备驱动程序 gpu 我在 mac 上尝试运行此命令时遇到此
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array

随机推荐

  • C语言 如何将一个数组a赋给数组b

    采用遍历赋值的方法
  • LVDS接口液晶屏定义(lcd)

    转载于 https blog csdn net linphusen article details 6389032 LVDS接口液晶屏定义 LVDS接口又称RS 644总线接口 20PIN单6定义 1 电源2 电源3 地 4 地 5 R0
  • 丁鹿学堂:前端异步进阶之Rxjs的使用

    响应式编程 Rx 全称Reactivbe Extension 指的是实践响应式编程的一套工具 Rx其实是一个大家庭 针对不同的语言都有适配 最早是微软的c 我们前端关注的是js余元 就是RxJS RxJS 的特点 数据流抽象了很多现实问题
  • pandas 数据类型之 DataFrame

    Python 官网 https www python org 这里 才 python 前沿 可惜是英文原版 所以 我要练习英文阅读 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 老齐教室 自学并不是什么神秘的东西 一个
  • 初涉Rx套餐 之RxBinding(让你的事件流程更清晰)

    转载请注明出处 王亟亟的大牛之路 最近下班回家都在WOW 周末就爆肝 感觉人都要GO DIE了 昨天下午看了看RxBinding相关的功能感觉还是蛮强大的 所提供的API也是相当丰富 基本Rx套餐都是互通的 然后就把之前的Rx例子翻出来重新
  • AE与AO的区别

    在ArcGis9 0之前 ArcObject还不是一个独立的产品 一直捆绑在Desktop产品中 只要你购买了desktop产品中的一个 你就可以使用arcboject开发 从ArcGis9 0开始 ESRI公司推出了ArcGis Engi
  • web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)

    一 什么是web自动化测试 Web自动化测试是指使用自动化工具模拟用户在Web浏览器中执行的操作 通过编写脚本来自动化执行测试用例 以验证Web应用程序的功能 性能和兼容性等方面的质量 其主要目的是降低测试成本和时间 并提高测试效率和准确性
  • 使用selenium启动谷歌Chrome浏览器

    1 首先pip安装selenium pip install selenium 2 下载chromedriver驱动 1 打开自己电脑上的谷歌浏览器 查看版本号 然后chromedriver的版本一定要与Chrome的版本一致 不然下载不对应
  • 格式化并挂载ubi文件系统过程详解

    1 UBI文件系统介绍 1 UBI文件系统是基于MTD子系统的 内核必须要先支持MTD子系统 2 UBI文件系统适用于Nand flash 是可读写的文件系统 2 内核中使能UBI 2 1 使能UBI设备驱动 Location
  • 小问题解决方案

    目录 error CS0246 未能找到类型或命名空间名称 DllImport 是否缺少 using 指令或程序集引用 其他信息 对 PInvoke 函数 useQtDllTest1 useQtDllTest1 Form1 screenSh
  • oracle用户权限

    oracle用户权限 sys 数据库超级用户 必须以sysdba的身份进行登录的 1 创建新用户 create user user name identified by password default tablespace tablesp
  • ChatGPT调研报告:发展到今天这一步,哪个职业最慌?

    ChatGPT的流行 让AIGC受到了空前的关注 AIGC 即 AI Generated Content 是指利用人工智能技术来生成内容 比如AI写作 AI绘画 AI编程 AI语音合成等 就在3月29日 一封来自美国研究机构Future o
  • zabbix 调用api 批量删除主机

    脚本名称 zabbix api py 脚本内容如下 usr bin env python coding utf 8 import json import sys import urllib2 import argparse from url
  • TypeScript中any、unknown、never和void有什么区别?

    any 任意类型的变量 unknown 表示未知类型 unknown与any类似 但使用前必须进行断言或守卫 never 永不存在的值的类型 void 无任何类型 没有类型 用于函数时 never表示函数用于执行不到返回值那一步 抛出异常或
  • 植物图像识别python_python实现图像识别功能

    本文实例为大家分享了python实现图像识别的具体代码 供大家参考 具体内容如下 usr bin env python from PIL import Image import pytesseract url img denggao jpe
  • 什么是IDS?

    1 什么是IDS IDS是 入侵检测系统 intrusion detection system 简称 IDS 是一种对网络传输进行即时监视 在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备 它与其他网络安全设备的不同之处便在于 I
  • Swagger-使用教程(详细)

    Swagger Swagger官网 https swagger io Swagger是一款 RESTful 风格的 Web 服务框架 那么问题来了 什么是RESTful RESTFUL是一种网络应用程序的设计风格和开发方式 基于HTTP 可
  • ComSec HW6 Hash

    11 1 安全 Hash 函数需要具有那些特性 H能用于任何大小的数据分组 H产生定长输出 对任意给定的x H x 要相对易于计算 使得软硬件实现都实际可行 单向性 对任意给定的码y 寻求x使得H x y在计算上不可行 弱抗碰撞性 任意给定
  • Flink学习笔记(3)——Flink部署

    目录 一 Flink 部署 1 1 快速启动一个集群 1 1 1 环境配置 1 1 2 集群启动 1 1 3 向集群提交作业 1 2 部署模式 1 2 1 会话模式 1 2 2 单作业模式 Per Job Mode 1 2 3 应用模式 A
  • 什么是FPGA?为什么FPGA会如此重要?

    CPU GPU FPGA三者能力相加就是芯片的未来 很多粉丝问我 嵌入式方向中的FPGA怎么样 收入如何 前言 这个时候 一定会有抬杠青年说 我见过国内生产的FPGA芯片 还用过呢 通常遇到这一类质疑声 我一般都会说 你是对的 后来 要知道