笔试题-2023-诺瓦星云-FPGA(第1套)附答案及解析

一、不定项选择

1、已知74LS138译码器的输入三个使能端(E1=1.E2A = E2B=0)时,地址码A2A1A0=011,则输出Y7 ~YO是( )

A.11111101

B.10111111

C.11110111

D.11111111

答案:A

解析*:

74LS138译码器有 3 个使能端(E1、E2A、E2B)和 8 个输出(Y0 ~ Y7)。根据题干信息,当 E1=1、E2A=0、E2B=0、A2A1A0=011 时,该译码器的输出为 Y7=0,其余输出为 1。因此,输出应为 11111101,选项 A 正确。

2、将输入的二进制代码转换为对应的信号输出的电路为( )?

A.全加器

B.译码器

C.数据选择器

D.编码器

答案:B

解析*:

将输入的二进制代码转换为对应的信号输出,可以使用译码器实现。译码器是一种将输入编码(比如二进制)转换为输出信号(比如单一使能信号或多个输出信号)的电路。常见的译码器有 1-to-2,2-to-4,3-to-8 和 4-to-16 等不同类型,可以根据具体的需求选择合适的译码器。因此,选项 B 正确。

3、如果c=a*b,无符号数a和b都是16bit的,那么c应该是多少bit? ( )

A.16bit

B.24bit

C.32bit

D.48bit

答案:C

解析*:

如果两个 16 位的无符号数相乘,结果最多为 32 位。具体来说,如果用 ab=c 的方式计算,c 的值必须为 216=32 位,否则在高位上会溢出。因此,选项 C 正确。

4、在下列逻辑电路中,不属于组合逻辑电路的是( )

A.编码器

B.触发器

C.加法器

D.译码器

答案:B

解析*:

组合逻辑电路是只由逻辑门和它们的连接组成的电路,输出仅依赖于当前输入。因此,选项 A、C 和 D 都是组合逻辑电路。而触发器是一种时序逻辑电路,其输出不仅与当前输入有关,还依赖于先前的输入和/或输出状态,因此不属于组合逻辑电路。因此,选项 B 不是组合逻辑电路。

5、引起组合逻辑发生竞争和冒险的原因是( )

A.电源波动

B.电路延时

C.信号串扰

D.码间千扰

答案:A B C D

解析*:

组合逻辑电路中的竞争和冒险是指由于输入的微小变化而导致的电路输出不稳定或错误的情况。引起组合逻辑发生竞争和冒险的原因通常有以下几个方面:

电路延迟:由于逻辑门的输入到输出有一定的传输延迟,而不同的输入信号在电路中经过的延迟时间可能不同,这可能导致输出信号的错误。

信号串扰:当不同信号的传输线物理上靠得很近时,其中一个信号的变化可能会对另一个信号的传输产生干扰,这种干扰被称为串扰。

电源波动:电路工作时,电源电压的波动也可能导致电路输出的不稳定。

码间千扰:若干根具有不同频率和幅值的信号线的信号,相互靠近传输,在其中一个信号线上发生的一个信号孤立事件(翻边或脉宽变窄等),通过空气和线之间或线与线之间的尾迹,向另一信号线上剩余时间部分传输过来,干扰了原来的信号。

因此,选项 A、B、C、D 都有可能导致组合逻辑电路发生竞争和冒险。

6、xilinx K7系列FPGA中每个Slice包含几个6输入LUT? ( )

A.4

B.5

C.6

D.8

答案:A

解析*:

Xilinx K7 系列 FPGA 中,每个 Slice 包含一个 Look-Up Table(LUT),大小为 6 输入 LUT(6-input LUT);同时,每个 Slice 还包含一些其他逻辑资源,比如一个累加器、一个触发器等。因此,选项 A 正确,每个 Slice 包含一个大小为 6 输入的 LUT。

7、关于2020:1的MUX,下列描述哪个正确( )

A.输出为1路

B.选择为2020位

C.输入为2048路

D.以上皆对

答案:C

解析*:

