领域相关的知识
进阶学习路线的第二部分内容,就是领域专用的知识,也就是 Domain Specific Knowledge。我们之所以要学习这部分内容,是因为 FPGA 并不是单独存在的,它需要被应用在某些具体的领域和场景里。
比如,FPGA 目前的一个很火的应用领域就是数据中心里的智能网卡。关于智能网卡的内容在之前已经说过很多了,包括微软、阿里、腾讯、京东、字节等等很多互联网公司都在布局这方面的技术。智能网卡的本质,就是使用把一些原本在 CPU 里运行的应用,卸载到 FPGA 里执行,这可以是网络协议栈、一些虚拟化的功能、或者是和 AI 相关的功能等等。
这里面就涉及到了很多领域专用的知识,比如计算机网络、网络功能虚拟化 NFV、软件定义网络 SDN,还有一些其他的虚拟化技术比如 Vir
tio、OVS 等。
此外,领域相关的知识还包括各种高速接口协议和总线相关的内容。比如 PCIe、DDR、HBM、以太网、收发器等,还有各种各样的总线协议。这些和 FPGA 也有非常密切的关系,在实际的求职应聘时也是重要的加分项。
在学习这些内容的时候,我个人建议还是结合目标职位或者项目的需求来,有目的的去学习,而不是想着一上来就一口吃个胖子。比如我就对使用 FPGA 进行高清视频处理相关的内容不太了解,因为我并不做这个方向,但我大概知道怎么构建知识图谱,并由此去一步步学习,这样其实就可以了。
职业技能相关的能力
FPGA 进阶学习路线的第三点,就是职业工程师需要具备的一些硬实力。比如,企业里几乎全部的开发环境都是在 Linux 系统里完成的,而且大部分时候没有图形界面。所以除了常用的那些 EDA 工具之外,还特别需要我们熟练掌握 Linux 的一些基本命令。此外还应该掌握至少一种脚本语言,比如 Tcl、Perl、Makefile、Python 等等。这能极大的提升我们的工作效率,这也是芯片工程师必备的技能。
此外,作为 FPGA 工程师,硬件调试的能力也是不可或缺的。一个在职业工程师日常工作中非常常见的场景,就是使用和调试各种各样的 FPGA 板卡,比如拿来一个全新的板卡,从头开始用它进行开发。
这就要求我们会看板卡的原理图、知道怎么写各种约束,怎么使用板子上的各种资源等等。此外,当设计出错时,怎么去进行硬件调试,还有怎么设计一些有用的逻辑功能来方便硬件测试,比如各种状态寄存器等等。那么对于某些专业领域,比如在网络领域,可能还需要知道怎么进行流量测试,比如 DPDK 的使用、配置,还有一些测试仪器的使用、一些常见的网络分析工具(如 wireshark)的使用等等。
总体来说,这些职业工程师需要具备的硬实力,可能在上学期间不一定都能接触到。这就需要我们在工作中不断实践和总结,才能把这些技能一点一点积累起来。
职业人士的软实力
除了硬实力之外,软实力的培养也至关重要,这包括沟通、时间管理、团队协作、领导力,还有不断学习的能力等等。
不管是芯片还是其他工程领域,绝大部分项目都是由很多团队一起协作完成的,因此如何与不同团队的成员沟通项目内容,如何制定项目规划、把握项目进度,以及遇到难题应该如何着手去解决,都是职业工程师几乎天天遇到的问题。
事实上,不管你从事或者打算从事什么职业,我们都应该从现在开始培养自己的各种软实力。比如多与人沟通,积极参加各种活动,或者像我在之前的文章《分享是程序员的必备素质》里提到的,不断分享自己学习和工作中的各种心得体会。这些肯定都会对我们今后的职业生涯大有帮助。
小结
在今天的文章里,我们梳理了一下作为一个职业的 FPGA 工程师需要具备哪些能力,一共有四个部分,分别是和 FPGA 相关的高级开发技巧、各种领域专用的知识、还有芯片工程师必备的硬实力和软实力。针对每部分内容,我们也都深入的了解了如何去学习和提升自己的这些能力。
事实上,这里提到的各种专业内容只是我们日常工作中的一部分,它们可能会随着技术的发展而不断变化,甚至被各种新技术所取代。所以最重要的是,培养自己不断学习的能力,不断尝试新技术、新工具,努力跳出自己的舒适圈,只有这样才能一直保持自己的竞争力,从而实现更好的人生价值。
`