2021最新FPGA面试题

14 篇文章 1 订阅

1、简述建立时间和保持时间

  建立时间Tsu(setup):触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。

  保持时间Th(hold):触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。

关于上升沿触发器如何需要建立时间和保持时间的详细解释:https://www.cnblogs.com/ylsm-kb/p/9129699.html

2、简述触发器和锁存器之间的差别

  锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态。

  D触发器对时钟边沿敏感,检测到上升沿或下降沿触发瞬间改变状态。

3、计算最小周期

  Tco:寄存器时钟输入到数据输出的时间

  Tdata:寄存器间的走线延迟

  Tsu :建立时间

  Tskew:时钟偏斜

   最小时钟周期:Tmin = Tco + Tdata + Tsu - Tskew。最快频率Fmax = 1/Tmin

   Tskew = Tclkd – Tclks。

4、时钟抖动和时钟偏移的概念及产生原因,如何避免?

时钟抖动jitter:指时钟信号的跳变沿不确定,故是时钟频率上的不一致。

时钟偏移Skew:指全局时钟产生的各个子时钟信号到达不同触发器的时间点不同,是时钟相位的不一致。

jitter主要受外界干扰引起,通过各种抗干扰手段可以避免。而skew由数字电路内部各路径布局布线长度和负载不同导致,利用全局时钟网络可尽量将其消除。

5、什么是亚稳态,产生的原因,如何消除?

   如果触发器的输入电压采样时间过短,即时序不够,则触发器需要花很长时间来实现输出逻辑达到标准电平,也就是说,电路处于中间态的时间变长,使得电路“反应”迟钝,这就是“亚稳态”。(例如输入信号在时钟有效沿的建立时间和保持时间之间改变        了,导致不满足触发器的建立时间或保持时间,导致输出有一段时间的不稳定态,就是亚稳态。)

 消除:两级或多级寄存器同步。理论上亚稳态不能完全消除,只能降低,一般采用两级触发器同步就可以大大降低亚稳态发生的概率,再加多级触发器改善不大。

 亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。使用两级触发器来使异步电路同步化的电路其实叫做“一位同步器”,他只能用来对一位异步信号进行同步。两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间 + 第二级触发器的建立时间 < = 时钟周期。更确切地说,输入脉冲宽度必须大于同步时钟周期与第一级触发器所需的保持时间之和。最保险的脉冲宽度是两倍同步时钟周期。 所以,这样的同步电路对于从较慢的时钟域来的异步信号进入较快的时钟域比较有效,对于进入一个较慢的时钟域,则没有作用 。

解决方法:

1 降低系统时钟频率

2 用反应更快的FF

3 引入同步机制,防止亚稳态传播(可以采用前面说的加两级触发器)。

4 改善时钟质量,用边沿变化快速的时钟信号

6、同步复位和异步复位的区别

  同步复位是复位信号随时钟边沿触发有效。异步复位是复位信号有效和时钟无关。

  如异步复位:

 

 同步复位:



同步逻辑和异步逻辑的区别

同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系

同步电路和异步电路区别

同步电路有统一的时钟源,经过PLL分频后的时钟驱动的模块,因为是一个统一的时钟源驱动,所以还是同步电路。异步电路没有统一的时钟源。

7、什么是线与逻辑?在硬件电路上有什么要求?

 线与逻辑是指两根线直接相连能够实现与的功能。在硬件上需要OC门,如果不采用OC门会导致门电路管电流过大而烧坏逻辑门。用OC门实现线与,应在输出端口加一个上拉电阻。

8、什么是竞争冒险?如何判断?怎么样消除?

  在组合逻辑电路中,同一信号经过不同的路径到达某一汇合点的时间有先有后,这种现象称为竞争。

  由于竞争而使电路发生瞬时错误的现象称为冒险。

  消除方法:

                  1、输出端加滤波电容。在输出端和地直接接一个几十皮法的电容可以吸收掉尖峰干扰脉冲。

                  2、加选通脉冲

                  3、修改逻辑设计

                  4、利用格雷码每次只有一位跳变,消除了竞争冒险产生的条件。

                  5、

  举例:

         下面这个电路,使用了两个逻辑门,一个非门和一个与门,本来在理想情况下F的输出应该是一直稳定的0输出,但是实际上每个门电路从输入到输出是一定会有时间延迟的,这个时间通常叫做电路的开关延迟。而且制作工艺、门的种类甚至制造时微小的工艺偏差,都会引起这个开关延迟时间的变化。

                                                                                

                                                                                  



                                                                       F = A & ~A   

