FPGA面试题1

一、填空题

1. 随着 EDA 技术的不断完善与成熟, 自顶向下 的设计方法更多的被应用于 Verilog HDL 设计当中。

2. 阻塞赋值符号为 = ,非阻塞赋值符号为 <=。

二、选择题

1. 以下对解决亚稳态问题有效果的方法是:(ABCD )。

A. 用反应更快速的 DFF

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

C. 降低时钟频率

D. 引入同步机制,如加两级触发器(打两拍)

2. 在 Verilog HDL 的端口声明语句中,用(A)关键字声明端口为双向端口。

A. inout B. INOUT

C. buffer D. BUFFER

3. 用 Verilog HDL 的 assign 语句建模的方法一般称为(A)方法。

A. 连续赋值 B. 并行赋值

C. 串行赋值 D. 函数赋值

4. FPGA 可编程逻辑基于的可编程结构基于( LUT 结构 )。

A. LUT 结构 B. 乘积项结构

C. PLD D. 都不对

5. 要进行完成综合布局布线后的时序仿真,下列哪种文件可以不需要(D)。

A. 门级网表文件 B. 标准延时文件

C. 底层库单元 D. 管脚分配文件

6. 下列操作会导致仿真结果与最终电路实现不一致的是( B )。

A. 存在多余敏感信号 B. 敏感信号缺失

C. 组合逻辑生成信号做异步复位 D. 都不对

7. 在 Verilog 中下列哪种方式可能会产生锁存器( B )。

A. always@(posedge clk)块中 if 没有对应的 else 分支

B. 描述组合逻辑时,case 语句分支描述不完整 (if —— else 语句缺失else)

C. 定义寄存器时没有设置初始值

D. 例化模块时,输出端口连接不完全

8. 下列复位操作会导致不同时复位的是( B )。

A. 全局异步复位

B. 既有同步复位又有异步复位

C. 全局同步复位

D. 都不对

9. 下列哪些信号需要列入敏感信号列表中( ABCD )。

A. 异步复位/置位信号

B. 同步复位/置位信号

C. 时钟信号

D. 组合逻辑赋值信号 (通配符“*”)

10. 下列哪些属于组合逻辑( AB )。

A. 无记忆部件

B. 由与、或、非门组成的网络

C. 记忆部件

D. 由触发器和与门组成的网络

11. 下列哪些属于跨时钟域的合理处理方式( ABCD )。

A. 两级同步化

B. 使用 FIFO 同步

C. 使用握手信号

D. 使用双端口 RAM 同步

12. 下列哪种方法不符合全同步设计原则( CD )。

A. 只使用单一的时钟信号

B. 使用组合逻辑作为异步复位信号

C. 高速时钟分频后,作为后级触发器的使能信号(时钟异步)是因为前后级触发器的时钟不一样

D. 使用 LATCH 实现数据锁存

13. 下列属于功能彷真的是( D )。

A. 考虑信号的时延

B. 考虑信号的大小

C. 考虑信号的规律

D. 不考虑信号的时延

14. 如果 a=1,b=0,则逻辑表达式(a AND b)OR( NOT b AND a)的值是(B )。

A. 0 B. 1

C. 2 D. 不确定

15. 目前的 EDA 工具最高只能接受( C )描述的 HDL 文件进行逻辑综合。

A. 行为级或系统级

B. 系统级或门级

C. 行为级或寄存器传输级

D. 寄存器传输级或系统级

16. FPGA 器件是基于( A)结构的。

A. SRAM B. RAM

C. ROM D. PROM

17. 以下说法错误的是( C )。

A. 行为综合:从算法表示、行为描述转换到寄存器传输级(RTL)

B. 逻辑综合:RTL 级描述转换到逻辑门级(包括触发器)

C. 版图综合或结构综合:从逻辑门表示转换到版图表示,或转换到 PLD 器件

的配置网表表示

D. 综合器是人工实现上述转换的软件工具,是能将原理图或 HDL 语言描述的

电路功能转化为具体电路结构网表的工具

18. FPGA 在线逻辑分析工具的作用( A )。

A. 在线下载版本和在线分析信号

B. 在线编译版本和在线下载版本

C. 在线编译版本和在线修改逻辑

D. 在线修改逻辑和在线下载版本

19. 下面那个语句可综合 ( D )。

A. 延时语句 B. initial