根据题目中的“2020:1 MUX”可以判断,这是一个有 2020 个输入和 1 个输出的多路复用器,因此选项 A 正确。而选择器的选择位数应该是 $log_2 2020 \approx 10.96$,向上取整为 11,因此选项 B 错误。输入端口的数量应该等于 $2^{11} = 2048$,因此选项 C 正确。因此,选项 C 是正确的。

8、建立时间指的是什么意思( )

A.时钟沿来之后数据保持的时间

B.时钟沿前后数据保持的时间

C.时钟沿来之前数据保持的时间

D.时钟周期内数据保持的时间

答案:B

解析*:

建立时间(Setup Time)是指在时钟沿到来之前,数据必须已经被稳定、保持在电路输入端口上的时间。因此,选项 C 是错误的。时钟沿前后数据保持的时间是持续时间(Hold Time)。选项 A 是错误的,它描述的是数据保持时间(Data Hold Time),即在时钟沿到来后,数据必须在多长时间内保持不变。选项 D 错误,它描述的是时钟周期的长度。因此,选项 B 正确,建立时间指的是时钟沿到来前数据需要保持稳定的时间。

9、只读存储器ROM中的内容,当电源断掉后又接通,存储器中的内容( )

A.全部为0

B.不可预料

C.保持不变

D.全部改变

答案:C

解析*:

只读存储器(ROM)的内容由制造商进行编程,用户无法在工作中对其进行修改。因此,当ROM所在的电路的电源断开或重新连接时,存储在其中的内容保持不变。因此,选项 C 是正确的。

10、运算符优先级的说法正确的是( )

A.NOT的优先级最高

B.AND和NOT属于同一个优先级

C.NOT的优先级最低

D.前面的说法都是错误的

答案:D

解析*:

运算符优先级是指不同运算符进行运算时的先后顺序。在计算机语言中,通常使用算数运算符、比较运算符、位运算符、逻辑运算符等不同类型的运算符。对于同一种运算符,通常有一定的优先级规则。对于本题所涉及到的四个选项,都是错误的。

首先,NOT运算符的优先级并不是最高的,实际上,在计算机语言中,NOT运算符的优先级通常都比其他运算符低。

其次,AND和NOT能否被归为同一级别并非确定的。这取决于具体的运算符优先级表,不同的表可能会对这两种运算符进行不同的分组和排列。

最后,由于前两个选项都是错误的,因此选项 D“前面的说法都是错误的”是正确的。

11、下面描述的代码可综合的有( ) ?

A.wait

B.if...else...

C.initial

D.time

答案:B

解析*:

代码综合通常指的是将硬件描述语言转换为硬件电路的过程。根据英文描述,本题可能考察的是Verilog HDL中的关键词或语句。根据Verilog HDL语言的规范,可综合为硬件的语句包括initial、always、assign和等等。其中,initial语句用于在仿真、测试阶段对变量进行初始化,不会被综合进入实际硬件电路中;always语句用于在实际的电路中生成组合电路或时序电路的逻辑;assign语句用于分配一个从逻辑别名中派生的值,由于其不会引发任何事件,因此对于时序逻辑来说较少使用。wait和time是测试应用中常用的语句,但在综合的过程中并不会被处理。因此,选项C和D都不能综合为硬件电路,正确答案应该是选项B if…else…。

12、以下是用2输入Mux表达”与”逻辑的选项是?( )

