官方论坛
官方淘宝
官方博客
微信公众号
点击联系吴工 点击联系周老师

FPGA工程师入行两年后深刻心得分享

发布时间:2022-01-20   作者:lishuangshun 浏览量:

看学员分享的一篇关于夏宇闻老师谈FPGA工程师的入门心得,谈到要入行FPGA并且坚持走下去,甚至走得更远,如何做到。首先要知道自己是否适合,如何判断自己是否适合干这一行,其实可以从几个方面来考虑,第一是自己是否喜欢,第二是性格是否适合,第三是目标是否明确,第四是方法是否正确。

 

确实有道理,干一行厌一行是很多职场人的通病,如果没有自己的喜好成分,所有的工作都会流于形式,最后只是摸鱼混日子。性格,FPGA技术工程师的性格比较是耐得住寂寞的,安静型那种,还要细心,要眼厉害,手也厉害,逻辑思维更要厉害。毕竟,这个FPGA技术不仅要动脑,还要动手。最后提到一点,学习力,不要怕麻烦,不要怕困难。遇到困难的时候要不断去克服,还要擅于找出问题,总结它,要学会用知识来帮助自己解决问题,而不是掩盖和逃避。

 

很多零基础的学生来明德扬领取学习资料的时候就各种担心自己零基础,不会,也不懂,感觉这行很难,又对FPGA行业保持着一种向往。这个时候,就需要一股学习力了。只要目标是精准的,要想学好FPGA也不是难事,关键是静下来花点时间。

 

来看看入行2年的FPGA工程师是怎么分享自己的心得体会吧。他说,一个合格的FPGA工程师至少在以下三个方面的一个非常熟悉:1嵌入式应用2DSP应用3高速收发器应用

 

此外,他以自己的经验总结了四个步骤,目的是希望入这一行的人不再走弯路。


一、 首先,应该好好学习一下FPGA/CPLD的设计设计流程

不要简单的以为就是设计输入-》仿真-》综合-》实现那么一回事,要抠细,要学精,要多问每个步骤的注意事项,区分相关步骤的联系和区别。比如要搞清楚功能仿真、综合后仿真、Translate后仿真、Map后的仿真、布局布线后仿真的作用都是什么,什么时候应该做,什么时候可以不做这些仿真!学习清楚了设计流程最大的好处就是有利于培养良好的EDA设计习惯,日后会受益非浅!


二、关于设计输入和Coding Style
设计输入最好学习HDL语言,Verilog、VHDL都可以,可以把状态机输入和原理图输入作为补充内容,但不是重点。我在前面的帖子已经反复强调了 Coding Style的重要性。因为它是逻辑设计人员的一个基本业务素质。而且Coding Style不是看几篇文章,学几条原则就能够成为高手的,他需要您在工作中不断的体会和积累,在学习的最初,有Coding Style的意识,设计者就会有意的积累,对日后发展很有好处。反之则后患无穷。


三、培养硬件的意识,培养系统的观念
我也在交流和授课的时候很强调硬件意识,如果从形式上看,逻辑设计随着智能化和优化手段的不断发展最后会越来越灵活,越来越简单。比如我们现在在使用大型 FPGA时就很少谈如何用Floorplanner优化,手动布线,如果用手动方式,其工作量太大了啊!一个设计的优劣,关键看其设计者的硬件意识,和系统意识。硬件意识就是要求先做到对设计的硬件胸有成竹,HDL代码仅仅是一个表述心中硬件的工具。系统意识要求设计者有宏观的观念,对设计的全局有个合适的安排,比如时钟域,模块复用,约束,面积,速度等问题。要知道在系统上复用模块节省的面积远比在代码上小打小闹来的实惠得多。


四、最后才是工具软件的使用
现在EDA软件都越来越友好,越来越“傻瓜化”,如果您费了1年还没有基本摸清软件的使用,我敢说,那是一个比较烂的软件(起码在用户接口上),因为这是和EDA这种方式的理念背道而驰的。但是作为设计者,软件是工具,应该熟练掌握各个步骤不同方面的软件,这样才能最大程度地发挥您的聪明才智,才能使您如虎添翼!
需要对相关器件的要有一定的了解,对和这些器件之间的控制、数据交换等通信要清晰,对性能和功能清楚。而且作为基本的素质要求要能看懂原理图,和PCB要不没法调试。


另外比较重要的一点是对FPGA设计的一些基本原则要有一个清晰的认识,比如:“面积和速度的互换”,“流水线设计方式”,“乒乓操作”。对最基本和最常用的模块要非常熟悉,比如单口/双口RAM,同步/异步FIFO等等。除了问题要多想想自己的设计。虽然综合,布线工具的性能有差异,但是一个设计的优劣根本还是设计者的思路是否巧妙。当我们的设计达不到要求或者性能太差的时候,请不要埋怨综合工具太滥,布线结果太差,因为工具不会想人那么聪明。这时候,我们应该静下心,想一下自己的设计是不是有什么问题,结构是否合理,代码的风格是否符合工具的要求,系统结构的改进带来的优化远远超过最好的优化工具所能达到的结果。


以上四点说得非常详细,也是发自内心的分享。当然,他还做了一个更具体的总结,一共有10个项。

1.Verilog语言及其于硬件电路之间的关系。
2.器件结构(最好熟练掌握Spartan3,Vertix4系列的器件结构,及其资源于Verilog行为描述方法的关系。)。
3.开发工具(熟练掌握Synplify,Quartus,ISE,Modelsim)。
4.数字电路(组合电路,触发器,特别是D触发器构成分频器,奇数倍分频占空比为50%,时序电路,并且能用Verilog语言描叙。)。
5.熟悉FPGA设计流程(仿真,综合,布局布线,时序分析)。
6.熟练掌握资源估算(特别是slice,lut,ram等资源的估算)。
7.同步设计原理。
8.熟练掌握基本概念(如建立时间,保持时间,流量(即所做FPGA设计的波特率)计算,延迟时间计算(所做FPGA设计),竞争冒险,消除毛刺的方法等等)。
9.具备具体设计经验(对应届生而言如毕业设计)。
10.良好的设计思路(流水线设计即熟称打拍子,在速率资源功耗之间的折中考虑)。

 

   拓展阅读