【FPGA】面试问题及答案整理合集

1、硬件描述语言和软件编程语言的区别

  硬件描述语言是一种用形式化的方法来描述数字电路和系统的语言。数字电路的设计者利用这种语言可以从上层到下层逐层描述自己的设计思想,用一系列分层次的模块来表示及其复杂的数字系统。然后利用电子设计自动化(EDA)工具来进行仿真验证,再把其中需要变为具体物理电路的模块组合经由自动综合工具转换到门级电路网表,再用专用集成电路(ASIC)或者现场可编程门阵列(FPGA)自动布局布线工具把网表转换为具体电路布线结构的实现,通俗点说,自己来设计内部电路。而软件编程语言是没法改变电路结构的,因为芯片内部已经固化,所以软件编程操作意味着是对内部寄存器的操作。

2、FPGA选型问题

  关于FPGA如何选芯片,其实就是根据项目实际情况,对选型芯片做一个综合评估,选择出最具“性价比”的芯片,一般情况下,芯片厂商都会按照产品系列列出所有的产品,直观的告诉你某个系列产品的应用场合。如何选择芯片厂商,要看项目的特殊需求、芯片厂商的供货、报价、以及己方的技术人员对产品的熟悉程度和芯片的成熟度,比如说是不是有较好的软件开发平台呀,还有就是芯片的内部资源,引脚封装、速度等级等。

3、建立时间和保持时间问题

  建立时间Tsu: 指数据信号到达触发器输入端的时间要早于 时钟敏感边沿 到达触发器的时间,只有满足建立时间,信号才能正确的保存到触发器,否则数据就不能在此时钟信号变化时被记录,从而无法正确保存到触发器。简言之,时钟沿到来之前,数据保持稳定不变的时间。
  保持时间:指 时钟边沿 到达后 输入数据 需要保持稳定不变的时间,满足这个条件,才能保证数据能够保存到触发器,否则,数据就不能在下一个时钟信号变化时被记录下来,导致无法正确的保存到触发器。简言之,时钟沿到来之后,数据保持稳定不变的时间。
  综述:输入的数据必须在建立时间前达到,且要持续到保持时间后。

3、亚稳态问题

  亚稳态:输入信号在时钟有效沿的建立时间和保持时间之间变化,导致其不满足触发器建立保持时间的时序要求,使得输出有一段时间的不确定状态。
  亚稳态现象包括如下几种:
  1、跨时钟域中的亚稳态:由于源信号时钟与目的信号时钟的相移未知,可能导致保持时间和建立时间条件不满足,从而产生亚稳态现象。——采用FIFO对跨时钟域数据通信进行缓冲设计。
  2、异步信号中的亚稳态:由于异步信号不与触发器同步时钟同步,所以可能导致保持时间和建立时间条件不满足,产生亚稳态现象。—— 通过同步处理来解决。
  3、异步复位检测中的亚稳态:复位信号的变化出现在建立或者保持时间内,也无法保证满足Tsu和Th的要求,出现亚稳态。——对复位电路采用异步复位、同步释放方式处理。

4、竞争和冒险问题

  竞争(Competition): 在组合逻辑电路中,某个输入变量通过多条(两条及以上)途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争。竞争又分为临界和非临界竞争,不会产生错误输出的竞争为非临界竞争。产生暂时性或永久性错误的竞争为临界竞争。
  冒险(risk):信号在器件内部通过连线和逻辑单元时,都有一定延时。延时的时间与连线的长短和逻辑单元数目有关,同时还受器件的制造工艺、电压、温度等影响;
  多路信号在电平值变化时也都存在不同的延迟,对应的组合逻辑的输出也就有了先后顺序,因此就产生了冒险。冒险现象中会出现一些不正确的尖峰信号,称为”毛刺”。如果一个组合逻辑电路中有”毛刺”出现,就说明该电路存在冒险。也可以说由于竞争引起电路输出发生瞬间错误,该现象为冒险。
  竞争和冒险都是由于存在电路延迟引起的,同时冒险是由竞争造成的,而竞争是因为电路中的时延不同,但是有竞争的时候不一定会出现冒险。解决方法:1:加滤波电路,消除毛刺的影响;2:加选通信号,避开毛刺;3:增加冗
余项消除逻辑冒险。

5、乒乓操作问题

  乒乓操作是一个主要用于数据流控制的处理技巧,外部输入数据流通过“输入数据选择控制”模块送入两个数据缓冲区中,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM(Dual RAM),SRAM,SDRAM,FIFO等。在第1个缓冲周期,将输入的数据流缓存到“数据缓冲1”模块,在第2个缓冲周期,“输入数据选择控制”模块将输入的数据流缓存到“数据缓冲2”模块的同时,“输出数据选择控制”模块将“数据缓冲1”模块第一个周期缓存的数据流送到“后续处理”,模块进行后续的数据处理,在第三个缓冲周期,在“输入数据选择控制”模块的再次切换后,输入的数据流缓存到“数据缓冲1”模块,与此同时,“输出数据选择控制”模块也做出切换,将“数据缓冲2”模块缓存的第二个周期的数据送到“后续处理模块”,如此循环。这里正是利用了乒乓操作完成数据的无缝缓冲与处理,乒乓操作可以通过“输入数据选择控制”和“输出数据选择控制”按节拍,相互配合地进行来回切换,将经过缓冲的数据流没有停顿的送到“后续处理模块”。

