FPGA工程师面试——FPGA基础知识24题

目录

1.FPGA设计工程师努力的方向

2.简述FPGA等可编程逻辑器件设计流程

3.Quartus文件管理

4.IC设计流程

5.FPGA基本结构

6.FPGA选型时要考虑哪些方面?

7.同步设计的规则

8.你所知道的可编程逻辑器件有哪些?

9.FPGA、ASIC、CPLD的概念及区别

10.锁存器(latch)和触发器(flip-flop)区别?

11.JTAG信号

12.FPGA芯片内有哪两种存储器资源?

13.FPGA中可以综合实现为RAM/ROM/CAM的三种资源及其注意事项?

14.FPGA设计中对时钟的使用?(例如分频等)

15.Xilinx中与全局时钟资源和DLL相关的硬件原语

16.HDL语言的层次概念?

17.查找表的原理与结构?

18.IC设计前端到后端的流程和EDA工具?

19.什么是“线与”逻辑,要实现它,在硬件特性上有什么具体要求?

20.IC设计中同步复位与异步复位的区别?

21.MOORE 与 MEELEY状态机的特征?

22.Latch和Register区别?行为描述中Latch如何产生?

23.单片机上电后没有运转,首先要检查什么?

24.集成电路前端设计流程,写出相关的工具。


1.FPGA设计工程师努力的方向


SOPC,高速串行I/O,低功耗,可靠性,可测试性和设计验证流程的优化等方面。随着芯片工艺的提高,芯片容量、集成度都在增加,FPGA设计也朝着高速、高度集成、低功耗、高可靠性、高可测、可验证性发展。芯片可测、可验证,正在成为复杂设计所必备的条件,尽量在上板之前查出bug,将发现bug的时间提前,这也是一些公司花大力气设计仿真平台的原因。另外随着单板功能的提高、成本的压力,低功耗也逐渐进入FPGA设计者的考虑范围,完成相同的功能下,考虑如何能够使芯片的功耗最低。高速串行IO的应用,也丰富了FPGA的应用范围,象xilinx的v2pro中的高速链路也逐渐被应用。 总之,学无止境,当掌握一定概念、方法之后,就要开始考虑FPGA其它方面的问题了。


2.简述FPGA等可编程逻辑器件设计流程


系统设计电路构思,设计说明与设计划分,电路设计与输入(HDL代码、原理图),功能仿真与测试,逻辑综合,门级综合,逻辑验证与测试(综合后仿真),布局布线,时序仿真,板级验证与仿真,加载配置,在线调试。
常用开发工具(Altera FPGA)
HDL语言输入:Text Editor(HDL语言输入),还可以使用Ultra Edit
原理图输入:Schematic Editor
IP Core输入:MegaWinzad
综合工具:Synplify/Synplify Pro,Qaustus II内嵌综合工具
仿真工具:ModelSim
实现与优化工具:Quartus II集成的实现工具有Assignment Editor(约束编辑器)、LogicLock(逻辑锁定工具)、PowerFit Fitter(布局布线器)、Timing Analyzer(时序分析器,STA分析工具)、Floorplan Editor(布局规划器)、Chip Editor(底层编辑器)、Design Space Explorer(设计空间管理器)、Design Assistant(检查设计可靠性)等。
后端辅助工具:Assembler(编程文件生成工具),Programmer(下载编程工具),PowerGauge(功耗仿真器)
调试工具:SignalTap II(在线逻辑分析仪),SignalProbe(信号探针)。
系统级设计环境:SOPC Builder,DSP Builder,Software Builder。


1.3    Quartus文件管理


1. 编译必需的文件:设计文件(.gdf、.bdf、EDIF输入文件、.tdf、verilog设计文件、.vqm、.vt、VHDL设计文件、. vht)、存储器初始化文件(.mif、.rif、.hex)、配置文件(.qsf、.tcl)、工程文件(.qpf)。
2. 编译过程中生成的中间文件(.eqn文件和db目录下的所有文件.tdf,.hdb,.xml等)
3. 编译结束后生成的报告文件(.rpt、.qsmg等)
4. 根据个人使用习惯生成的界面配置文件(.qws等)
5. 编程文件(.sof、.pof、.ttf等)


4.IC设计流程


