(完整版)FPGA资深FAE的经验独白
fpga面试经验

竭诚为您提供优质文档/双击可除fpga面试经验篇一:最近也面试了很多Fpga工程师最近也面试了很多Fpga工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习Fpga设计我也说一点看法吧。
我认为要从基础开始做,基础牢,才有成为高手的可能。
我觉得有以下几步必须要走:第一步:学习了解Fpga结构,Fpga到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程。
很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。
不过原厂提供的正品开发板,代码很优秀的,可以借鉴。
只有了解了Fpga内部的结构才能明白为什么写Verilog和写c整体思路是不一样的。
第二步:掌握Fpga设计的流程。
了解每一步在做什么,为什么要那么做。
很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。
了解了Fpga的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。
语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
第三步:开始学习代码了。
我建议要学代码的人都去altera或xilinx的网站上下原厂工程师的代码学习。
不要一开始就走入误区。
个人愚见,欢迎大家讨论。
做fpga主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,fpga中是由触发器和查找表以及互联线等基本结构组成的,其实在我们在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出来的是一个什么样的电路,计数器选择器三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序就去往fpga中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法上面花太多的功夫了,verilog言简意赅assignalwayscaseifelse掌握这些几乎可以写出90%的电路了,上面是我的一些愚见,希望对大家有所帮助做一块板子,实现一个协议,先从简单入手,譬如Rs232,然后到复杂,pci协议,然后再设计一些高速的,譬如ddrsdram,基本上你对fpga的了解就已经很深了能搞到51,mega,stm32的源码和相关库,就小case啦,编译--》综合--》下载,ol学习Fpga最重要的是要了解综合和时序仿真,你熟知你写的每个进程到Rtl级中都会综合成什么样的电路,只有这样你才能使用有限的资源设计出好的逻辑硬件。
FPGA经验之谈汇总

