《FPGA工程师职场必修能力和面试总结.docx》由会员分享,可在线阅读,更多相关《FPGA工程师职场必修能力和面试总结.docx(8页珍藏版)》请在优知文库上搜索。
1、FPGA工程师职场必修能力和面试总结FPGA这个概念在很多应用领域,出现的频率越来越多,例如:在比特币挖矿中在基于FPGA的矿机,自动驾驶系统中实时视觉处理系统,军事领域的导弹导航系统等。这段时间,也去面试了十多个FPGA岗位,发现在面试过程中发现有很多很突出的问题,特别是在比较大型的公司都会相当重视。具体来说会考量面试者很多的几个知识点:同步时钟设计、亚稳态、异步FlFOo可以亳不夸张地说,如果面试者要是能弄明白这几个问题,那么至少能满足迄今绝大多数公司对FPGA岗位的大部分需求。相比其他电子行业,从事FPGA开发工资高,对技术水平要求也高,一方面除了要求工程师对广泛的基础知识要有一定的了解
2、,其次也需要有实际的经验,如果在投递简历时,能通过拍照片、录视频的方式把你曾经做过的项目经验经历打包整理好,在面试的时候用上,会极大增加你的通过率。技术面试时,多讲讲你做过的东西,怎么做具体有哪些想法,扩展性思维,尽量多去开拓一些相关性知识,让企业者更多看到你知道得很多,基础很扎实,容易上手易于培养,后续就基本没什么问题了。以下录自某FPGA专业通信设备商的人员招聘,对于入职FPGA工程师岗位的具体要求。整个面试过程包含笔试(专业基础题)+面试(主观分析题)共两个部分,下面为大家提供具体题目及参考回答。FPGA工程师面试必考题目主观题:1 .你认为你从事这项工作有什么主要的优点?2 .描述一下
3、你之前参与的最有成就的项目,你觉你的成就来源是什么?3 .你觉得你自身最大的缺点是什么?该如何克服或改进。4 .你该如何与最新的技术保持同步?专业知识题:1 .什么是同步逻辑和异步逻辑?同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入有无变化,状态表中的每个状态都是稳定的。异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起.同步逻辑是时钟之间有固定的
4、因果关系。异步逻辑是各时钟之间没有固定的因果关系。2 .同步复位和异步复位的区别同步复位是在时钟沿变化时,完成匏位动作。优点:1)抗干扰能力高,可以提出复位信号中周期短于时钟周期的毛刺;2)有利于静态时序分析工具的分析;3)有利于基于周期的仿真工具的仿真。缺点:1)占用更多资源;2)对复位信号的脉冲宽度有要求,由于线路上的延迟;可能需要多个时钟周期的复位脉冲的宽度,而且很难保证复位信号到达各个寄存器的时序;3)同步复位依赖时钟,如果电路中时钟信号出现问题则无法复位。异步复位是只要复位信号满足条件就完成更位动作。优点:D不需要额外的逻辑资源,实现简单;2)复位信号不依赖于时钟。缺点:1)复位信号
5、易受外界干扰,并对电路内的毛刺敏感;2)复位信号的随机性可能导致时序违规,也就是复位信号释放时在时钟有效沿附近,会使电路处于亚稳态。3 .什么是亚稳态?为什么两级触发器可以防止亚稳态传播?这也是一个异步电路同步化的问题,具体的可以参考EDACN技术月刊20050401亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态.两级触发器防止亚稳态传播原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须湎足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿
6、到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间+第二级触发器的建立时间=时钟周期。更确切地说,输入脉冲宽度必须大于同步时钟周期与第一级触发器所需的保持时间之和。最保险的脉冲宽度是两倍同步时钟周期。所以,这样的同步电路对于从较慢的时钟域来的异步信号进入较快的时钟域比较有效,对于进入一个较慢的时钟域,则没有作用。4 .FPGA芯片内有哪两种储存器资源?FPGA芯片内有两种存储器资源:一种叫blockram,另一种是由LUT配置成的内部存储器(也就是分布式ram),Blockram由一定数量固定大小的存储块构成的,使用
7、BLOCKRAM资源不占用额外的逻辑资源,并且速度快。但是使用的时候消耗BLOCKRAM的资源是其块大小的整数倍。5 .什么是竞争与冒险现象?怎样判断?怎样消除?竞争:在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。冒险:由于竞争而使电路输出发生瞬时错误的现象叫做冒险。(也就是由于竞争产生的毛刺叫做冒险)判断方法:1)代数法:如果布尔式中有相反的信号则很有可能产生竞争和冒险现象;2)图形法:有两个相切的卡诺圈并且相切处没有被其他卡诺圈包围,就有可能出现竞争和冒险现象;3)实验法:使用示波器观测。解决方法:1)加滤波电路,消除毛刺影响;2)加选通信号,避开毛
8、刺;3)增减冗余项消除逻辑冒险。面试前,需要了解哪些基础理论?应聘FPGA工程师,必须要懂得电路和数字IC语言,如果涉及逻辑验证,数字集成电路,比如VHDL/Verilog等编程语言是必不可少的,另外还需要辅助其他工程师完成FPGA建模和搭建验证环境,然后涉及到软件设计和语言是必须要懂的,以及FPGA相关设计的实战技巧,譬如:组合逻辑设计、高速布线信号完整性,FPGA系统设计思想等等,当你对一个问题了解到相当的深度,相信你也会很容易搞懂其他问题。以下几点,编者觉得在面试者务必要做到对答如流:FPGA结构:想成为一名FPGA工程师,对FPGA的结构是必须要掌握的。FPGA芯片主要是:可编程I/O
9、单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块这六部分组成。FPGA设计流程:讲完了FPGA的结构,接下来说说FPGA的设计流程。FPGA是可编程芯片,所以FPGA的设计方法包括硬件设计和软件设计两部分。硬件包括FPGA的芯片电路、存储器、输入输出接口电路及其他设备,软件即是相应的HDL程序等。FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。典型FPGA的开发流程一般包括功能定义/器件选型、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。FPGA基础
10、知识(面试篇)1、FPGA与CPLD的区别?CPLDFPGA内部结构Productterm(基于乘积项)LookUPTable(基于查找表)程序存储内部EEPROM/FLASHSRAM,夕卜挂EEPROM资源类型组合逻辑资源丰富时序逻辑资源丰富集成度低高使用场合完成控制逻辑能完成比专交复杂的算法速度慢快其他资源一PLL、RAM和乘法器等保密性可加密一般不能保密2、Latch和Register区别?行为描述中Latch如何产生?本质的区别在于:IatCh是电平触发,reg是边沿触发。时序设计中尽量使用reg触发。行为描述中,如果对应所有可能输入条件,有的输入没有对应明确的输出,系统会综合出ECh
11、。比如:缺少else语句b)oraalways(beginif(a=l)qb;=endalways(posedgeelkornegedgerst_n)begin/case语句没有,defaultif(!rst_n)state=IDLE;elsebegincase(state)a:balabala;b:balabala;endcaseendend3、对竞争冒险的理解,以及如何消除?在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。4、FPG
12、A结构一般分为哪三个部分?1、可编程逻辑块(LAB)2、可编程I/O模块3、可编程内部连线5、WHEN-ELSE条件信号赋值语句和IF-ELSE顺序语句的异同?WHEN-ELSE条件信号赋值语句中无标点,只有最后有分号;必须成对出现;是并行语句,须放在结构体中。IJELSE顺序语句中有分号;是顺序语句,必须放在进程中HDL语言开发可编程逻辑电路的完整流程?6、用VHDLZVeilog文本编辑一功能仿真T逻辑综合一布局布线一时序仿真。所谓综合,就是根据设计功能和实现该设计的约束条件(如面积、速度、功耗和成本等),将设计输入转换成满足要求的电路设计方案,该方案必须同时满足与其的功能和约束条件。综合
13、的过程也是设计目标的优化过程,其目的是将多个模块化设计文件合并为一个网表文件,供布局布线使用,网表中包含了目标器件中的逻辑单元和互连的信息。布局布线就是根据设计者指定的约束条件(如面积、延时、时钟等)、目标器件的结构资源和工艺特性,以最优的方式对逻辑元件布局,并准确地实现元件间的互连,完成实现方案(网表)到使实际目标器件(FPGA或CPLD)的变换。7、Quartus编译器编译FPGA工程最终生产两种不同用途的文件?它们分别是.sof和.pof。File,下载到FPGA中,断电丢失。ObjeCtSof是SRAMFile,下载到配置芯片中,上电重新配置FPGA。ObjeCtPOf是Program
14、mer8、异步信号同步方式?单比特数据,打两拍后检测打拍后信号变化沿。若快时钟域信号进入慢时钟域,则先扩展位宽再打两拍。多比特数据,使用异步FIFo桥接。在数据量不大,带宽要求不高的场合可以采用握手同步方式(利用单比特握手信号打两拍同步方式找到数据稳定时刻,保证上游握手信号拉高时数据稳定不变)。9、SRAM和DRAM的区别?SRAM是静态随机访问存储器,由晶体管存储数据,无需刷新,读写速度快。DRAM是动态随机访问存储器,由电容存储数据,由于电容漏电需要动态刷新,电容充放电导致读写速度较SRAM低。但DRAM成本较低,适合做大容量片外缓存。10、逻辑设计中竞争与冒险概念,如何识别和消除?竞争:
15、在组合逻辑电路中,信号经过多条路径到达输出端,每条路径经过的逻辑门不同存在时差,在信号变化的瞬间存在先后顺序。这种现象叫竞争。冒险:由于竞争而引起电路输出信号中出现了非预期信号,产生瞬间错误的现象称为冒险。表现为输出端出现了原设计中没有的窄脉冲,即毛刺。常见的逻辑代数法判断是否有竞争冒险存在:只要输出逻辑表达式中含有某个信号的原变量A和反变量/A之间的“与”或者“或”关系,且A和/A经过不同的传播路径,则存在竞争。解决办法一是修改逻辑表达式避免以上情况,二是采样时序逻辑,仅在时钟边沿采样,三是在芯片外部并联电容消除窄脉冲。11、格雷码特点及其应用?连续的格雷码之间只有单比特信号变化,多用在异步时钟域处理上,如异步FIFO中地址指针的索引就采用格雷码编码。分析:只有单比特信号跨时钟域时,我们能通过双触发器构成的同步器在另一个时钟域内得到有效脉冲,但多比特信号若采用同样的方法,会出现各个比特更新时刻不一致导致数据错误的情况。而在异步FIFO设计中,两侧信号属于不同时钟域,FIFO必须通过对比来自不同时钟域的读写地址指针数值给出空满指示信号,地址指针需要多个比特信号才能代表FIFo深度。格雷码的单比特变化特性正好适用于这一场合,使用单比特信号同步策