【CSDN 编者按】随着 AI 芯片在争议中崛起,FPGA(现场可编程门阵列)芯片架构也开始受到关注,但大部分人仍对其保持着知之甚少的状态。作为一种硬件可重构的体系结构,FPGA 在很长一段时间内都被用作专用芯片(ASIC)的小批量替代品。但随着科技的发展,技术提高产品性能要求越来越高,其强大的计算能力及高度灵活性,使其在通信、数据处理等领域得到了日益广泛的应用。本文就将讨论 FPGA 工程师到底都点亮了哪些技能。

这个问题是笔者在知乎上看到的,大家的回答都是“调板子”、“debug”、“硬件实现”等等。作为 FPGA 工程师,笔者看了实在要报以一个礼貌的微笑。

换个角度看,难道其他硬件工程师就不具备调板子、debug、硬件实现的能力了?或者,为什么说这些是专属于 FPGA 工程师的核心竞争力?

这个问题其实可以引申为以下两点:

1. 什么是只有 FPGA 工程师能做的?

2. 作为 FPGA 工程师,我们应该如何培养这些能力?

接下来就是笔者的解答。

什么是只有 FPGA 工程师能做到的

上面提到的一些回答,的确是 FPGA 工程师不可或缺的能力,但总觉得没有说清楚这个问题的本质。

首先给出我的回答:FPGA 工程师最核心的就是全栈能力

这里的全栈,指的是系统级的软硬件全栈能力。它既包括了在系统层面的架构设计、芯片开发的前后端流程,也包括了软件设计的全栈流程,甚至还有后期的项目维护、技术支持、与客户的沟通等软技能。它可以看成是综合多种技能的技能树。

我随手写了一下 FPGA 工程师的全栈技能树,见下图,尽管很不完整,但仍可供大家参考。之前很多人提到的,诸如调试与分析的能力,其实是这个全栈技能树里的一片树叶,或一个分支。

只有 FPGA 工程师能做到一人成团,在短时间内将想法落实到高质量的软硬件系统实现。这是其他系统架构师、ASIC 工程师、单片机工程师、软件工程师等都无法单独完成的。与这些工程师相比,FPGA 工程师有着很强的单兵作战能力。当然,技能树过于庞大也是为什么很多人认为 FPGA 难学的本质原因。

有人会问,为什么其他类型的工程师没有这种全栈能力,或者换句话说,为什么只有 FPGA 工程师才能做到全栈?这和 FPGA 本身的特点有关。

在下图中,我对比了 FPGA 与 ASIC、CPU(或单片机)的特点与主要开发方式和风格。

对于传统的 IC 工程师而言,他们的具体职责可以大致分成前端和后端两部分。前端主要负责逻辑实现,后端负责芯片物理实现。两路人马通常有各自的技能树,需要互相配合才能完成产品级的芯片,这个过程往往很久,而且伴随着巨大的前期投入和风险。

对于单片机或 CPU 工程师而言,更多的是基于给定的单片机架构和 API,使用诸如 C 或 C++ 的高层语言编写应用程序。如果要写出高质量的应用,固然需要了解目标芯片的硬件结构,但并不需要对硬件的逻辑实现有过多了解。虽然基于 CPU 或 MCU 可以灵活实现各种应用,但由于架构限制,在很多诸如人工智能的应用领域里并不能达到很好的性能。

FPGA 很大程度上结合了两者的优点。在硬件方面,FPGA 底层架构固定,因此不需要做太多芯片后端的工作,但仍需要 FPGA 工程师掌握时序优化、面积优化、功耗优化等后端技能。因此一个优秀的 FPGA 工程师凭借自身的前后端与软硬件技能,就可以完成一个完整且质量比较高的 FPGA 项目。

软件方面,FPGA 可以灵活定义 API 与软件架构,并可以通过内置的处理器内核完成软硬件协同开发,这样也能兼顾应用的灵活性。因此,一个优秀的 FPGA 工程师通常也具有优秀的软件编程能力。

在系统层面,FPGA 工程师可以自定义软硬件整体架构,不会像 CPU 或单片机一样存在明显的架构瓶颈,也不会像 ASIC 一样需要考虑过多底层电路单元以及工艺的具体实现。