写出一份设计规范,设计规范评估,选择芯片和工具,设计,(仿真,设计评估,综合,布局和布线,仿真和整体检验)检验,最终评估,系统集成与测试,产品运输。
设计规则:使用自上而下的设计方法(行为级,寄存器传输级,门电路级),按器件的结构来工作,做到同步设计,防止亚稳态的出现,避免悬浮的节点,避免总线的争抢(多个输出端同时驱动同一个信号)。
设计测试(DFT)强调可测试性应该是设计目标的核心,目的是排除一个芯片的设计缺陷,捕获芯片在物理上的缺陷问题。
ASIC设计要求提供测试结构和测试系向量。FPGA等默认生产厂商已经进行了适当的测试。
测试的10/10原则:测试电路的规模不要超过整个FPGA的10%,花费在设计和仿真测试逻辑上的时间不应超过设计整个逻辑电路的10%。


5.FPGA基本结构


可编程输入/输出单元,基本可编程逻辑单元,嵌入式块RAM,丰富的布线资源,底层嵌入式功能单元,内嵌专用硬核。
常用的电气标准有LVTTL,LCCMOS,SSTL,HSTL,LVDS,LVPECL,PCI等。
FPGA悬浮的总线会增加系统内的噪声,增加功率的损耗,并且具有潜在的产生不稳定性的问题,解决方案是加上拉电阻。
对于SRAM型器件,路径是通过编程多路选择器实现;对于反熔丝型器件,路径通过传导线(高阻抗,有RC延时)来实现的。这两种结构都显著加大了路径延时。


6.FPGA选型时要考虑哪些方面?


需要的逻辑资源、应用的速度要求,功耗,可靠性,价格,开发环境和开发人员的熟悉程度。


7.同步设计的规则


单个时钟域:
1、    所有的数据都要通过组合逻辑和延时单元,典型的延时单元是触发器,这些触发器被一个时钟信号所同步;
2、    延时总是由延时单元来控制,而不是由组合逻辑来控制;
3、    组合逻辑所产生的信号不能在没有通过一个同步延时单元的情况下反馈回到同一个组合逻辑;
4、    时钟信号不能被门控,必须直接到达延时单元的时钟输入端,而不是经过任何组合逻辑;
5、    数据信号必须只通向组合逻辑或延时单元的数据输入端。
多个时钟域:
把通过两个不同时钟作用区域之间的信号作为异步信号处理


8.你所知道的可编程逻辑器件有哪些?


PAL/GAL,CPLD,FPGA
PLA:可编程逻辑阵列,一种用于大规模的与阵列和或阵列的逻辑器件,用于实现布尔逻辑的不同组合。
PLA:可编程阵列逻辑,一种逻辑器件,由大规模的与阵列和规模小且数量固定的或门组成,可用于实现布尔逻辑和状态机。
PAL:很短的交货时间、可编程的、没有NRE(非循环工程)费用
门阵列:高密度性、能实现许多逻辑函数、速度相对较快


9.FPGA、ASIC、CPLD的概念及区别


FPGA(Field Programmable Gate Array)是可编程ASIC。
ASIC专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造的。根据一个用户的特定要求,能以低研制成本,短、交货周期供货的全定制,半定制集成电路。与门阵列等其它ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点。
FPGA采用同步时钟设计,使用全局时钟驱动,采用时钟驱动方式在各级专用布线资源上灵活布线,ASIC有时采用异步逻辑,一般采用门控时钟驱动,一旦设计完成,其布线是固定的。FPGA比ASIC开发周期短,成本低,设计灵活。
CPLD(Complex Programmable Logic Device)是复杂可编程逻辑器件。CPLD开关矩阵路径设计的一个优点是信号通过芯片的延时时间是确定的。设计者通过计算经由功能模块、I/O模块和开关矩阵的延迟就可以 任何信号的延迟时间,并且信号沿金属线传递所引起的延迟是可忽略的。
     CPLD    FPGA
内部结构    Product-term    Look-up Table
程序存储    内部EEPROM    SRAM,外挂EEPROM
资源类型    组合电路资源丰富    触发器资源丰富
集成度    低    高
使用场合    完成控制逻辑    能完成比较复杂的算法
速度    慢    快
其他资源    -    PLL、RAM和乘法器等
保密性    可加密    一般不能保密


10.锁存器(latch)和触发器(flip-flop)区别?


 电平敏感的存储器件称为锁存器,可分为高电平锁存器和低电平锁存器,用于不同时钟之间的信号同步。