有竞争不一定产生冒险,如红线处。有冒险一定存在竞争。

9、异步FIFO深度计算

 如果数据流连续不断则FIFO深度无论多少,只要读写时钟不同源同频则都会丢数;

FIFO用于缓冲块数据流,一般用在写快读慢时,
FIFO深度 / (写入速率 - 读出速率) = FIFO被填满时间 应大于 数据包传送时间= 数据量 / 写入速率

例:A/D采样率50MHz,dsp读A/D读的速率40MHz,要不丢失地将10万个采样数据送入DSP,在A/D在和DSP之间至少加多大容量(深度)的FIFO才行?
100,000 / 50MHz = 1/ 500 s = 2ms
(50MHz - 40MHz) * 1/500 = 20k既是FIFO深度。

10、画出用D触发器实现2倍分频的逻辑电路

将D触发器的Q非端接到数据输入端D即可实现二分频,说白了就是CLK时钟信号的一个周期Q端电平反转一次。Q和~Q输出的都是二分频电路,只不过是反相的。~Q是先高后低。

四分频电路:

11、系统最高速度计算(最快时钟频率)和流水线设计思想:

同步电路的速度是指同步系统时钟的速度,同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就愈大。假设Tco是触发器的输入数据被时钟打入到触发器到数据到达触发器输出端的延时时间(Tco=Tsetpup+Thold);Tdelay是组合逻辑的延时;Tsetup是D触发器的建立时间。假设数据已被时钟打入D触发器,那么数据到达第一个触发器的Q输出端需要的延时时间是Tco,经过组合逻辑的延时时间为Tdelay,然后到达第二个触发器的D端,要希望时钟能在第二个触发器再次被稳定地打入触发器,则时钟的延迟必须大于Tco+Tdelay+Tsetup,也就是说最小的时钟周期Tmin =Tco+Tdelay+Tsetup,即最快的时钟频率Fmax =1/Tmin。FPGA开发软件也是通过这种方法来计算系统最高运行速度Fmax。因为Tco和Tsetup是由具体的器件工艺决定的,故设计电路时只能改变组合逻辑的延迟时间Tdelay,所以说缩短触发器间组合逻辑的延时时间是提高同步电路速度的关键所在。由于一般同步电路都大于一级锁存,而要使电路稳定工作,时钟周期必须满足最大延时要求。故只有缩短最长延时路径,才能提高电路的工作频率。可以将较大的组合逻辑分解为较小的N块,通过适当的方法平均分配组合逻辑,然后在中间插入触发器,并和原触发器使用相同的时钟,就可以避免在两个触发器之间出现过大的延时,消除速度瓶颈,这样可以提高电路的工作频率。这就是所谓"流水线"技术的基本设计思想,即原设计速度受限部分用一个时钟周期实现,采用流水线技术插入触发器后,可用N个时钟周期实现,因此系统的工作速度可以加快,吞吐量加大。注意,流水线设计会在原数据通路上加入延时,另外硬件面积也会稍有增加。

12、FPGA设计工程师努力的方向:

SOPC,高速串行I/O,低功耗,可靠性,可测试性和设计验证流程的优化等方面。

随着芯片工艺的提高,芯片容量、集成度都在增加,FPGA设计也朝着高速、高度集成、低功耗、高可靠性、高可测、可验证性发展。芯片可测、可验证,正在成为复杂设计所必备的条件,尽量在上板之前查出bug,将发现bug的时间提前,这也是一些公司花大力气设计仿真平台的原因。另外随着单板功能的提高、成本的压力,低功耗也逐渐进入FPGA设计者的考虑范围,完成相同的功能下,考虑如何能够使芯片的功耗最低,据说altera、xilinx都在根据自己的芯片特点整理如何降低功耗的文档。高速串行IO的应用,也丰富了FPGA的应用范围,象xilinx的v2pro中的高速链路也逐渐被应用。