FPGA经验之谈汇总FPGA设计要点之一:时钟树对于FPGA来说,要尽可能避免异步设计,尽可能采用同步设计。
同步设计的第一个关键,也是关键中的关键,就是时钟树。
一个糟糕的时钟树,对FPGA设计来说,是一场无法弥补的灾难,是一个没有打好地基的大楼,崩溃是必然的。
具体一些的设计细则:1)尽可能采用单一时钟;2)如果有多个时钟域,一定要仔细划分,千万小心;3)跨时钟域的信号一定要做同步处理。
对于控制信号,可以采用双采样;对于数据信号,可以采用异步fifo。
需要注意的是,异步fifo 不是万能的,一个异步fifo也只能解决一定范围内的频差问题。
4)尽可能将FPGA内部的PLL、DLL利用起来,这会给你的设计带来大量的好处。
5)对于特殊的IO接口,需要仔细计算Tsu、Tco、Th,并利用PLL、DLL、DDIO、管脚可设置的delay等多种工具来实现。
简单对管脚进行Tsu、Tco、Th的约束往往是不行的。
FPGA设计要点之二:FSM关于上期的时钟树,可能说的不是很确切。
这里的时钟树实际上泛指时钟方案,主要是时钟域和PLL等的规划,一般情况下不牵扯到走线时延的详细计算(一般都走全局时钟网络和局部时钟网络,时延固定),和ASIC中的时钟树不一样。
对于ASIC,就必须对时钟网络的设计、布线、时延计算进行仔细的分析计算才行。
FSM:有限状态机。
这个可以说时逻辑设计的基础。
几乎稍微大一点的逻辑设计,几乎都能看得到FSM。
FSM分为moore型和merly型,moore型的状态迁移和变量无关,merly型则有关。
实际使用中大部分都采用merly型。
FSM通常有2种写法:单进程、双进程。
初学者往往喜欢单进程写法,格式如下:always @( posedge clk or posedge rst )beginif ( rst == 1'b1 )FSM_status <= ......;elsecase ( FSM_status )......;endcaseend简单的说,单进程FSM就是把所有的同步、异步处理都放入一个always中。
FPGA工程师职场必修能力和面试总结

FPGA工程师职场必修能力和面试总结FPGA这个概念在很多应用领域,出现的频率越来越多,例如:在比特币挖矿中在基于FPGA的矿机,自动驾驶系统中实时视觉处理系统,军事领域的导弹导航系统等。
这段时间,也去面试了十多个FPGA岗位,发现在面试过程中发现有很多很突出的问题,特别是在比较大型的公司都会相当重视。
具体来说会考量面试者很多的几个知识点:同步时钟设计、亚稳态、异步FlFOo可以亳不夸张地说,如果面试者要是能弄明白这几个问题,那么至少能满足迄今绝大多数公司对FPGA岗位的大部分需求。
相比其他电子行业,从事FPGA开发工资高,对技术水平要求也高,一方面除了要求工程师对广泛的基础知识要有一定的了解,其次也需要有实际的经验,如果在投递简历时,能通过拍照片、录视频的方式把你曾经做过的项目经验经历打包整理好,在面试的时候用上,会极大增加你的通过率。
技术面试时,多讲讲你做过的东西,怎么做具体有哪些想法,扩展性思维,尽量多去开拓一些相关性知识,让企业者更多看到你知道得很多,基础很扎实,容易上手易于培养,后续就基本没什么问题了。
以下录自某FPGA专业通信设备商的人员招聘,对于入职FPGA工程师岗位的具体要求。
整个面试过程包含笔试(专业基础题)+面试(主观分析题)共两个部分,下面为大家提供具体题目及参考回答。
FPGA工程师面试必考题目主观题:1.你认为你从事这项工作有什么主要的优点?2.描述一下你之前参与的最有成就的项目,你觉你的成就来源是什么?3.你觉得你自身最大的缺点是什么?该如何克服或改进。
4.你该如何与最新的技术保持同步?专业知识题:1.什么是同步逻辑和异步逻辑?同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。
改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入有无变化,状态表中的每个状态都是稳定的。
异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起.同步逻辑是时钟之间有固定的因果关系。
FPGA学习经验之谈

FPGA学习经验之谈FPGA学习-经验之谈目录1.杂记 (3)1.1 FPGA中未赋初值寄存器的值 (3)1.2关于initial在仿真中的应用 (3)1.3 仿真程序控制的变量 (3)1.4 错误汇总 (3)1.5 Inout口的编写办法 (3)1.6 Component 相当于assign不能用在什么always 模块中 (7)1.7 If-else不完全配套时 (7)1.8 X实际上是0 (7)1.9 关于BRAM(BLOCK RAM) (7)1.10 一个FPGA设计最大能工作的频率 (7)1.11 DCM不能直接接管脚?输出一般要先过一个buf再输出?(8)1.12 FPGA中不同BANK区别?DSP概念?BUFG? (8)1.13 全局时钟只能跑一半?DCM输出时钟一般能跑1/4整芯片?(8)1.14把F68013_PC_FPGA程序最大工作频率提高,方法: (8)1.15 单词翻译 (9)1.16时序报告解读及解决 (9)1.17 关于FPGA Editor (10)1.18未用管脚电平设置 (11)2.关于Chip Scop (11)2.1简介 (11)2.2关于常用核 (12)2.3 重要操作 (13)2.4 缺点 (13)2.5 使用说明 (13)3 Modesim 与ISE 联合仿真 (13)3.1 安装方法,照下面操作即可实现联合仿真 (13)3.1.1 安装注意事项 (14)3.2 主要的优点 (14)3.2.1 关于波形比较 (14)3.2.2 数据流窗口调试 (15)3.2.3 代码覆盖率,这功能不错 (15)4.BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用 (16)4.1全局时钟资源的使用方法(五种) (17)4.2 全局时钟资源的例化方法 (18)4.3详解IBUFG/IBUFGDS+BUFG用法 (18)5.I2C网上程序精读(尽快抽空) (18)5.1 关于上复位 (18)FPGA设计1.杂记1.1 FPGA中未赋初值寄存器的值在硬件平台中,当系统上电后,信号电平不是1就是0,不会存在X,因此,设计中用到的寄存器如果在没有初始化的情况下,在不同的平台上,其初始状态是不一定的,存在两种可能全0或者全1,而在XILINx公司的FPGA/CPLD上,默认为0。
fpga个人心得体会

fpga个人心得体会FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,它可以根据用户的需要重新进行编程,以实现不同的功能。
在我个人使用FPGA的过程中,我深刻地体会到了它的优势和魅力。
首先,FPGA具有灵活性和可重构性。
相较于传统的专用集成电路(ASIC),FPGA可以在设计完成后进行现场编程,而无需重新设计和制造芯片。
这意味着我可以根据具体的需求对FPGA进行修改和优化,使其更适合特定的应用场景。
无论是改变设计逻辑、增加新的功能,还是优化性能和功耗,FPGA都可以随时进行调整,极大地提高了开发的灵活性和效率。
其次,FPGA具有并行计算能力。
相对于传统的通用处理器,FPGA可以通过配置并行计算单元实现更高的运算速度。
这对于需要高性能计算的应用非常重要,例如图像处理、信号处理和机器学习等。
我曾经使用FPGA进行图像处理的项目,通过合理地设计硬件架构和并行计算的布局,显著提升了处理速度和实时性。
这使我意识到FPGA在数据密集型应用中的巨大潜力。
此外,FPGA还具有较低的功耗和高效能。
FPGA的逻辑元件采用可编程的查找表(Look-Up Table)实现,相对于ASIC的固定逻辑电路,FPGA能够根据具体的需求进行灵活布局,减少了功耗的浪费。
在一些对功耗要求较高的应用中,FPGA能够提供更好的性能-功耗比,降低了系统的能源消耗。
与此同时,FPGA的设计流程也给我提供了很多的挑战和机会。
由于FPGA的可编程特性,需要我充分理解硬件描述语言(HDL)和硬件设计流程,掌握相关的设计工具和开发环境。
在这个过程中,我不仅提高了自己的技术能力,还学到了如何进行良好的工程管理和调试。
这些宝贵的经验对于今后的工作和学习都将会带来很大的帮助。
然而,FPGA的使用也存在一些挑战和限制。
首先,相较于通用处理器,FPGA的开发成本较高。
设计FPGA的逻辑电路需要耗费大量的人力、时间和资源。
FPGA学习总结

FPGA学习总结FPGA(现场可编程门阵列)是一种数字电路开发和实现的工具,它提供了一种灵活的方式来设计和实现各种数字电路。
在我的FPGA学习过程中,我经历了以下几个方面的学习和实践:1.FPGA基础知识:在学习FPGA之前,我首先了解了FPGA的基本概念和原理。
我学习了FPGA的架构、时序和时钟设计、数字电路设计和综合等方面的知识。
这些基础知识为我深入学习和实践FPGA打下了坚实的基础。
2. FPGA开发工具的使用:我使用了常见的FPGA开发工具,如Vivado和Quartus。
这些工具提供了一种直观而强大的方式来设计和实现FPGA。
我学习了如何创建项目、添加模块、定义信号、综合和布局布线等操作。
通过不断的实践和尝试,我逐渐掌握了这些工具的使用。
3. Verilog和VHDL的学习:Verilog和VHDL是FPGA开发中常用的硬件描述语言。
通过学习这两种语言,我能够使用它们来描述和设计各种数字电路。
我掌握了如何使用这些语言来描述寄存器、组合逻辑、状态机等部件,并能够将它们综合成FPGA可实现的电路。
4.FPGA的应用实践:在学习了FPGA的基础知识和工具使用之后,我开始进行一些实际的应用实践。
我使用FPGA设计和实现了一些简单的电路,如计数器、加法器、乘法器等。
通过实践,我加深了对FPGA的理解,并增强了自己的设计和调试能力。
5.FPGA高级特性的学习:除了基础知识和工具使用外,我还学习了一些FPGA的高级特性,如时序分析、时钟域划分、并行数据传输和高速串行数据传输等。
这些特性在设计和实现一些高性能和复杂的电路时非常重要,我通过学习和实践,学会了如何正确地使用这些特性。
总结起来,FPGA学习是一个既有理论基础又注重实践和应用的过程。
通过学习FPGA,我更好地理解了数字电路的原理和设计,增强了自己的工程能力。
我学会了使用FPGA开发工具,掌握了Verilog和VHDL等硬件描述语言,实践了FPGA的设计和实现,并学习了一些高级特性。
fae年终工作总结

fae年终工作总结《FAE 年终工作总结》时光荏苒,岁月如梭,转眼间一年的工作即将画上句号。
回顾过去这一年,作为一名 FAE(现场应用工程师),我在工作中经历了许多挑战和机遇,也取得了不少成绩和收获。
在此,我将对这一年的工作进行总结,以便更好地展望未来,不断提升自己的能力和水平。
一、工作内容与成果1、客户技术支持这一年里,我始终把为客户提供优质、高效的技术支持作为首要任务。
无论是通过电话、邮件还是现场服务,我都能及时响应客户的需求,帮助他们解决在产品使用过程中遇到的各种技术问题。
据不完全统计,我共处理了超过X个客户咨询案例,其中包括产品故障排查、技术参数解读、应用方案优化等。
通过我的努力,大部分客户的问题都得到了圆满解决,客户满意度达到了X%以上。
2、新产品导入在新产品导入阶段,我积极参与了公司多个新产品的测试和评估工作。
与研发团队紧密合作,对新产品的性能、功能进行了全面的测试和验证,并根据测试结果提出了一系列的改进建议。
同时,我还为销售团队和客户提供了详细的产品培训和技术文档,帮助他们更好地了解和推广新产品。
在新产品上市后,我密切关注市场反馈,及时处理客户的问题和意见,为产品的顺利推广和销售提供了有力的技术保障。
3、项目跟进与协调在项目跟进方面,我负责了多个重要项目的技术支持工作。
与项目团队成员保持密切沟通,及时了解项目进展情况和遇到的技术难题,并协调各方资源,共同推动项目顺利进行。
在项目实施过程中,我充分发挥自己的技术优势,为项目提供了专业的技术解决方案,确保项目按时、按质完成。
其中,具体项目名称项目在我的积极参与下,提前完成了交付,并获得了客户的高度评价。
4、技术培训与交流为了提高客户和内部团队的技术水平,我组织并参与了多场技术培训和交流活动。
针对不同客户的需求和技术水平,制定了个性化的培训方案,并通过线上线下相结合的方式,为客户提供了全面、系统的技术培训。
同时,我还与内部团队分享了自己在工作中积累的经验和技术知识,促进了团队整体技术水平的提升。
fpga高手心得

刚才开始接触逻辑设计很多人会觉得很简单:因为verilog的语法不多,半天就可以把书看完了。但是很快许多人就发现这个想法是错误的,他们经常埋怨综合器怎么和自己的想法差别这么大:它竟然连用for循环写的一个计数器都不认识! 相信上一段的经历大部分人都曾有,原因是做逻辑设计的思维和做软件的很不相同,我们需要从电路的角度去考虑问题。 在这个过程中首先要明白的是软件设计和逻辑设计的不同,并理解什么是硬件意识。 软件代码的执行是一个顺序的过程,编绎以后的机器码放在存储器里,等着CPU一条一条的取指并执行;因此软件设计中经常会带有顺序处理的思维。而逻辑设计则不同,我们设计的是数字电路,它是由很多很多的与非门及D触发器构成的,上电之后所有与非门和D触发器都同时工作,不会因为A触发器的代码描述在B触发器之前A触发器就是先工作,事实上,RTL级代码的代码先后顺序在综合成网表文件后这种顺序就消失了,取代的是基本逻辑电路之间的互联关系描述;因此逻辑设计需要的是一种并发的思维,我们也需要用并发的思维去考虑电路的设计。 当然,我们设计的电路功能一般都有先后顺序的关系,如果这种顺序不能通过代码的先后顺序来实现,那么要怎么完成这一功能呢?在逻辑设计中,我们所说的先后顺序都是基于时间轴来实现:它的承载体就是时序逻辑,也就是那些触发器。 硬件意识的东西网上谈论的已经很多,这里就不再多说了。 其次就是要熟悉基本电路的设计。 基本的电路不是很多,也就是D触发器、计数器、移位寄存器、状态机、多路选择器、译码器等几种,所有复杂的电路都可由这些基本的电路构成。高手水平高的体现并不是他能写出一些很奇特的电路,相反,水平高是体现在他们总能将复杂的电路用这些很朴素的基本电路去描述。甚至,你会发现他们的代码基本上是由if...else、case这些语句构成的,朴素的让你觉得奇怪。 我认为,初学者在入门的时候,对于基本电路的设计应该固定化、标准化,每种电路该用什么样的代码描述,应该要固定、统一,尽量少一些花哨的东西。说来这里我举个例子。 以前有几个朋友因为仿真有问题请我帮忙找问题。他们的代码写的很乱,出现了很多种稀奇古怪的电路,一看头都大了,只好建议他们按照标准的电路重新写下代码。结果过了半天,他们就和我说问题不见了。 所以,高手们喜欢用简单的代码是有道理的,电路的标准化和规范化可以减少许多稀奇古怪的问题,问题少了他们也就能在别人加班的时候回家多睡回觉,呵呵。总之,简单的、朴素的就是最好的。 最后是代码的规范化。 代码规范主要是代码书写、命名等规范。比如不能用TAB键空格、低电平有效信号命名时加_n(如rst_n等)、每行只能写一行代码等。这些东西网上也很多,这里只是强烈建议大家要严格遵守,像华为等公司如果代码不规范的话肯定是要打回去重写的。 入门 结合一两个小项目把上面所说的事情都做好后,差不多就可以进入入门的阶段了(要求稍微严格了一点点,呵呵)。 入门阶段要学的有:设计时序;理解约束的原理及如何加约束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
骏龙科技Andrew —— FPGA资深FAE的经验独白时间:2014-08-25 来源:elecfans 作者:关键字:FPGA FAE骏龙科技看似简单的几个问题,Andrew却回答的井井有条,小编已经没有办法有什么其他词语去形容了。
本文Andrew不仅仅对FPGA入门学习流程做了详细的分享,更是对FPGA开发工作的要求分成大公司和小公司两个层面来分析。
你能想象曾经从一个疏忽学业的人成为一名资深FAE的嘛?1. 您认为想学FPGA的话,先学好什么才最重要?Andrew:我们玩FPGA的通常就是跟数字电路打交道,要想玩得转,必须先学习并掌握最最基础的数字电路和HDL硬件描述语言,当然这只是入门必备,实际上远远不够。
个人拙见,要入行除了至少掌握一种FPGA的仿真及开发调试流程之外;起码还要了解一些模拟电路知识,掌握诸如电源纹波、时钟抖动、信号质量等经常需要测量的硬件参数的测试方法;起码还要掌握一种原理图和Layout设计软件,能够查看分析调试电路板上的电路模块,如电源、时钟、存储器、配置、I/O和高速收发器等模块;起码还要掌握一种单片机的开发流程,项目中难免有一些需要配置控制的需求,使用外置单片机或者内置ARM硬核或者其他软CPU来实现,简单又方便;由于本人水平有限,其他方面这里就不再赘述。
那么,针对FPGA入门学习的一般流程,简单总结一下,供朋友们参考,有经验的大牛可以绕道:1.首先要有开发平台,把该准备的都准备好,磨刀不误砍柴工:比如ALTERA的Quartus 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工程师的职位设置不太常见,往往围绕着项目的需求,工程师既要当爹又要当妈,硬件软件逻辑机械模型一起搞。
从表面上看,要做的事情比较杂,新人往往感觉在打酱油,跑龙套。
有一些朋友耐心比较差,容易陷入经常跳槽的怪圈。
其实呢,小公司有小公司的好,产品的复杂度相对来讲不高,研发出项目的速度比较快,数目也比较多,容易积累自身的成就感,这感受和大公司里面有时的无力感有天壤之别。
再者小公司由于企业规模小的原因,直接做平台与大公司竞争的可能性不大,往往都是做一些围绕大公司平台的配套产品,或者做一些大公司不愿意做或者尚未注意到的新的细分产品。
作为研发,能够直接或间接接触终端行业应用,对产品的功能理解直观透彻,对行业也有一定的调研,将来很容易出去创业,做出更加细分的行业产品。
在小公司工作,窃以为需要锻炼:1. 产品设计的全局观。
主动去研究产品的应用需求,整合现有的方案,揣摩可能改进的部分,将其开发设计为产品的亮点,赢得细分行业的市场。
产品本身技术含量不高,所以我们也没有必要纠结一些技术细节,只要能实现能出产品,就是研发的价值体现。
2. 技术的广度。
多了解一些常用的芯片平台,热门的实现方案。
产品在设计过程中,尽量选择成熟的芯片平台和结构,降低产品研发的风险和投资。
3. 沟通能力。
小公司的老板一般不太注重研发,对研发的投入力度有限,研发团队里往往只有光杆司令几人。
长期欠缺沟通,有些朋友可能表现得比较木讷,比较闷骚,其实对今后的职业生涯是有害处的。
一定要找机会与公司其他部门的人沟通交流,不要给自己画圈。
平时要积极参加一些线下沙龙,活动,锻炼自身的沟通能力。
4. 耐心。
人生漫漫,来日方长,剩者为王。
所谓干一行爱一行,机会永远留给有准备的朋友。
3. 初级工程师应具备哪些专业技能?Andrew:至于FPGA工程师的所需的专业技能,仁者见仁,智者见智,我在第一个问题的回答中也提到若干。
这里专门罗列一下我个人浅见,仅供参考:1. 时序的设计和仿真能力。
时序是设计出来的,一些常见的电路模块必须要掌握,如流水线操作,状态机,localbus接口,存储器读写等电路的时序设计。
FPGA相关的著作多如牛毛,这里推荐两本:《FPGA Prototyping by Verilog Examples》,美籍华人Pong P. Chu针对Xilinx Spatran3E 开发套件编著的Verilog基础教材,可以在网上下载英文版的pdf,可以自行打印成册参考;另外一本有中译本出版,可以在Amazon购买,作者克里兹,孟宪元翻译的《高级FPGA设计结构、实现和优化》,书很好很薄,翻译得有待改进。
这两本可以作为学习FPGA方法论的“红宝书”。
2. 电路调试能力。
稳定的产品是建立在不断调试改进的基础上的。
熟练使用常用的测试工具,如万用表、示波器、逻辑分析仪等。
熟悉FPGA厂家提供的调试工具,对于FPGA设计事半功倍,如前面提到的SignalTap II。
一些辅助的调试工具最好也能够掌握,如串口、网络报文分析工具等等。
电子设计相关的小工具有很多,根据自己的工作需要适当选择。