由交叉耦合的门构成的双稳态的存储原件称为触发器。分为上升沿触发和下降沿触发。可以认为是两个不同电平敏感的锁存器串连而成。前一个锁存器决定了触发器的建立时间,后一个锁存器则决定了保持时间。
锁存器对脉冲电平敏感,在时钟脉冲的电平作用下改变状态。
锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据输入发生变化。
锁存器不同于触发器,它不在锁存数据时,输出端的信号随输入信号变化,就像信号通过一个缓冲器一样;一旦锁存信号起锁存作用,则数据被锁住,输入信号不起作用。锁存器也称为透明锁存器,指的是不锁存时输出对于输入是透明的。
应用场合:数据有效迟后于时钟信号有效。这意味着时钟信号先到,数据信号后到。在某些运算器电路中有时采用锁存器作为数据暂存器。
缺点:时序分析较困难。
不要锁存器的原因:1、锁存器容易产生毛刺,2、锁存器在ASIC设计中应该说比ff要简单,但是在FPGA的资源中,大部分器件没有锁存器这个东西,所以需要用一个逻辑门和ff来组成锁存器,这样就浪费了资源。
优点:面积小。锁存器比FF快,所以用在地址锁存是很合适的,不过一定要保证所有的latch信号源的质量,锁存器在CPU设计中很常见,正是由于它的应用使得CPU的速度比外部IO部件逻辑快许多。latch完成同一个功能所需要的门较触发器要少,所以在asic中用的较多。
寄存器用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果,它被广泛的用于各类数字系统和计算机中。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。 工程中的寄存器一般按计算机中字节的位数设计,所以一般有8位寄存器、16位寄存器等。
对寄存器中的触发器只要求它们具有置1、置0的功能即可,因而无论是用同步RS结构触发器,还是用主从结构或边沿触发结构的触发器,都可以组成寄存器。一般由D触发器组成,有公共输入/输出使能控制端和时钟,一般把使能控制端作为寄存器电路的选择信号,把时钟控制端作为数据输入控制信号。
寄存器的应用
1. 可以完成数据的并串、串并转换;
2.可以用做显示数据锁存器:许多设备需要显示计数器的记数值,以8421BCD码记数,以七段显示器显示,如果记数速度较高,人眼则无法辨认迅速变化的显示字符。在计数器和译码器之间加入一个锁存器,控制数据的显示时间是常用的方法。
3.用作缓冲器;
4. 组成计数器:移位寄存器可以组成移位型计数器,如环形或扭环形计数器。


11.JTAG信号


TCK:测试时钟输入,用于移位控制,上升沿将测试指令、测试数据和控制输入信号移入芯片;下降沿时将数据从芯片移出。
TMS:测试模式选择,串行输入端,用于控制芯片内部的JTAG状态机。
TDI:测试数据输入,串行输入端,用于指令和编程数据的输入,在时钟上升沿,数据被捕获。
TDO:测试数据输出,串行输出端,时钟下降沿,数据被驱动输出。
TRST:测试复位输入(仅用于扩展JTAG),异步、低电平有效,用于JTAG初始化时。


12.FPGA芯片内有哪两种存储器资源?


FPGA芯片内有两种存储器资源:一种叫block ram,另一种是由LUT配置成的内部存储器(也就是分布式ram,distribute ram)。Block ram由一定数量固定大小的存储块构成的,使用BLOCK RAM资源不占用额外的逻辑资源,并且速度快。但是使用的时候消耗的BLOCK RAM资源是其块大小的整数倍。


13.FPGA中可以综合实现为RAM/ROM/CAM的三种资源及其注意事项?


三种资源:block ram、触发器(FF)、查找表(LUT);
注意事项:
1、在生成RAM等存储单元时,应该首选block ram 资源;原因有二:使用block ram等资源,可以节约更多的FF和4-LUT等底层可编程单元,最大程度发挥器件效能,节约成本; block ram是一种可以配置的硬件结构,其可靠性和速度与用LUT和register构建的存储器更有优势。
2、弄清FPGA的硬件结构,合理使用block ram资源;
3、分析block ram容量,高效使用block ram资源和分布式ram资源(distribute ram)。


14.FPGA设计中对时钟的使用?(例如分频等)


FPGA芯片有固定的时钟路由,这些路由能有减少时钟抖动和偏差。需要对时钟进行相位移动或变频的时候,一般不允许对时钟进行逻辑操作,这样不仅会增加时钟的偏差和抖动,还会使时钟带上毛刺。一般的处理方法是采用FPGA芯片自带的时钟管理器如PLL,DLL或DCM,或者把逻辑转换到触发器的D输入。