C. timescale D. for 循环

20. 下列属于逻辑运算符的有 ( ABC )。

A. && B. ||

C. ! D. &

三、分析题

1. FPGA 和 C 语言有什么联系?Verilog 与 C 语言的区别?

参考答案:FPGA 和 C 的联系:HLS/OpenCL。

Verilog 是硬件描述语言,经过分析综合、布局布线、生成下载文件,用于配置

FPGA 芯片内部逻辑资源的连接方式。C 是编程语言,经过预处理、编译、汇编

和链接,得到可以被处理器执行的可执行文件。

2. Verilog 中 task、function、generate 功能模块区别对比,分别适合在什么场合

下使用,为什么?

参考答案:

1) task:可以无输入输出,可以返回多个值,可以调用其他的函数或任务;

2) function:必须有至少一个输入,返回一个值,可以调用其他函数,不可调用

其他任务;

3) generate for:通过循环例化多个代码块,对电路进行展开/复制;

4) generate if/case:根据条件在多个代码块之间选择一个进行综合。

3. 简述同步电路和异步电路的区别。

参考答案:

同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。

异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。

4. 在 Quartus 中如何做管脚约束。

参考答案:Pin planner、Tcl 脚本、Assignment Editor。

5. 解释建立时间与保持时间的概念。

参考答案:建立时间是指触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。保持时间是指触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。

6. 为什么触发器要满足建立时间和保持时间?

参考答案:因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在 0和 1 之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。(比较容易理解的方式)换个方式理解:需要建立时间是因为触发器的 D 端像一个锁存器在接受数据,为了稳定的设置前级门的状态需要一段稳定时间;需要保持时间是因为在时钟沿到来之后,触发器要通过反馈来锁存状态,从后级门传到前级门需要一段时间。

7. 什么是亚稳态?为什么两级触发器可以防止亚稳态传播?

参考答案:

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

8. 异步时钟域信号如何进行同步?

答:单 bit 信号从慢到快:在快时钟域同步打拍,将信号同步到快时钟域;

单 bit 信号从快到慢:拓展位宽后进行同步打拍;

多 bit 信号从快到慢:异步 FIFO;

多 bit 信号从慢到快:异步 FIFO、握手信号。

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

参考答案:

电平敏感的存储器件称为锁存器。可分为高电平锁存器和低电平锁存器,用于不同时钟之间的信号同步。由两个交叉耦合的门构成的双稳态的存储元件称为触发器。分为上升沿触发和下降沿触发。可以认为是两个不同电平敏感的锁存器串连而成。前一个锁存器决定了触发器的建立时间,后一个锁存器则决定了保持时间。

10. 简述 FPGA 和单片机的区别。

参考答案:

单片机更偏于软件。单片机是一种微处理器,类似于电脑的 CPU,它一般采用的是哈佛总线结构,或者冯诺依曼结构,对单片机的编程很大程度上要考虑到它的结构和各个寄存器的作用。也就是说单片机是一个微控制器,通过加载模块软件来实现某种功能,单片机是成型的芯片,单片机由于是单线程,程序语句需要等待单片机周期才能执行。单片机和嵌入式是通过主函数或者操作系统实现任务调度的途径来响应各种外部条件触发,并通过‘软件’输出相应的状态来实现电子系统的正常工作而再快的软件相应在现实应用中也会有出现盲点的时候,简单的说就是系统不能及时响应或者漏掉某些激励的现象。

FPGA 更偏向于硬件电路。FPGA 的结构是查找表结构,其程序不用去太考虑芯片的结构,要注意的是时序上问题,它的结构比较复杂,功能也很强大,一般应用在通信领域等比较高端的场合,FPGA 是用来设计芯片的芯片。FPGA 是通过纯硬件来实现各种电路功能的,与单片机实现控制的根本方法不同。硬件以强大的并行方式来响应所有的信号激励,但硬件也不是万能的,FPGA 这类的纯硬件最大的克星,就是亚稳态以及竞争冒险等等,通俗的讲就是输出及其短暂的不稳定现象,这是由硬件的器件延时特性决定的,是在设计中永远无法避免的,对于冒险和亚稳态,我们只能想尽—切办法去消除他们所导致的不良影响。所以在FPGA 设计中一个信号处理逻辑机制优劣将决定一个项目的好坏。

11. FPGA 的内部结构。