6、同步和异步逻辑电路

  同步逻辑:时钟之间有着固定的因果关系,且触发只和时钟有关,只要在时钟沿处才能触发。
  同步电路: 同步电路中所有触发器的时钟端连接在同一时钟源上,所有触发器状态的改变都与时钟信号同步。因此当时钟沿到来则输出变化,否则保持,直到下一时钟脉沿到来才发生变化。
  异步逻辑:时钟之间没有固定的因果关系,其触发和多种控制因素有关,当任何一个因素发生变化,那么都能实现触发。
  异步电路中没有统一的时钟。有些触发器的时钟输入端与时钟源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。
  总结:同步逻辑和异步逻辑不是完全割裂的,异步逻辑中肯定有同步逻辑的成分在,但同步逻辑中不可能有异步逻辑的成分。

7、同步复位和异步复位

  同步复位:复位信号与clk有效,当clk有效的时候,复位才有效。
  优点:有利于进行时序分析;由于只在clk有效的时候有效,因此能防止毛刺现象的出现。
  缺点:复位信号必须大于时钟周期,才能被系统真正识别;大部分逻辑器件中的D触发器都只有异步复位端口,因此采用同步复位的话,需要在寄存器的数据输入端插入组合逻辑,此时我们就需要考虑组合逻辑延迟等因素。
  异步复位:复位信号与clk无关,只和自身输入的复位信号有关。
  优点:大部分逻辑器件中的D触发器都只有异步复位端口,无需再插入组合逻辑,省资源;设计相对简单;
  缺点:复位信号可能不满足建立和保持时间要求,因此容易出现亚稳态;容易受毛刺影响;

8、MOORE 与 MEELEY 状态机的特点

  Moore 有限状态机输出只与当前状态有关,与输入信号的当前值无关。在时钟脉冲的 有效边沿作用后的有限个门延后,输出达到稳定值。从时序上看,Moore 状态机属于同步输出状态机。Moore 有限状态机最重要的特点就是将输入与输出信号隔离开来。
  Mealy 状态机的输出是现态和所有输入的函数,随输入变化而随时发生变化。从时序上看,Mealy 状态机属于异步输出状态机,它不依赖于时钟。

9、同步和异步FIFO

  同步FIFO:读写都是同一个时钟源;异步FIFO:读写不是同一个时钟源。

  最常见的就是异步FIFO的问题,因为异步FIFO会存在如下几种情形:
  1、写时钟快于读时钟,写和读的过程中没有空闲周期
  答:假设写时钟频率为80MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中没有空闲周期,分析过程:写时钟周期Tw = 1000/80 ns = 12.5ns;同理读时钟周期为20ns;突发写长度为120个数据,写120个数据耗时120 * 12.5 = 1500ns;1500ns时间内读出数据1500/20ns = 75个;故最小FIFO深度为120 – 75 = 45。

  2、写时钟频率大于读时钟频率,但在读写的过程中存在空闲周期
  答:假设写时钟频率为80MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中有空闲周期,每2个写时钟周期写1个数据,每4个时钟周期读一个数据,那么写一个数据需要25ns,读一个数据需要80ns,那么由于突发写数据个数为120个,写这么多数据需要时间120 * 25ns = 3000ns;4个读时钟周期读一个数据,因此读一个数据需要时间80ns,3000ns读了3000/80 = 37.5个数据(0.5不算一个数据,没读完整),约等于37个数据。
所以,FIFO的最小深度为120 – 37 = 83。

  3、写时钟慢于读时钟,且读写过程中没有空闲周期
  答:假设写时钟频率为30MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中没有空闲周期,分析:这种情况下永远也不会发生数据丢失的情况;fifo的深度为1。

  4、写时钟频率小于读时钟频率,但读写过程中存在空闲周期
  答:假设写时钟频率为30MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中有空闲周期,每2个写时钟周期写1个数据,每4个时钟周期读一个数据,分析:写时钟周期1000/30 ns = 100/3 ns;读时钟周期 20ns;写一个数据需要2个时钟,也就是200/3 ns;读一个数据需要4个时钟,也就是80 ns;写120个数据需要时间8000ns,这段时间内读出数据8000/80 = 100个;
因此,FIFO的最小深度为120 – 100 = 20;

  5、读写时钟速率相同,且无空闲时钟
  答:分析:如果读写时钟之间没有相位差,则不需要FIFO就可以进行读写;如果二者存在相位差,只需要FIFO的深度为1即可。

  6、读写时钟频率一致,但在读写过程中存在空闲周期
  答:读写时钟均为50MHz,突发传输大小为120,写和读的过程中有空闲周期,每2个写时钟周期写1个数据,每4个时钟周期读一个数据,分析:两个时钟写一个数据,需要时间40ns;4个时钟读一个数据,需要80ns;由于突发长度120,需要120*40 = 4800ns写完;这段时间读出数据个数:4800/80 = 60;所以,FIFO最小深度为120 – 60 = 60;

未完待续,尚在总结中。。。。。

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年3月22日 下午11:04
下一篇 2023年3月22日 下午11:05

相关推荐