A.c = (a == 1'b1) ? 1'b1 : (b == 1'b1)? 1'b1: 1'b0);

B.c = (a == 1'b1) ? 1'b0 : 1'b1;

C.c = (a == 1'b0) ? 1'b0 : ((b == 1'b0)? 1'b0: 1'b1);

D.c =(a == b )? 1'b0 : 1'b1:

答案:C

解析*:

题干中要求用2输入MUX来表达“与”逻辑,而MUX是一种多路选择器(Multiplexer),在硬件电路中可以实现多个逻辑门电路的选择。对于本题,需要根据输入变量a和b的值来决定输出c的值,这可以用一个2输入MUX来实现。选项A、B和D虽然使用了2输入MUX,但是分别实现的是“或”、“反向”和“异或”逻辑。选项C使用了2输入MUX,并通过一定的逻辑计算将它实现为“与”逻辑,因此选项C是正确的。因此答案是选项C。

13、在Verilog语言中,假设a=6’ b10 1011,b=6’ b00 1001; c= alb + a&&b,则c= ( )

A.2

B.6b10 1011

C.6b10 1100

D.6b00 1010

答案:C

解析*:

根据给定的代码,变量a、b、c分别为6位二进制序列。其中,a的值为1011,b的值为1001。根据运算符的优先级,&&(与逻辑)运算符的优先级要高于+(加法),而&&运算符的输出值为1或0,表示两个操作数是否都为1。因此,代码的运算过程如下:

a = 6'b101011;

b = 6'b001001;

c = a & b; // 逻辑与运算,得到的值为001001

c = c + (a | b); // 二进制加法,得到的值为101100

// a | b的结果为1011,也就是11

因此,变量c的值为101100,转换成6位二进制序列即为6'b101100,选项C为正确选项。

14、以下信号命名符合规范的有: ( )

A.state

B.Ack@

C.fork

D._R1_D2

答案:A C D

解析*:

Verilog语言作为硬件描述语言,有着严格的命名规范。根据Verilog的规范,信号的命名应该符合以下规则:

信号名必须以字母开头。

信号名只能由字母、数字和下划线组成。

信号名长度不能超过1024个字符。

Verilog保留了一些关键字,这些关键字不能作为信号名使用。

根据这些规则,选项A、C和D符合Verilog语言的命名规范。选项A中的state只包含字母,符合规范;选项C中的fork由字母和下划线组成,也符合规范;选项D中的R1D2同样符合规范。而选项B中的Ack@包含了“@”符号,不符合Verilog语言的规范,因此不符合要求。因此,正确的答案是选项A、C和D。

15、inout类型端口可以定位为哪种数据类型( )?

A.reg型

B.net型

C.reg或者net型

D.整数类型

答案:B

解析*:

inout类型的端口通常用于将内部信号(如模块中的信号)传递到外部,或将外部信号传递到模块内部进行处理。inout类型的端口在Verilog HDL语言中,通常用于三态逻辑模块中。在三态逻辑模块中,一个信号可以被设置为三种状态:高电平、低电平和浮空(High-Z)。因此,在需要将信号输出到外部或从外部输入信号时,需要使用inout类型的端口。inout类型的端口可以被定义为net型或者trireg型,其中,net型端口用于连接到普通的2-state信号,trireg型端口用于与三态信号进行连接。因此,选项B是正确的。而选项A和D都是Verilog HDL语言中的数据类型,但它们都是没有二态/三态概念的,不可以用来定义inout端口,不符合要求。选项C是错误的表述,因为reg型和net型都有各自的含义和特点,是不能混淆和互相替代的。因此,正确答案是选项B。

二、判断

16、三极管作为开关使用时的工作区域包括击穿区( )

A.正确

B.错误

答案:B

解析*:

三极管作为开关使用时需要处于两个工作区域之一:截止区或饱和区。在截止区,三极管的集电结反向偏置,发射结正向偏置,处于高阻态,不导通电流。在饱和区,三极管的集电结正向偏置,发射结正向偏置,处于低阻态,能够导通电流。而击穿区并不是三极管开关的工作区域,而是其在应用为稳压器等特殊电路时的一种非正常工作状态。因此,选项B为正确选项。

17、LC正弦波振荡电路中,不用通用型集成运放作放大电路的原因是其上限截止频率太低( )

A.正确

B.错误

答案:A

解析*:

LC正弦波振荡电路是由一个电感和一个电容串联而成的谐振电路,当电容和电感能量交换时,谐振电路可以产生较稳定的正弦波信号。LC振荡电路不需要使用放大电路,因为在电路的振荡过程中,电感和电容会不断地进行能量交换,使得输出信号的振幅得到放大。因此,对于LC正弦波振荡电路而言,并没有需要使用通用型集成运放放大电路的必要。选项B是错误的。反而如果使用通用型集成运放放大电路,可能会引入噪声和失真,并且会降低电路的稳定性,造成不必要的干扰。LC振荡电路的频率由电感和电容的数值决定,与使用的放大电路的上限截止频率无关。因此,选项A为正确选项。

18、三态门的三种状态分别是高电平、低电平、高阻( )

A.正确

B.错误

答案:A

解析*:

三态门是一种具有三种输出状态的逻辑门,可以产生三种逻辑电平状态:高电平、低电平和高阻态(又称不确定态)。在高电平输出状态时,输出端拉高到高电平;在低电平输出状态时,输出端被拉低到低电平;而在高阻态时,输出端的电平状态处于不确定状态,相当于开路状态,不与任何电路相连。因此,选项A是正确的。

19、FPGA中同步复位设计不需要考虑亚稳态问题( )

A.正确

B.错误

答案:B

解析*:

在FPGA中使用同步复位电路时,需要考虑亚稳态问题。同步复位电路使用一个时钟信号和一个复位信号来控制可编程逻辑器件的复位和重新启动。在同步复位器件中,当复位信号进行变化时,如果复位信号的变化速度过慢,就可能会导致在复位过程中产生亚稳态的问题。亚稳态会导致逻辑电路输出的值不确定,可能会引起一些意想不到的故障。为了避免这种情况,需要在同步复位电路中引入适当的延迟元件,来确保时序上的正确性和信号的稳定性。因此,选项B是错误的,FPGA中同步复位设计需要考虑亚稳态问题。

20、FPGA设计中不允许Latch出现( )

A.正确

B.错误

答案:A

解析*:

在FPGA设计中,不允许存在Latch,也称为锁存器。Latch是一种有状态的元件,可以在时钟信号不变的情况下存储输入的值,并将其保持不变,直到下一次输入新的值为止。然而,在FPGA中,由于可编程逻辑器件的特殊结构,当存在Latch时,可能会出现时序上的问题,导致逻辑电路的运行不稳定,从而使系统的性能和可靠性受到影响。因此,在FPGA设计中,为了保证电路的正确性和可靠性,不允许出现Latch元件。相反,应该采用寄存器等替代元件来实现逻辑功能。因此,选项A为正确答案。

三、简答

21、异步复位同步释放相比于异步复位和同步复位有什么优势?

答案及解析*:

异步复位同步释放相比于异步复位和同步复位具有以下优势:

异步复位同步释放能够有效避免异步复位和同步复位的一些问题。异步复位在逻辑电路中产生的复位脉冲信号可能会影响到其他异步电路的正常运行,而同步复位则需要在时钟的上升沿或下降沿进行,需要占用一部分的时钟周期。而异步复位同步释放则能够有效避免这些问题,提高了电路的稳定性和可靠性。

在异步复位同步释放中,同步释放信号可以同步到时钟信号的边缘上,在保持电路稳定性的同时可以立即恢复电路的功能。这可以防止在复位期间出现不确定性的状态,并减少电路的复位时间。

异步复位同步释放的结构简单,并且能够在许多不同类型的数字电路中使用,如多媒体、图形处理和通信等领域。这种复位技术实现起来相对容易,同时能够提高电路的可靠性。

总之,与异步复位和同步复位相比,异步复位同步释放能够提高电路的稳定性和可靠性,并且能够应用于各种类型的数字电路。

22、什么是高阻态?

答案及解析*:

高阻态又称不确定态,是指电路输出端的电平状态处于开路状态,不与任何电路相连,电路对外表现出的是高阻状态。在数字逻辑电路中,高阻态通常是由于三态门(或叫三态缓冲器)等元件的控制信号为禁止(不使能)状态时,输出端进入高阻态,使得输出端的电平状态不确定,不能传输正确的数值信息。在实际电路设计中,高阻态可以用来实现多路选择器、总线冲突检测等电路功能。

23、请简述跨时钟域处理的常用方式,请针对单Bit控制信号和多Bit数据总线信号分别介绍

答案及解析*:

跨时钟域处理是指将数据和控制信号从一个时钟域传输到另一个时钟域的过程。常用的跨时钟域处理方式包括同步和异步两种方式。

针对单Bit控制信号的跨时钟域处理,常用的方式包括同步异或、同步镜像以及同步隔离等。同步异或方法在接收方引入与发送方同步的时钟,并使用异或逻辑门将该时钟与控制信号异或,以确保发送方和接收方的控制信号保持同步。同步镜像方法在接收方复制发送方的控制信号,然后通过锁存器延迟一定时间,使得控制信号能够跟随接收方时钟进行状态同步。同步隔离方法使用两级同步锁存器,通过引入延迟来避免时钟域间的冲突。

针对多Bit数据总线信号的跨时钟域处理,常用的方式包括双向同步时序控制器和时序管脚延迟。双向同步时序控制器是一种专门用于同步数据总线时序的电路,它使用同步锁存器将发送方时钟域中的数据和控制信号转换到接收方时钟域。时序管脚延迟方法则是调整信号到达时序管脚的时间延迟,来确保信号在时钟域跨边界时的同步。

在实际设计中,要根据具体的应用场景选择合适的跨时钟域处理方法,并对相应的电路进行模拟和验证,以保证电路的正确性和可靠性。

24、FPGA设计中,可以采用哪些手段提高系统工作频率?

答案及解析*:

FPGA是一种可编程逻辑器件,可以通过编程来实现各种数字电路和系统。为了提高FPGA的系统工作频率,可以采用以下手段:

时序优化:在FPGA设计中,时序优化是提高系统工作频率的关键。时序分析可以帮助设计人员找到系统中的时序瓶颈,并优化电路布局和时序路径,从而使电路达到更高的工作频率。

时钟分频:时钟分频是一种有效的手段,可以将时钟频率降低到FPGA所支持的最高频率之下,从而提高电路的稳定性和可靠性。

时钟缩放:时钟缩放是一种将时钟信号缩短的技术,可以在保持系统功能不变的情况下减少时钟延迟,提高系统的工作频率。

时钟分配:时钟分配是一种将单个时钟分配给多个逻辑单元的方法,可以提高系统效率和工作频率。

压缩设计资源:在FPGA设计中,可以使用资源压缩和复用技术,将多个逻辑元件集成为一个较大的逻辑元件来减少系统资源的占用,从而提高FPGA的工作频率。

高速IO:在FPGA设计中,可以使用高速IO接口来提高系统的工作频率。使用高速IO可以实现更高的数据带宽和更快的数据传输速度。

总之,在FPGA设计中,可以采用以上这些手段来提高系统工作频率,从而改善系统性能和可靠性。同时,设计人员还需要综合考虑电路结构、时序约束等因素,对FPGA的设计进行全面的优化和调整,以达到性能和可靠性的最佳平衡点。

25、SRAM,FALSH MEMORYDRAM,SSRAM及SDRAM的区别?

答案及解析*:

SRAM、FLASH Memory、DRAM、SSRAM和SDRAM都是常见的存储器类型,它们在存储器工作原理、使用场景和特点等方面有所不同。

SRAM(Static Random Access Memory,静态随机存储器)

SRAM是一种用于高速缓存和高速缓存存储器等需要高速数据存储的场景的存储器。SRAM不需要刷新,读写速度非常快,但是相对比其它存储器容量较小,功耗较高,并且价格也比较昂贵。

FLASH Memory(快闪存储器)

FLASH Memory是一种非易失性存储器,具有高速读写、可擦写和可编程的特点,常用于固件、操作系统和数据存储等方面。它可以以块的形式进行擦写,但是擦写速度较低,容量较大,价格相对较低。

DRAM(Dynamic Random Access Memory,动态随机存储器)

DRAM是一种需要周期性刷新的存储器,由于需要周期性的刷新,读写速度比较慢,但是容量较大,价格相对较低。DRAM常用于主存储器、图像处理和高速计算场景。

SSRAM(Synchronous Static Random Access Memory,同步静态随机存储器)

SSRAM是一种具有同步功能的SRAM存储器,读写速度比常规的SRAM存储器更快,在多处理器和网络路由器等应用场景中非常常见。

SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)

SDRAM是一种与系统时钟同步的存储器,其中包含了内部时序电路,并且需要控制器对其进行地址、命令和数据交互,它常用于计算机主机存储器、显卡、服务器和嵌入式系统等方面。SDRAM相对于DRAM存储器,其内部时序自主控制,读写速度快,使用成本逐渐下降。

综上所述,这几种存储器各有优缺点,具体的使用场景需要依据其特点进行选择。

四、编程

26、输入三个8bit数,输出三个数据的中间数据。注意考虑资源优化的方式。模块接口如下,请补全代码。

module MedianValue(

input InClk

input InRst

input[7:0] InData0

input[7:0] InData1

input[7:0] InData2

output [7:0] OutMedian

);

答案及解析*:

以下是一种可以实现三个8bit数的中位数计算并输出的模块,其中使用了资源优化的方式:

27、写一个64位的计数器,由于器件和时钟频率的限制,当计数器位宽大于17位时时序无法收敛。因此内部每一个计数器的位宽不能超过17位。可以采用拆分加法器的方式实现。计数器的使能信号为ntEn,高电平时开始计数,低电平时计数值保持。模块接口如下,请补全代码。

答案及解析*:

以下是一种可以实现64位计数器的 Verilog 模块,其中采用了拆分加法器的方式,将64位计数器拆分为4个16位计数器相加的形式,每个16位计数器的宽度不超过 17 位:

其中,cnt0、cnt1、cnt2、cnt3 分别是 4 个 16 位计数器,每个计数器的宽度不超过 17 位。在每个时钟上升沿触发时,根据计数器的值是否达到最大值进行加 1 操作,当达到最大值时,需要将低位计数器的值传递到高位计数器重新开始计数。最终计数器的值为 cnt3、cnt2、cnt1、cnt0 拼接而成。

整理不易,如果觉得对你有帮助的话,可以收藏下来慢慢刷!

回顾往期精彩笔试真题:

数字IC前端笔试常见大题整理(简答+手撕)

笔试题-2023-禾赛-FPGA(附答案及解析)

笔试题-2023-复睿微-数字芯片设计【附解析】

笔试题-2023-锐捷-FPGA(附答案及解析)

笔试题-2023-星宸-数字IC设计(附答案及解析)

笔试题2023-燧原-数字IC设计(附答案及解析)收藏不易,如果觉得对你有帮助的话,可以收藏下来慢慢刷!

#笔试##FPGA数字IC笔试面试系列##数字IC##你为什么选择硬件行业##春招你拿到offer了吗#
全部评论
第一题是不是c?
1 回复 分享
发布于 2023-05-30 11:28 安徽
第13题 &&的优先级不是低于+吗,为什么要先算&&?
1 回复 分享
发布于 2023-07-29 10:03 安徽
是今年的笔试题?
点赞 回复 分享
发布于 2023-05-18 10:54 上海
答案不太对吧
点赞 回复 分享
发布于 2023-05-20 10:20 北京
第7题应该是A,C
点赞 回复 分享
发布于 2023-07-28 19:00 山东
答案不对吧?第八题应该是c
点赞 回复 分享
发布于 2023-07-28 19:00 山东
第17题选项也错了吧
点赞 回复 分享
发布于 2023-07-28 19:14 山东
话说你第一题不就错了
点赞 回复 分享
发布于 2023-07-28 21:04 北京
动态功耗
点赞 回复 分享
发布于 2023-08-02 19:18 山西
26题的输出信号是wire型,怎么能用非阻塞赋值呢😅
点赞 回复 分享
发布于 2023-10-18 17:29 浙江

相关推荐

不愿透露姓名的神秘牛友
11-13 14:14
长川 FPGA工程师 28w 硕士211
点赞 评论 收藏
分享
评论
15
140
分享
牛客网
牛客企业服务