15.Xilinx中与全局时钟资源和DLL相关的硬件原语


常用的与全局时钟资源相关的Xilinx器件原语包括:BUFG, IBUFGDS, BUFG, BUFGP, BUFGCE, BUFGMUX, BUFGDLL, DCM等。 


16.HDL语言的层次概念?


HDL语言是分层次的、类型的,最常用的层次概念有系统与标准级、功能模块级,行为级,寄存器传输级和门级。


17.查找表的原理与结构?


查找表(look-up-table)简称为LUT,本质上是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有 4位地址线的16x1的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出。


18.IC设计前端到后端的流程和EDA工具?


设计前端也称逻辑设计,后端设计也称物理设计,两者并没有严格的界限,一般涉及到与工艺有关的设计就是后端设计。
1:规格制定:客户向芯片设计公司提出设计要求。
2:详细设计:芯片设计公司(Fabless)根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。目前架构的验证一般基于 system C,仿真可以使用system C的仿真工具,CoCentric和Visual Elite等。
3:HDL编码:设计输入工具:ultra ,visual VHDL等
4:仿真验证:modelsim
5:逻辑综合:synplify
6:静态时序分析:synopsys的Prime Time
7:形式验证:Synopsys的Formality.


19.什么是“线与”逻辑,要实现它,在硬件特性上有什么具体要求?


 线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用OC门(集电极开路与非门)来实现,由于不用OC门可能使灌电流过大,而烧坏逻辑门,因此在输出端口应加一个上拉电阻。


20.IC设计中同步复位与异步复位的区别?


同步复位在时钟沿采复位信号,完成复位动作。
异步复位不管时钟,只要复位信号满足条件,就完成复位动作。异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。


21.MOORE 与 MEELEY状态机的特征?


       Moore 状态机的输出仅与当前状态值有关, 且只在时钟边沿到来时才会有状态变化。
       Mealy 状态机的输出不仅与当前状态值有关, 而且与当前输入值有关。


22.Latch和Register区别?行为描述中Latch如何产生?


本质的区别在于:latch是电平触发,register是边沿触发。
register在同一时钟边沿触发下动作,符合同步电路的设计思想,而latch则属于异步电路设计,往往会导致时序分析困难,不适当的应用latch则会大量浪费芯片资源。时序设计中尽量使用register触发。
行为描述中,如果对应所有可能输入条件,有的输入没有对应明确的输出,系统会综合出latch。比如://缺少else语句
always@( a or b) begin
           if(a==1)  q <= b;
end


23.单片机上电后没有运转,首先要检查什么?


首先应该确认电源电压是否正常;接下来就是检查复位引脚电压是否正常;然后再检查晶振是否起振了。
如果系统不稳定的话,有时是因为电源滤波不好导致的。在单片机的电源引脚跟地引脚之间接上一个0.1uF的电容会有所改善。如果电源没有滤波电容的话,则需要再接一个更大滤波电容,例如220uF的。遇到系统不稳定时,就可以并上电容试试(越靠近芯片越好)。


24.集成电路前端设计流程,写出相关的工具。


1)代码输入(design input)
用vhdl或者是verilog语言来完成器件的功能描述,生成hdl代码
语言输入工具:SUMMIT   VISUALHDL    MENTOR   RENIOR
图形输入:    composer(cadence);          viewlogic (viewdraw)
2)电路仿真(circuit simulation)
将vhd代码进行先前逻辑仿真,验证功能描述是否正确
数字电路仿真工具:
    Verolog:CADENCE   Verolig-XL  SYNOPSYS   VCS  MENTOR     Modle-sim
     VHDL:CADENCE     NC-vhdl  SYNOPSYS    VSS   MENTOR      Modle-sim
模拟电路仿真工具:
ANTI HSpice pspice,spectre micro microwave:    eesoft : hp
3)逻辑综合(synthesis tools)
逻辑综合工具可以将设计思想vhd代码转化成对应一定工艺手段的门级电路;将初级仿真中所没有考虑的门沿(gates delay)反标到生成的门级网表中,返回电路仿真阶段进行再仿真。最终仿真结果生成的网表称为物理网表。
 

你可能感兴趣的:(★求职笔试/面试题目及知识总结,fpga开发,人工智能面试,职场和发展,数字IC面试,FPGA基础知识题)