参考答案:

1) 用户可编程 I/O 口

2) 时钟资源(包括全局时钟网络、PLL)

3) 逻辑阵列块 LAB(例如:Cyclone IV 中一个 LAB 有 16 个 LE(逻辑单元),一个 LE 由一个 LUT 和一个可配置寄存器组成)

4) 嵌入式存储单元(M9K):主要用于生成 RAM、ROM、FIFO、移位寄存器等

5) 嵌入式乘法单元(DSP):主要用于乘法运算

6) 可编程布局布线

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

参考答案:

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

13. FPGA 中哪些资源可以用于实现 RAM/ROM/CAM?

参考答案:

FPGA 中共有三种资源可以用于实现 RAM/ROM/CAM:BLOCK RAM,触发器(FF),查找表(LUT)。在生成 RAM 等存储单元时,应该首选 BLOCK RAM 资源;其原因有二:

1)、使用 BLOCK RAM 等资源,可以节约更多的 FF和 LUT 等底层可编程单元,使用 BLOCK RAM 可以说是“不用白不用“,是最大程度发挥器件效能,节约成本的一种体现;

2)、BLOCK RAM 是一种可以配置的硬件结构,其可靠性和速度与用 LUT 和 FF 构建的存储器更有优势。

14. HDL 语言的层次概念?

参考答案:

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

15. 简述 FPGA 中查找表的原理与结构?

参考答案:

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

16. 你知道常用的逻辑电平有哪些吗?TTL 与 COMS 电平可以直接互连吗?

参考答案:

常用逻辑电平有 TTL、CMOS、LVTTL、LVCMOS、ECL(Emitter Coupled

Logic)、PECL(Pseudo/Positive Emitter Coupled Logic)、LVDS(Low Voltage

Differential Signaling)、GTL(Gunning Transceiver Logic)、BTL(Backplane

Transceiver Logic)、ETL(enhanced transceiver logic)、GTLP(Gunning Transceiver

Logic Plus);RS232、RS422、RS485(12V,5V,3.3V);

也有一种答案是:常用逻辑电平:12V,5V,3.3V。

TTL 和 CMOS 不可以直接互连,由于 TTL 是在 0.3-3.6V 之间,而 CMOS 则是有在 12V 的有在 5V 的。CMOS 输出接到 TTL 是可以直接互连。TTL 接到 CMOS需要在输出端口加一上拉电阻接到 5V 或者 12V。用 CMOS 可直接驱动 TTL;加上拉电阻后,TTL 可驱动 CMOS。

上拉电阻的作用:

1) 当 TTL 电路驱动 COMS 电路时,如果 TTL 电路输出的高电平低于 COMS电路的最低高电平(一般3.5V),这时就需要在 TTL 的输出端接上拉电阻,以提高输出高电平的值。

2) OC 门电路必须加上拉电阻,以提高输出的高电平值。

3) 为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。

4) 在 COMS 芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。

5) 芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。

6) 提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。

7) 长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。

上拉电阻阻值的选择原则包括:

1) 从节约功耗及芯片的灌电流能力考虑应当足够大,电阻大,电流小。

2) 从确保足够的驱动电流考虑应当足够小,电阻小,电流大。

3) 对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑以上三点,通常在 1k 到 10k 之间选取。对下拉电阻也有类似道理。OC 门电路必须加上拉电阻,以提高输出的高电平值。OC 门电路要输出“1“时才需要加上拉电阻,不加根本就没有高电平,在有时我们用 OC 门作驱动(例如控制一个 LED)灌电流工作时就可以不加上拉电阻,总之,加上拉电阻能够提高驱动能力。

17. 什么是状态图?

参考答案:

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

18. 写出(-3)10的原码,反码和补码。

参考答案:

在计算机中,原码是在数值二进制表示下,最高位为符号位:正数该位为 0,负数该位为 1(注意原来的 0 有两种表示:+0 和-0),其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对正数逐位取反,符号位保持为 1。补码则是在反码的基础上加 1 得到的。因此,十进制-3 的原码为1000_0011,反码为 1111_1100,补码为 1111_1101。

19. 简述时序逻辑和组合逻辑的区别。

参考答案:

1、组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。

2、时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态。

20. 简述竞争与冒险的概念,如何判断?如何避免毛刺的产生?参考答案:

竞争:

在组合逻辑电路中,信号经过多条路径到达输出端,每条路径经过的逻辑门不同存在时差,在信号变化的瞬间存在先后顺序,这种现象叫竞争。

冒险:

由于竞争而引起电路输出信号中出现了非预期信号,产生瞬间错误的现象称为冒险。表现为输出端出现了原设计中没有的窄脉冲,即毛刺。

判断方法:

代数法(如果布尔式中有相反的信号则可能产生竞争和冒险现象);

卡诺图:有两个相切的卡诺圈并且相切处没有被其他卡诺圈包围,就有可能出现竞争冒险;

实验法:示波器观测;

解决方法:

一是修改逻辑表达式避免以上情况,二是采样时序逻辑,仅在时钟边沿采样,三是在芯片外部并联电容消除窄脉冲。

21. 格雷码的作用是什么?

参考答案:

增加可靠性,格雷码的两个码编码之间只有一个 bit 不同,与其它编码同时改变两位或多位的情况相比更为可靠。例如从十进制的 3(3’b011) 转换为 4(3’b100) 时二进制码的每一位都要变,但在实际电路中,这 3bit 信号变化存在先后顺序,时钟采样沿到来的时候,有可能会采样到错误状态(3 或 4 以外的状态)。

22. 简述 FPGA 和 ASIC 区别,以及各自的开发流程。

参考答案:

FPGA 采用同步时钟设计,使用全局时钟驱动,采用时钟驱动方式在各级专用布线资源上灵活布线,FPGA 比 ASIC 开发周期短,成本低,设计灵活,不需要流片。

ASIC 有时采用异步逻辑,一般采用门控时钟驱动,一旦设计完成,其布线是固定的。

23. 根据下图写出 Z1、Z2 的逻辑表达式,列出真值表,说明该电路实现的功能。

参考答案:

74LS138 表示 38 译码器,逻辑表达式如下,X`表示对 X 逻辑取反,

Z1 =(Y1`Y2`Y4`Y7`)`

=Y1+Y2+Y4+Y7

=A`B`C+A`BC`+AB`C`+ABCZ2

=(Y1`Y2`Y3`Y7`)`

=Y1+Y2+Y3+Y7

=A`B`C+A`BC`+A`BC+ABC

C A B Z1 Z2

0 0 0 0 0

1 0 0 1 1

0 0 1 1 1

1 0 1 1 0

0 1 0 0 1

1 1 0 0 0

0 1 1 0 0

1 1 1 1 1

逻辑功能:全减器,其中:A 表示被减数,B 表示减数,C 表示低位向本的借位。Z1 表示全减器的结果(差),Z2 表示本位向高位的借位。

24. 简述有限状态机 FSM 分为哪两类?有何区别?有限状态机的状态编码风格主要有哪三种?FSM 的三段式描述风格中,三段分别描述什么?

参考答案:有限状态机 FSM 分为 Moore 型和 Mealy 型,

Moore 型:输出状态不仅和当前状态有关还和输入状态有关;

Mealy 型:输出状态只和当前状态有关。有限状态机常用的状态编码风格主要有:二进制编码、独热码、格雷码。 FSM 的三段式描述风格中,三段分别描述:

第一段--时序逻辑--描述状态转移

第二段--组合逻辑--描述状态转移规律

第三段--组合/时序逻辑均可--描述输出

25. 简述同步复位和异步复位的区别。

参考答案:

同步复位是指复位信号只有在时钟上升沿到来时才能有效,否则无法完成对系统的复位工作。

异步复位是指无论时钟沿是否到来,只要复位信号有效,就能对系统进行复位。

异步复位对复位信号的质量要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。

26. 编写一个带异步清零、异步置位的 D 触发器。

参考答案:

分析--输入端口有 CLK 为时钟,D 为输入,CLR 为清零输入端,SET为置位输入端;输出端口有 Q。//带有异步清 0、异步置 1 的 D 触发器模块描述

module Dff(
    input             clk    ,
    input             set    ,
    input             clr    ,
    input             D      ,
    output reg        Q      //寄存器定义
); 
    always @ (posedge clk or negedge clr or negedge set)begin
        if(~clr) begin//异步清 0,低有效
            Q <= 1'b0;
        end
        else if(~set)begin //异步置 1,低有效
            Q <= 1'b1;
        end
        else begin
            Q <= D;
        end
    end
endmodule

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值