13、异步信号同步处理

    对于单bit信号:

            慢时钟域到快时钟域信号的转换,用沿同步:

                                                            

         要求输入异步信号的宽度应该有两个快速时钟域的时钟周期(在快时钟域下打两拍,采上升沿。需要前面的限制吗?)。

     快时钟域到慢时钟域信号的转换,用脉冲同步:

                                                               

          要求输入异步脉冲信号之间的间隔至少要在两个慢速时钟的时钟周期之上,如果小于这个值,两个快时钟域的单bit信号转到慢时钟域可能就变成了一个两周期宽度的信号了。

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

三种资源:BLOCK RAM,触发器(FF),查找表(LUT);

注意事项:

1:在生成RAM等存储单元时,应该首选BLOCK RAM 资源;其原因有二:第一:使用BLOCK RAM等资源,可以节约更多的FF和4-LUT等底层可编程单元。使用BLOCK RAM可以说是“不用白不用”,是最大程度发挥器件效能,节约成本的一种体现;第二:BLOCK RAM是一种可以配置的硬件结构,其可靠性和速度与用LUT和REGISTER构建的存储器更有优势。

2:弄清FPGA的硬件结构,合理使用BLOCK RAM资源;

3:分析BLOCK RAM容量,高效使用BLOCK RAM资源;

4:分布式RAM资源(DISTRIBUTE RAM)

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

15、HDL语言的层次概念?

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

16、IC设计前端到后端的流程和EDA工具?

设计前端也称逻辑设计,后端设计也称物理设计,两者并没有严格的界限,一般涉及到与工艺有关的设计就是后端设计。

1:规格制定:客户向芯片设计公司提出设计要求。

2:详细设计:芯片设计公司(Fabless)根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。目前架构的验证一般基于systemC语言,对价后模型的仿真可以使用systemC的仿真工具。例如:CoCentric和Visual Elite等。

3:HDL编码:设计输入工具:ultra ,visual VHDL等

4:仿真验证:modelsim

5:逻辑综合:synplify

6:静态时序分析:synopsys的Prime Time

7:形式验证:Synopsys的Formality.

 IC设计分为前端和后端。前端设计主要将HDL语言-->网表,后端设计是网表-->芯片版图。

 前端主要有需求分析与架构设计、RTL设计、仿真验证、逻辑综合、STA、形式验证。后端主要包括DFT、布局规划、布线以及版图物理验证。

17、MOORE 与 MEELEY状态机的特征?

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

   Mealy 状态机的输出不仅与当前状态值有关, 而且与当前输入值有关。

18、说说静态、动态时序模拟的优缺点?

静态时序分析是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。

动态时序模拟就是通常的仿真,因为不可能产生完备的测试向量,覆盖门级网表中的每一条路径。因此在动态时序分析中,无法暴露一些路径上可能存在的时序问题;

19、FPGA内部结构及资源:

FPGA主要由可编程单元、可编程I/O单元及布线资源构成。

可编程逻辑单元(可配置逻辑单元,CLB)由两个SLICE构成,SLICE主要包括实现组合逻辑的LUT和实现时序逻辑的触发器。FPGA内部还包含专用存储单元BRAM,运算单元DSP Slice,及专用内嵌功能单元,如:PLL、Serdes等。

20、名词解释,写出下列缩写的中文(或者英文)含义:

FPGA :Field Programmable Gate Array 现场可编程门阵列
VHDL:( Very-High-Speed Integrated Circuit Hardware Description Language) 甚高速集成电路硬件描述语言
HDL :Hardware Description Language硬件描述语言
EDA: Electronic Design Automation 电子设计自动化
CPLD: Complex Programmable Logic Device 复杂可编程逻辑器件
PLD :Programmable Logic Device 可编程逻辑器件
GAL: generic array logic 通用阵列逻辑
LAB: Logic Array Block 逻辑阵列块
9. CLB :Configurable Logic Block 可配置逻辑模块
EAB: Embedded Array Block 嵌入式阵列块
SOPC: System-on-a-Programmable-Chip可编程片上系统
LUT :Look-Up Table 查找表
JTAG: Joint Test Action Group 联合测试行为组织
IP: Intellectual Property 知识产权
ASIC :Application Specific Integrated Circuits 专用集成电路
ISP :In System Programmable 在系统可编程
ICR :In Circuit Re-config 在电路可重构
RTL: Register Transfer Level 寄存器传输级
21、FPGA内部LUT实现组合逻辑的原理:

LUT相当于存放逻辑表达式对应真值表的RAM。软件将逻辑表达式所有可能结果列出后存放在RAM中,输入作为RAM地址,输出为逻辑运算结果。如使用LUT模拟二输入“与”逻辑。列出真值表:00 – 0,01 – 0,10 – 0,11 – 1。此时将00 01 10 11作为地址线,依次将结果0 0 0 1存放在RAM中。当输入00时及输出0&0=0.

22、 低功耗技术:

功耗可用公式描述:Power = KFCV^2,即功率等于常数系数工作频率负载电容值*电压的平方。

故从以下几个方面降低功耗方式:

a.控制工作频率:降低频率增大数据路径宽度,动态频率调整,门控时钟(时钟使能有效时钟才进入寄存器时钟输入引脚)

b.减少电容负载:使用几何尺寸更小的逻辑门,其电容负载较小,功率也随之减少。

c.降低工作电压:动态改变工作电压、零操作电压(直接关闭系统中一部分的电源)

23、MOS管基本概念及画图:

MOS中文意思是金属氧化物半导体场效应管,由栅极(G)、漏级(D)、源级(S)组成。分为PMOS和NMOS两种类型,区别在于G级高电平时,N型管导通,P型管截止。两者往往是成对出现的,即CMOS。只要一只导通,另一只则不导通,现代单片机主要是采用CMOS工艺制成的。

画图一般需要根据一个简单的逻辑表达式,画出CMOS电路图结构。需要掌握常用逻辑门的实现方式。

总体来看还是挺好记的,与非门和或非门都是上下各两个MOS管,且上面是PMOS,下面是NMOS。不同之处在于与非是“上并下串”,或非是“上串下并”。

24、FPGA详细设计流程(面试提问)

与数字IC设计流程类似,以xilinx vivado工具为例,主要有以下步骤:系统规划、RTL输入、行为仿真、逻辑综合、综合后仿真(可选)、综合后设计分析(时序及资源)、设计实现(包括布局布线及优化)、实现后设计分析(时序及资源)、板级调试、bitstream固化。

25、时序约束相关有哪几种时序路径:

    input paths:外部引脚到内部寄存器

    register-to-register paths:系统内部寄存器到寄存器路径

    output paths:内部寄存器到外部引脚的路径

    port to port paths:FPGA输入端口到输出端口路径(不常用)

26、创建时序约束的关键步骤:

baseline约束:create clocks  define clocks interactions  
I/O约束:set input and output delays  
例外约束:set timing execptions(set_max_delay/set_min_delay、set_multicycle_path、set_false_path)
设计初期可先不加I/O约束,但baseline约束要尽早建立。

27、 SRAM和DRAM的区别

SRAM是静态随机访问存储器,由晶体管存储数据,无需刷新,读写速度快。DRAM是动态随机访问存储器,由电容存储数据,由于电容漏电需要动态刷新,电容充放电导致读写速度较SRAM低。但DRAM成本较低,适合做大容量片外缓存。

28、CMOS和TTL电路区别是什么?

两者区别主要体现在三个方面:

结构:CMOS电路由场效应管构成,TTL由双极性晶体管构成。

电平范围:CMOS逻辑电平范围大(5~15V),TTL只工作在5V以下,因此CMOS噪声容限比TTL大,抗干扰能力强。

功耗与速率:CMOS的功耗比TTL小,但工作频率低于TTL。

    TTL不能直接驱动CMOS电平,需要加上拉电阻,而CMOS可以直接驱动TTL

29、JTAG接口信号及功能

JTAG实际上使用的只有四个信号:时钟TCK、状态机控制信号TMS、数据输入信号TDI、数据输出信号TDO。

30、上拉电阻用途:
1、当 TTL 电路驱动 COMS 电路时,如果 TTL 电路输出的高电平低于 COMS 电路的最低 高电平 (一般为 3.5V ) , 这时就需要在 TTL 的输出端接上拉电阻, 以提高输出高电平的值。
2、 OC 门电路必须加上拉电阻,以提高输出的高 电平值。
3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
4、在 COMS 芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。
5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。
6、提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。
7、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰

31、有四种复用方式,频分多路复用,写出另外三种
四种复用方式:频分多路复用( FDMA ),时分多路复用( TDMA ),码分多路复用(CDMA ),波分多路复用( WDM A) 。

32、基尔霍夫定理的内容
基尔霍夫定律包括电流定律和电压定律:
电流定律: 在集总电路中, 在任一瞬时, 流向某一结点的电流之和恒等于由该结点流出的电流之和 。
电压定律: 在集总电路中,在任一瞬间, 沿电路中的任一回路绕行一周,在该回路上电动势之和恒等于各电阻上的电压降之和

33、三段式状态机

一段式:
只有一个always block,把所有的逻辑(输入、输出、状态)都在一个always block的时序逻辑中实现。这种写法看起来很简洁,但是不利于维护,如果状态复杂一些就很容易出错,不推荐这种方法。

    在简单的状态机可以使用。

二段式:
有两个always block,把时序逻辑和组合逻辑分隔开来。时序逻辑里进行当前状态和下一状态的切换,组合逻辑实现各个输入、输出以及状态判断。这种写法不仅便于阅读、理解、维护,而且利于综合器优化代码,利于用户添加合适的时序约束条件,利于布局布线器实现设计。在两段式描述中,当前状态的输出用组合逻辑实现,可能存在竞争和冒险,产生毛刺。

    要求对状态机的输出用寄存器打一拍,但很多情况不允许插入寄存器节拍,此时使用三段式描述。其优势在于能够根据状态转移规律,在上一状态根据输入条件判断出当前状态的输出,从而不需要额外插入时钟节拍。

三段式:
有三个always block,一个时序逻辑采用同步时序的方式描述状态转移,一个采用组合逻辑的方式判断状态转移条件、描述状态转移规律,第三个模块使用同步时序的方式描述每个状态的输出。代码容易维护,时序逻辑的输出解决了两段式组合逻辑的毛刺问题,但是从资源消耗的角度上看,三段式的资源消耗多一些。

二段式和三段式的区别主要是每个状态的输出使用组合逻辑还是用时序逻辑,组合逻辑实现,可能存在竞争和冒险,产生毛刺。

34、什么是状态图?
状态图是以几何图形的方式来描述时序逻辑电路的状态转移规律以及输出与输入的关系。

35、用你熟悉的设计方式设计一个可预置初值的 7 进制循环计数器 ,15 进制的呢?
module counter7(clk,rst,load,data,cout);
input clk,rst,load;
input [2:0] data;
output reg [2:0] cout;
always@(posedge clk) begin
if(!rst)
cout<=3 ’ d0;
else if(load)
cout<=data;
else if(cout>=3 ’ d6)
cout<=3 ’ d0;
else
cout<=cout+3 ’ d1;
end
endmodule

36、你所知道的可编程逻辑器件有哪些?
PAL , PLA , GAL , CPLD , FPGA
37、SRAM,FALSH MEMORY,DRAM , SSRAM及 SDRAM的区别 ?

SRAM :静态随机存储器,存取速度快,但容量小,掉电后数据会丢失,不像DRAM需要不停的 REFRESH ,制造成本较高,通常用来作为快取(CACHE)记忆体使用。
FLASH :闪存,存取速度慢,容量大,掉电后数据不会丢失
DRAM :动态随机存储器,必须不断的重新的加强 (REFRESHED) 电位差量,否则电位差将降低至无法有足够的能量表现每一个记忆单位处于何种状态。价格比 SRAM 便宜,但访问速度较慢,耗电量较大,常用作计算机的内存使用。
SSRAM : 即同步静态随机存取存储器。 对于 SSRAM 的所有访问都在时钟的上升 /下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。
SDRAM :即同步动态随机存取存储器。

38、有源滤波器和无源滤波器的区别
无源滤波器:这种电路主要有无源元件 R、 L 和 C组成
有源滤波器:集成运放和 R、C 组成,具有不用电感、体积小、重量轻等优点。集成运放的开环电压增益和输入阻抗均很高, 输出电阻小, 构成有源滤波电路后还具有一定的电压放大和缓冲作用。 但集成运放带宽有限, 所以目前的有源滤波电路的工作 频率难以做得很高。

原文:https://blog.csdn.net/jh18355358269/article/details/111935098

  • 6
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值