综上,只有 FPGA 工程师能拥有软硬件系统的全栈能力,这也是 FPGA 工程师的核心竞争力。并且,这种能力可以在工程实践中不断自我丰富和提升。这使得优秀的 FPGA 工程师不需要太过依赖其他人,能够自己或少量人很快完成完整的系统级方案。

现在很多 AI 初创公司选择使用 FPGA 作为硬件平台的主要原因之一,就是看中 FPGA 工程师的全栈能力,使得公司能在较少投入的情况下,取得性能、灵活性、可扩展性等多个方面的良好平衡。

全栈能力是 FPGA 工程师需要的完整技能树。至于很多答友提到的调试和 debug 能力,更多的是在回答这个技能树的技能点分配问题。这就是老石要讲的第二个方面:

作为 FPGA 工程师,我们应该如何培养这些能力

相信很多人会问,你说的这种全栈能力,究竟是不是在画大饼?在实际生活中,到底是不是真的有人能全部精通技能树中的所有分支?我的答案是,虽然很少,但确实有这样的大牛,而且我有幸和他在一个团队里工作。

一般来说,如果一个 FPGA 工程师能在这个 FPGA 技能栈里精通某一项,就可以成为这个领域的大牛和权威。比如,像很多人提到的,如果你特别会调板子,硬件调试能力很强,那你就可以很好的负责项目中的硬件测试环节。再比如,你 RTL 写得很好,或者验证很强,或者对系统架构有很深的理解,你都能在项目里成为不可或缺的人。

但是,笔者所在团队里就有一位带头大哥,可以从系统架构、模块设计、验证、系统整合、FPGA 后端优化、硬件测试、软件开发和调试等全部环节一个人搞定,可以说是点满了技能树上所有的技能点。

这样的人就像阿里的多隆,一个人可以顶一支团队,公司缺他不可。因此如果一个 FPGA 工程师能够获取软硬件的全栈能力,将是团队乃至全公司的最主要竞争能力。

作为一个新人,应该如何培养自己的 FPGA 全栈能力呢?其实,带头大哥的技术功底也并非通过一天练成的,最重要的是时间的积累,不断的钻研以及真正的兴趣。这些道理在任何行业都是一样的。一开始可以先重点突破技能树的某个分支,但最终的目标还是要让整个技能树枝繁叶茂。

此外,工程师需要的软技能也是不可或缺的,例如独立思考的能力、沟通、写作以及良好的英语等等。

希望以上的回答能对各位朋友有所帮助。

作者简介:老石,微信公众号“老石谈芯”主理人,博士毕业于伦敦帝国理工大学电子工程系,现任某知名半导体公司高级FPGA研发工程师,深耕于FPGA的数据中心网络加速、网络功能虚拟化、高速有线网络通信等领域的研发和创新工作。曾经针对FPGA、近似计算、高性能与可重构计算等技术在学术界顶级会议和期刊上发表过多篇研究论文。

声明:本文为作者投稿,版权归其所有。


 热 文 推 荐 

☞ 薪资不如 Java、C,BAT 需求大,揭秘 Python 程序员跳槽现状!

☞ 如何在 JavaScript 面试中过五关斩六将?

☞ 开源图数据库项目 DGraph 的前世今生 | 技术头条

315 后,等待失业的程序员

☞再不编程就老了!05 后比特币专家准备赚个 134,000,000 元!

☞都道业务提升坑大事儿多,但英特尔云方案却说“简单”

麦克阿瑟奖得主Dawn Song:区块链能保密和保护隐私?图样图森破!

☞Pig变飞机?AI为什么这么蠢 | Adversarial Attack

☞教训!学 Python 没找对路到底有多惨?

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

喜欢就点击“在看”吧!

