当前位置:数据分析 > 什么是FPGA?为什么FPGA如此重要?

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

  • 发布:2023-10-01 23:16

很多粉丝问我,嵌入式方向的FPGA是什么样的?收入如何? 前言 在说FPGA之前,我们先来说说当年中兴通讯被制裁的问题。 美国前总统特朗普曾发布禁令,禁止任何美国或外国公司向中兴通讯出售FPGA芯片,因为中兴通讯违反了美国的某项法规。​ 这时候肯定会有一些嚣张的年轻人说,我见过国产的FPGA芯片,甚至还用过。 【一般遇到这种疑问,我通常会说:你说得对!】 后来中兴通讯无奈只能妥协。美国派人到中兴通讯并签署了一些协议。最终恢复了原来的买卖关系。 要知道CPU、GPU、FPGA的综合能力才是芯片的未来! FPGA的门槛在芯片行业是无与伦比的。 FPGA是一个技术密集型产业。没有扎实的技术基础,就很难生产出有竞争力的产品。 好了,我们先介绍一下什么是FPGA! 1.什么是FPGA? FPGA 是一种硬件可重构架构。其英文全称是Field Programmable Gate Array,中文名称是Field Programmable Gate Array。 FPGA是一种可以通过编程改变其内部结构的芯片。多年来,FPGA 一直被用作专用芯片 (ASIC) 的小批量替代品。 同时也在微软、百度等公司的数据中心大规模部署,在提供强大计算能力的同时,也提供足够的灵活性。 在没有FPGA之前,如果想实现一种新的计算机架构的设计思想, 必须将 ASIC 开发为原型,并且必须在面板上安装许多笨重的 IC。 然而,与这些需要投入大量成本和精力的方法不同,一旦用户创建了具有多个 FPGA 的原型板,您设计的新架构就可以立即运行。 此外,修改和更改规格非常简单。 要知道,流片的价格可不低啊! 因此,出现了许多新的架构。因此,可重构处理器的研究和新型FPGA架构的研究也开始蓬勃发展。 此后,FPGA也因其使用灵活、适用性强而在通信/图像处理领域备受好评,并被应用于路由器等通信网络中的各种设备中。 与ASIC的概念完全相反,FPGA的概念是让用户在短时间内以低成本获得想要的逻辑。 赛灵思 可编程FPGA技术是美国Xilinx公司在20世纪80年代初发明的。 Xilinx于1985年首次推出商业产品“XC2000”。 40年来,已有60多家公司从事FPGA技术和产品的研发。其中包括英特尔、IBM、AMD、TI、GE、AT&T、摩托罗拉、朗讯、三星、东芝、飞利浦等实力雄厚的公司。 但大多数花费数亿之后却功亏一篑! 欧洲、日本、韩国等经济强国以及中国台湾等地区尚未真正掌握其核心技术。 2. FPGA的应用场景 FPGA是大集成电路行业中的一个小领域。 5G和人工智能为行业发展提供了确定性。国产替代叠加行业增长,国内FPGA市场即将腾飞。 全球FPGA市场规模趋势及未来预测: 在5G、自动驾驶和AI的帮助下,FPGA的需求还在逐渐增加,未来空间仍然非常巨大。 1.通讯领域 通信领域需要高速的通信协议处理方法。另一方面,通信协议不断修改,不适合制作专用芯片。因此,功能灵活变化的FPGA成为首选。 电信行业一直大量使用 FPGA。电信标准不断变化,构建电信设备非常困难,因此首先提供电信解决方案的公司往往会占据最大的市场份额。由于 ASIC 的制造时间较长,FPGA 提供了走捷径的机会。第一个版本的电信设备开始使用 FPGA,这引发了 FPGA 的价格冲突。虽然 FPGA 的价格与 ASIC 仿真市场无关,但电信芯片的价格却与之相关。许多年前,AT&T 和 Lucent 制造了自己的 FPGA,称为 ORCA(优化可重构单元阵列),但它们在芯片速度或尺寸方面无法与 Xilinx 或 Altera 竞争。 2. 算法领域 FPGA处理复杂信号的能力很强,可以处理多维信号。 3.嵌入式领域 使用FPGA构建嵌入式底层环境,然后在其上编写一些嵌入式软件。事务性操作比较复杂,FPGA上的操作较少。 4、安防监控领域 目前CPU很难进行多路处理且只能进行检测分析,但通过FPGA的加入就可以轻松解决,在图形算法领域具有独特的优势。 5、工业自动化领域 FPGA可以实现多路电机控制。目前,电机功耗占全球能源消耗的大部分。在节能环保的趋势下,未来将采用各种类型的精密控制电机,单个FPGA可以控制大量电机。 3. 公司 FPGA多年来一直被Xilinx、Altera、Lattice、Microsemi四大巨头垄断。 也有一些小公司在夹缝中勉强生存。其中,Xilinx是全球领先的完整可编程逻辑解决方案提供商。 Xilinx 开发、制造和销售各种先进集成电路、软件设计工具和作为预定义系统级功能的 IP(知识产权)内核。 国外三大巨头占据全球90%的市场,国内厂商暂时落后。 FPGA市场呈现双寡头格局,Xilinx和Altera分别占据全球市场的56%和31%。 在中国FPGA市场中,这一比例分别高达52%和28%。 由于FPGA量产带来的技术、资金、人才和规模经济等壁垒,行业龙头地位相对稳定。 国内制造商目前约占中国市场的4%。未来,随着国内厂商的技术突破, FPGA领域的国产替代可能是百亿级机会,替代空间广阔。 Altera已被Intel收购,AMD正在收购Xilinx,预计将于2021年底完成。 我国FPGA公司 1、经纬启力:二次创业,瞄准AI云边缘 2、上海奥格信:从编译软件切入生态链 3、广东高云:28nm中高密度FPGA 4、深圳紫光同创:高性能FPGA已量产商用 5、西安智多晶:小米为第四大股东 6、上海安陆科技:28nm今年将批量供货 7、成都华为技术:诞生于国家“909”工程 8、上海复旦微电子:超大规模十亿门FPGA 5.IP核 FPGA最重要的概念是IP核。 IP(Intelligent Property)核是具有知识产权核的集成电路核的总称。它是经过反复验证的具有特定功能的宏模块。它与芯片制造工艺无关,可以移植到不同的半导体工艺上。 如果你还是不明白,就把它想象成一个软件模块或者构建块的一个组件。 例如,Xilinx基于FPGA设计了UDP核、PCIE xDMA核、UART核。我们只需要把他们的核心添加到我们的项目中,这意味着我们的板子已经支持这个功能了。 对于FPGA开发软件来说,提供的IP核越丰富,用户设计就越方便,市场占有率就越高。 一句话:IP核非常有价值! 6. 语言和例子 空谈很便宜,给你看代码! 我们举个例子来解释一下 下面我们使用verilog来实现一个进位超前加法器: 例1:进位信号的产生原理ab = 1 a + b = 1,ci = 1 两位多位数中第 i 位相加产生的进位输出 co(i) 可表示位 coi=aibi+(ai+bi )(cii) 由全加器真值表写出第 i 位和 s(i) 的逻辑表达式: si=aibi′cii′+ai′bicii′+ai′bi′cii+(ai+bi)cii上式对XOR函数的位进行变换:si=ai⊕bi⊕cii 代码:module Carry_look_aheadadder(                                                                                                                                                                           输入[3:0] a,输入[3:0] b,输入ci                                                                                                                                                                                                                                     to allocate cin[3:0] = {co_tmp[2:0],ci}; //计算中间进位 allocate co_tmp[0 ] = a[0]&b[0] || (a[0] || b[0 ])&(cin[0]); 赋值 co_tmp[1] = a[1]&b[1] || (a [1] || b[1])&(cin[1]); 赋值 co_tmp[2 ] = a[2]&b[2] || (a[2] || b[2])&(cin[ 2]); allocate co_tmp[3] = a[3]&b[3] || (a [3] || b[3])&(cin[3]); //计算和 allocate s[0] = a[0] ^ b[0] ^ cin[0]; 赋值 s[1] = a [1] ^ b[1] ^ cin[1]; 赋值 s[2] = a[2] ^ b[2 ] ^ cin[2]; 赋值 s[3] = a[3] ^ b[3] ^ cin[3]; 赋值 co = co_tmp[3]; endmodule模块carry_look_aheadadder_tb;线      [3:0]       s;电线                  公司; reg       [3:0]       a; reg       [3:0]       b; reg                   ci;初始开始           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   $完成;结束初始开始$fsdbDumpfile("test.fsdb"); $fsdbDumpvars();结束  carry_look_aheadadder u_carry_look_aheadadder(                                              .s(s),                                                          .co(co),                                               .a(a),                                                 .b(b),                                               .ci(ci));最终模块结果: 正如你所看到的,这与普通的高级语言有很大不同。 学习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称为“电路板”。 例如,如果FPGA实现的功能是将SPI转换为并口,那么这块FPGA就可以称为“spi接口转换板”。 当然,FPGA和“电路板”毕竟是不同的。 FPGA可以重复编程,相当于一块可以重复布线的电路板。 7、为什么效率那么高? 1、FPGA和GPU的区别本质上是架构的区别。 CPU和GPU都属于冯诺依曼结构,具有指令解码和执行以及共享内存。 FPGA 本质上是无指令、无共享内存的架构。 CPU和FPGA(指令)的区别: CPU结构——指令:在Feng结构中,由于执行单元(如CPU核)可能执行任意指令,因此需要指令存储器、译码器以及各种运算单元。指示。 、分支跳转处理逻辑。由于指令流的控制逻辑复杂,不可能有太多独立的指令流。因此,GPU使用SIMD(单指令流多数据流)来允许多个执行单元以相同的速度处理不同的数据。 CPU还支持SIMD。操作说明。 FPGA结构——无需指令:FPGA各逻辑单元的功能在重编程(烧录)时已确定,无需指令。CPU和FPGA的区别(内存) CPU结构——仲裁和共享内存: 冯氏结构中内存的使用有两个作用。一是保存状态,二是执行单元之间进行通信。由于内存是共享的,所以需要访问仲裁;为了利用访问局部性,每个执行单元都有一个私有缓存,这需要维护执行组件之间的缓存一致性。 FPGA结构——无需仲裁和共享内存:出于保存状态的需要,FPGA中的寄存器和片上存储器(BRAM)属于自己的控制逻辑,无需不必要的仲裁和缓存。关于通信需求,FPGA的各个逻辑单元与周围逻辑单元之间的连接在重编程(烧录)时已经确定,不需要通过共享内存进行通信。 FPGA同时具有流水线并行性和数据并行性,而GPU几乎只有数据并行性(流水线深度有限)。 FPGA流水线和数据并行处理:例如处理一个数据包有10步。 FPGA可以构建10级流水线。管道的不同阶段处理不同的数据包。每个数据包经过10个阶段后进行处理。每处理完一个数据包,就可以立即输出。 GPU数据并行处理:GPU的数据并行方式是做10个计算单元,每个计算单元也处理不同的数据包。 然而,所有计算单元必须以统一的速度执行相同的操作(SIMD,单指令多数据)。 这就要求10个数据包必须一起输入输出,输入输出延迟增加。 综上所述,很多算法如果用纯软件实现,将需要很多指令才能完成。如果使用FPGA,它们只需要在有限数量的时钟周期内完成,这甚至不算快。 8. 收入 FPGA军工产品应用广泛,基本上凡是涉及无线通信的产品都会涉及FPGA开发。 尤其是在高等院校中,被广泛使用。在这个领域,发表论文(博士论文)特别容易。 还有一些其他领域的小公司,比如工控机器人、3D成像、裸眼3D公司、LED拼接屏公司, 主要用在通信领域,也有一些用在大数据领域。例如,腾讯和百度在数据挖掘方面也有类似的定位。 依依君随意截取了南京、上海、深圳某APP发布的FPGA招聘信息。 可见收入一般在2万到5万。 这和动辄几百万的互联网寡头的年薪是无法比拟的。 这是经济收入无法比拟的。 总体来说还是比较满意的! 相比软件行业,薪资较低,但需要较长时间积累经验。 工资会很高。你年纪越大,你就会越好。以后工资会比软件高。易一君曾与龙芯的技术人员交流,发现他们的中流砥柱都是FPGA出身! 9.如何学习FPGA 网上也有很多学习FPGA的资料。 需要开发板。 依依君也多次强调, 购买开发板时,首先要关注的不是价格。 还要注意所使用的芯片是否是最新的。 最重要的是信息是否足够全面。 以下是 Atom 推荐的几款 FPGA 开发板: 学习的视频资料还是比较全面的。 提供视频材料和示例源代码。 本文转载自微信公众号《一口Linux》

相关文章