FPGA资深FAE的经验独白——骏龙科技Andrew

2014年08月21日 10:11 来源:电子发烧友网论坛原创 作者:Cindy,Cici 我要评论(0)

标签:fpga(588988)骏龙科技(12171)

  看似简单的几个问题,Andrew却回答的井井有条,小编已经没有办法有什么其他词语去形容了。本文Andrew不仅仅对FPGA入门学习流程做了详细的分享,更是对FPGA开发工作的要求分成大公司和小公司两个层面来分析。你能想象曾经从一个疏忽学业的人成为一名资深FAE的嘛?

  采访:Cindy Sun sunbo@elecfans.com

  撰文、组稿:Cici Chen chenchen@elecfans.com

  (原创内容,转载请注明来自ElecFans)

 

  1. 电子发烧友:您认为想学FPGA的话,先学好什么才最重要?

  Andrew:我们玩FPGA的通常就是跟数字电路打交道,要想玩得转,必须先学习并掌握最最基础的数字电路和HDL硬件描述语言,当然这只是入门必备,实际上远远不够。个人拙见,要入行除了至少掌握一种FPGA的仿真及开发调试流程之外;起码还要了解一些模拟电路知识,掌握诸如电源纹波、时钟抖动、信号质量等经常需要测量的硬件参数的测试方法;起码还要掌握一种原理图和Layout设计软件,能够查看分析调试电路板上的电路模块,如电源、时钟、存储器、配置、I/O和高速收发器等模块;起码还要掌握一种单片机的开发流程,项目中难免有一些需要配置控制的需求,使用外置单片机或者内置ARM硬核或者其他软CPU来实现,简单又方便;由于本人水平有限,其他方面这里就不再赘述。

  那么,针对FPGA入门学习的一般流程,简单总结一下,供朋友们参考,有经验的大牛可以绕道:

  1.首先要有开发平台,把该准备的都准备好,磨刀不误砍柴工:

  比如ALTERAQuartus II软件、开发板和配置调试工具USB Blaster,以及仿真软件Modelsim SE。软件可以从网上下载,入门功能的许可的和谐方法一大堆;开发板和USB Blaster可以借,可以买,动手能力强的朋友,自己画一块也行。对于初学者,建议找一块有详细配套教程的开发板。

  2. 对于新手来讲,按部就班地学习往往就是最快的学习方法:

  照猫画虎尽管囫囵吞枣一知半解,但起码能把开发流程摸熟,能跑起来。刚拿到开发板,肯定是丈二和尚摸不着头脑。这个时候,建议先根据开发板的配套教程,把原理图上的各项模块功能厘清,把FPGA周围的电源、时钟、复位、配置、GPIO和连接器等的电路原理理一理分析分析。再按照配套教程中介绍的流程,把配套的测试工程跑通,在这个阶段,把FPGA开发所涉及的RTL输入,综合、前仿真、布局布线、后仿真、配置调试的流程摸清楚。学习新东西的过程中,难免会出现一些不熟悉的“疑难杂症”,切莫灰心,坚持就是胜利。当然,往往这个时候,有些朋友开始嫌弃教程写得冗长、写得烂,或者碰到英文教程推辞看不懂,就开始闭门造车,天天碰壁,逐渐丧失兴趣和信心,当开发板上面落满了灰,你还好意思在跳槽的时候吹牛有过如何丰富FPGA经验吗?

  3. 熟悉了开发流程:

  接下来就可以分析或者改写原教程中的代码或者模块,有针对性地去实现一些功能模块,并且通过一些软件自带的调试组件来辅助验证结果是否符合预期,如SignalTap II等。无论是原厂的单板,还是FPGA爱好者做的单板,配套例程都会有一些经典的电路实现案例,比如基本的分频器,简单的I2C通信、SRAM读写控制,以及稍微复杂的SDRAM读写控制等,认真分析别人如何写代码实现所观测到的时序,与此同时,阅读相应模块手册或者器件内部组件文档中的时序描述章节来对比分析,查阅网上别人分享的调试心得博客、论文等,直到理解并掌握为止,并且适当地做些笔记归纳总结,所谓时常记记,以防忘记,给其他人或者给以后的自己参考。

  4. 光靠自己研究,有时会被一些问题阻塞思绪,大脑会卡壳:

  那么,加入一些学习小组、专业的讨论圈子是有必要的,是利大于弊的,比如电子发烧友论坛、FPGA产业圈QQ群,分享心得,咨询问题,探讨人生。这个过程,也有可能误入歧途,有些朋友可能过分享受社交的愉悦,迷恋于灌水的浪潮中。建议在学习工作的时候,把精力主要放到学习研究中,切莫堕入无聊的灌水大军中。除了线上交流,大家也可以参加电子发烧友等社区组织的线下沙龙活动,面对面地交流学习,探讨问题的同时还可能交往一些好朋友。跟别人讨论问题,目的是为了解决问题,处理过程需要一些技巧,建议尽量把已经遇到的问题的器件型号软件版本、观测到的症状、仿真调试的波形、已尝试的方法和已分析的可能原因先罗列出来,让能帮你且有时间有心情帮你的朋友快速及时地分析出原因并给出解决方法,这是一个简单的讨论问题的方法论。别人帮你是恩德,不是义务。如果没有人帮到你,不要灰心,继续想其他办法。

  5. 有一点基础了,就可以适时选择一些项目练手:

  不仅可以锻炼FPGA开发能力,还可以增强信心,沉淀经验,获取价值体现。老是拿着开发板玩,思维容易囿于开发板所涉及的小小“圈套”,其实开发板只是个学习工具,开发板玩得再熟,也只是熟悉那上面的几个小模块而已。FPGA应用广泛,相关产品层出不穷,大把的就业及市场机会,如果光学不练,那真是白瞎了时光,浪费了生命。

  2. 电子发烧友:从事FPGA开发工作有些什么要求呢?

  Andrew:坦白地讲,这个问题很难回答,不同的公司、不同的产品、不同的项目组、不同的研发人员需求千差万别。不过,可以讨论讨论。公司与研发之间是双向选择,公司要求产品具有一定的技术优势和稳定度,能够及时上市覆盖一定的细分行业,研发需要公司按照合同提供合理的待遇和福利。 大公司人员分工相对比较清晰,FPGA工程师需要配合系统工程师、算法工程师、软件工程师、硬件工程师和测试工程师完成产品单板的功能设计和稳定性测试,因为不是一个人在战斗,所以更需要注重团队合作。而且大公司往往与芯片的供应商有战略合作关系,获取相应的支持资源在力度和速度的优先级上远远高于一般公司,这对FPGA技术层面的修炼是大有裨益的。

  在这样的公司里工作,窃以为需要培养:

  1. 自我学习能力。公司如果有相关培训,抓住机会好好学习;如果没有,平时在工作之余要加强专业知识充电,把自己打造成不可或缺的人才。另外要注意公司不是学校,公司要的是能干实事的员工,不是夸夸其谈纸上谈兵的赵括,不能天天想着学习而不干活。

  2. 沟通协调能力。遇到疑难问题要及时发起团体讨论诊断,切莫蒙头自己死扛,一来自己压力大,二来影响项目开发进度,必要时要及时把芯片供应商的支持团队拉进来共同讨论分析。要意识到自己的不足,尊重团队中其他成员的意见和建议,经常锻炼自己的沟通协调能力,为以后自己带团队做准备。

  3. 抗压能力。FPGA开发的难度高居主控芯片(CPU,DSP,FPGA,专用芯片等)的榜首,芯片厂家为了配合市场需求,连年不断升级器件软件,这对于研发来讲就是灾难,但是为了提升最终产品的竞争力,提升我们自身的价值,我们不得不去学习掌握。另外公司项目往往严格按照预期进度开展,如果遇到难题,加班加点是必须的。所以我们平时一定要多锻炼身体,多看书,培养一定的兴趣爱好,以排解项目开发中的苦闷。像某为那样,只注重工作效率,把研发当作加班的机器,时不时就有报道研发跳楼的新闻,简直就是业界的耻辱。

  4. 职业生涯规划能力。大公司职业任务单一,对专业深度要求高。要逐步规划调整自己未来的路,往专业深度走,做技术专家;往专业广度上走,做系统工程师;往技术之外的岗位走,转行。工作要积极主动,选好的路就好好走下去,切忌朝三暮四,滥竽充数,人浮于事,碰到好光景,还可以混日子;碰到诸如当前这种外企裁人潮,诺基亚、思科、微软等公司纷纷大裁员,老大不小的南郭处士再就业难度就比较大。凡事都逃不过因果关系,给公司努力工作,就是为自己的未来努力工作。只要有能力,将来还是有机会出去自创企业,创造更多社会价值。

  小公司自由度高,单独的FPGA工程师的职位设置不太常见,往往围绕着项目的需求,工程师既要当爹又要当妈,硬件软件逻辑机械模型一起搞。从表面上看,要做的事情比较杂,新人往往感觉在打酱油,跑龙套。有一些朋友耐心比较差,容易陷入经常跳槽的怪圈。其实呢,小公司有小公司的好,产品的复杂度相对来讲不高,研发出项目的速度比较快,数目也比较多,容易积累自身的成就感,这感受和大公司里面有时的无力感有天壤之别。再者小公司由于企业规模小的原因,直接做平台与大公司竞争的可能性不大,往往都是做一些围绕大公司平台的配套产品,或者做一些大公司不愿意做或者尚未注意到的新的细分产品。作为研发,能够直接或间接接触终端行业应用,对产品的功能理解直观透彻,对行业也有一定的调研,将来很容易出去创业,做出更加细分的行业产品。

12下一页全文

本文导航