AI 芯片崛起!FPGA 工程师的核心竞争力在哪里?相关推荐

  1. 什么是FPGA工程师的核心竞争力

    这个问题是老石在知乎上看到的,大家的回答都是"调板子"."debug"."硬件实现"等等.作为FPGA工程师,老石看了实在要报以一个礼貌的微 ...

  2. 算法工程师的核心竞争力

    工作以来一直在思考算法工程师这个岗位的核心竞争力,自己的心路历程分为三个阶段. 第一阶段 这一阶段我认为算法工程师的核心竞争力是对模型的理解,对于模型不仅知其然,还得知其所以然. 于是我把目标检测的经 ...

  3. 测试工程师的核心竞争力----打卡第九天

    我以我们团队招聘功能测试和测试开发工程师为例,带你了解一下测试工程师的核心竞争力到底是什么. 案例一来自我们的资深功能测试工程师招聘.当时,有一位拥有近 9 年测试经验的资深测试候选人,我对他的简历还 ...

  4. 软件测试工程师的核心竞争力是什么

    软件测试52讲- 1.测试人员,必须要深入理解业务,但是业务知识不能等同于测试能力. 2.测试开发岗位的核心其实是"测试","开发"的目的是更好地服务于测试,我 ...

  5. 软件工程师的核心竞争力(学习能力,解决问题的能力,影响力)

    原文链接:https://blog.csdn.net/rendong_yang/article/details/89703724 文章目录 一.软件工程师的核心竞争力 1.学习能力 2.解决问题的能力 ...

  6. 软件测试人员的核心竞争力,软件测试工程师的核心竞争力是什么?

    在测试行业,很多人会认为,测试工程师这个岗位其实是很容易被替代的,工作了3年5年会的东西,一个应届生稍加培养也能做,那么企业会选择谁可想而知.所以在学习的过程中,我们首先要找准自己的定位,先搞清楚你的 ...

  7. 09. 软件测试工程师的核心竞争力是什么

    文章目录 例子: 传统测试工程师师应该具备的核心竞争力 第一项核心竞争力,测试策略设计能力 第二项核心竞争力,测试用例设计能力 第三项核心竞争力,快速学习能力 第四项核心竞争力,探索性测试思维 第五项 ...

  8. 【测试工程师的核心竞争力是什么】

    测试工程师的核心竞争力是什么 第一项核心竞争力,测试策略设计能力 第二项核心竞争力,测试用例设计能力 第三项核心竞争力,快速学习能力 第四项核心竞争力,探索性测试思维 第五项核心竞争力,缺陷分析能力 ...

  9. 算法工程师的核心竞争力是什么?

    William(腾讯 算法工程师)回答: 当了一年的鹅厂算法工程师,仅就我浅薄的经验来说一下自己的见解吧~ 本科及研究生所学的知识,比如高等数学.线性代数.传统机器学习方法及深度学习理论等这些,都只是 ...

最新文章

  1. Python 缩进问题-inconsistent use of tabs and spaces in indentation.原因及解决方法
  2. properties 特有的方法
  3. ef mysql 读写分离_EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~终结~配置的优化和事务里读写的统一...
  4. 【华为云技术分享】《跟唐老师学习云网络》— Ping喂报文
  5. Linux 内核编译 LOCALVERSION 配置(分析内核版本号自动添加的“+“号)
  6. 关于IM Robot的一些资料【转载】
  7. 动态内存分配(malloc函数)
  8. linux ios文件是否存在,Linux如何读取iOS镜像文件
  9. 【验证码识别】极验滑动拼图验证码识别方案
  10. 中学计算机基础授课ppt,高中信息技术说课课件.ppt
  11. 51物联卡:物联卡支持5G吗?怎么购买5G物联卡
  12. 办公自动化oa按计算机分类,办公室自动化oa按计算机分类属于什么
  13. python猜拳游戏
  14. 云计算入门必备的60条术语
  15. CoBOT检测出AI开源框架TensorFlow中的缺陷
  16. 如何用Java读取单元格的数据_Java读取Excel中的单元格数据
  17. Tsi721和NRS1800连接调试问题记录
  18. React 编写项目连环套路
  19. Python学习日志16 - 数据库SQL查询
  20. 无线网络攻防实战 WEP密钥如何被攻破的 图

热门文章

  1. opencv imshow 窗口无响应 the window does not seem to be responding. do you want to force
  2. Flutter实战一Flutter聊天应用(汇总)
  3. bigint在java中用什么表示_即使我确信圣诞老人不存在,我却仍然每年给我的孩子们准备圣诞礼物,为什么?...
  4. Thymeleaf前后端传值 页面取值与js取值
  5. 编译速度谁“最快”?25岁的 C++Builder 还能打
  6. Python还值得学吗?
  7. 如何提高 Rust 程序的性能?
  8. 为什么谷歌、百度都热衷黑客马拉松?
  9. 除了云原生,2021 年还有这八大趋势值得关注
  10. 程序员!别再盲目刷视频了!坚持做这件事儿,AI 也难不倒你!