FPGA笔试精解:50题纯享版

 笔试精解系列第50篇了,做个前49题的纯享版,只有题目和题解。

 PDF文件直接网盘了,有需自取。

链接:https://pan.baidu.com/s/1V_9g_qytNrNr2q82E96P9g 

提取码:swei 

1、十进制46.25对应的二进制表达式为(  )。(华为硬件逻辑实习岗)

A 101110.11         B 101101.01

C 101110.1          D 101110.01

题解

十进制46.25转二进制,整数部分和小数部分分开转换。

46转为101110

0.25转为0.01

结果为101110.01,答案为D。

2、在时序电路的状态转换表中,若状态数N=3,则状态变量数最少为(  )

(华为硬件逻辑实习岗)

A 4          B 8         C 2        D 16

题解

题目要求最少,那么二进制码和格雷码都只需要2位,独热码需要3位。

答案选C。

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

(华为硬件逻辑实习岗)

A 全部为0            B 不可预料 

C 保持不变          D 全部改变

解题:

概念题,补充一下RAM和ROM的基础定义。

ROM掉电不丢失,

答案选C。

4、在Verilog语言中,a = 4’b1011,那么&a为( )。(华为硬件逻辑实习岗)

A 4’b1111             B 1’b1          

C 1’b0                   D 4’b1011

解题:

本题主要考察Verilog的语法。本次考的是“&”运算。

已知a = 4’b1011,求&a

此时“&”为单目操作符,对a做缩位与。

因为有一位是0,所以结果为0。

答案选C。

5、下面哪种不是组合逻辑电路功能描述方法(   )。(华为硬件逻辑实习岗)

A 真值表              B 布尔方程

C 状态机           D 逻辑框图

 

解题:

本题主要考察对组合逻辑电路设计的认识。

根据上述组合电路设计方法,过程中其实涉及到了真值表,卡诺图,逻辑表达式,逻辑框图。

布尔方程其实就是逻辑表达式。所以不是组合逻辑电路功能描述方法的是状态机。

*状态机显然是时序电路中的东西。

答案选C。

6、时序电路的一般特征不包括(   )。(华为硬件逻辑实习岗)

A  系统的状态保持或者变化情形取决于系统的输入及其当前状态           

B  时序机的状态图和状态表是相同的设计信息的两种不同的表示形式

C  可以没有时钟

D  时序电路(机)的当前状态和输入信号决定了其下一状态及输出

解题:

本题主要考察对时序电路设计的认识。

时序电路的行为是由输入、输出和电路当前状态决定的。

输出和下一状态是输入和当前状态的函数。

因此A/D正确。

除了表示方式不同,状态表和状态图是没有区别的。

因此B正确。

答案选C。

7、组合逻辑电路消除竞争冒险的方法有(   )。(华为硬件逻辑实习岗)

A 在输出端接入滤波电容         

B 后级加缓冲电路      

C 屏蔽输入信号的尖峰干扰      

D 前级加电阻

解题:

办法一:修改逻辑表达式避免以上情况【需要逻辑分析能力】

办法二:采样时序逻辑,仅在时钟边沿采样【推荐,事实上也最常用】

办法三:在芯片外部并联电容消除窄脉冲【物理方法】

依据上述三种解决办法,只有”A在输出端接入滤波电容”符合办法三。

答案选A。

8、关于2019:1的MUX,下列描述哪个正确(   )。(华为硬件逻辑实习岗)

A 输出为1路     

B 选择字为2019位

C 输入为2048路

D 以上皆对

解题:

依据上图和题目2019:1,可以明确理解为2019路输入与1路输出

因此A正确C错误。

关键在于B选项,2019路输入,大于1024小于2048。也就是最小需要11位选择输入(2^11=2048),选择字应为11。当然,非要用独热码的话,好像确实是2019个选择字,但显然这个不切合实际,因此B选项错误。

答案选A。

9、某个逻辑电路实现如下功能:

 

那么当输入A=1,B=0时,输出是?

解题:

用比较严谨的说法,上述题目的逻辑运算是两个与运算的结果再进行或运算。

那么,与运算只有在两个输入都为1的时候,才输出1。

题目设置的A=1,B=0。因此第一个与运算结果为0。

第二个与运算,是对A和B自身取反后进行的,两者取反后仍旧不同时为1,所以输出还是0。

最后,两个0进行或运算,结果为0。

10、寄存器的Tsu(建立时间)是如何定义的(   )。(华为硬件逻辑实习岗)

A  在时钟沿到来之后数据保持稳定的时间

B  在时钟沿带来前后数据都需要保持稳定的时间        

C  在整个时钟周期数据保持稳定的时间

D  在时钟沿到来之前数据保持稳定的时间

解题:

关键在于分清建立时间和保持时间,我个人一般是通过记住保持时间来反记建立时间的。

保持时间嘛,重点在于保持。保持自然是存在一个起点的,那么时钟沿正是这个起点,从这个起点开始维持起点时刻状态一段时间,就是保持时间。

所以保持时间是时钟沿之后,反之,建立就是时钟沿之前

因此答案选D。

11、关于同步设计,说法错误的是(   )。(华为硬件逻辑实习岗)

A  在可编程逻辑器件中,使用同步电路可以避免器件受温度,电压,工艺的影响,易于消除电路的毛刺,使设计更可靠,单板更稳定

B  为保证逻辑设计可靠,必须保证整个电路中只有一个时钟域,同时只使用同一个时钟沿

C  同步电路比较容易使用寄存器异步复位/置位端,以使整个电路有一个确定的初始状态

解题:

A是同步电路的优点,

B是错误的。同步电路的所有触发器的时钟输入端都接同一个时钟脉冲源,是对的。但是,题目选项说“必须保证整个电路中只有一个时钟域,同时只使用同一个时钟沿”,那就有问题了。

首先,多时钟域设计在系统中是非常常见的事情。此外,同步电路设计也只能说是全局同步,局部是有可能存在异步电路的。

C选项没有很好的知识点可以用来论证,但其实这属于寄存器的一个特点,就是复位简单……它这么说,感觉也没错。

因此答案选B。

12、属于组合逻辑电路的是(   )。(华为硬件逻辑实习岗)

A 全加器              B 移位寄存器

C 计数器        D 触发器

 

12、在下列逻辑电路中,不是组合逻辑电路的是(   )。(华为硬件逻辑实习岗)

A 编码器         B  D触发器

C 加法器         D 译码器

解题:

两道题都只是基础知识题。

根据常见组合逻辑电路的介绍就可以确定,

第一题答案为A,加法器是算术运算电路最基本的运算单元,自然是组合逻辑电路。

第二题答案为B,D触发器则可以说是时序电路最基本的单元了。其他三个选项都是常见组合逻辑,可以一一排除。

13、双向数据总线常采用()构成。(华为硬件逻辑实习岗)

A 全加器           B 三态门

C 译码器              D 数据分配器

解题:

没什么可分析的。知识题,数据总线是双向三态形式的总线。

答案选B。

14、信号A、B均是4bit输入,C = A+B,请问信号C应该定义(   )bit。

(华为硬件逻辑实习岗)

A 4           B 5

C 6           D 3

解题:

相加位宽+1,就可以保证数据不溢出。

两个4位相加,所需位宽4+1=5。

答案选B。

15、下列哪些是FPGA开发工具(   )。(华为硬件逻辑实习岗)

A ISE             B Vivado      

C CCS            D Quartus      

解题:

A B是Xilinx公司的FPGA开发工具。

D是Altera公司的。

C应该是一种DSP开发工具。

答案选ABD。

16、使用DMA的好处不包括(   )。(华为硬件逻辑实习岗)

A  减少数据的传输延时    

B  一定条件下可以降低系统的功耗 

C  软件复杂度肯定会降低 

D  降低CPU占用

解题:

这道题感觉还是有点难度的,正面去分析,感觉有几个选项都怪怪的。但从做题的角度,C选项的“肯定”两个字就揭示它肯定是不对的了,所以答案选C。

回过头再来看这些选项,

A选项说可以减少传输延时,从我的理解,那就是传输这件事情不再经过CPU了,而是外设和内存直接进行传输。因为少了CPU的因素,所以速度就能上去。

B选项说一定条件下可以减少功耗,应该也是因为CPU不用管传输这件事了,CPU的功耗就降低了,系统功耗也可以降低。

D选项说降低CPU的占用,那就没有疑义了。DMA的意义就是这个。

C选项说降低软件复杂度,那是有可能的,但还是要具体问题具体分析,说肯定那就不对了。

17、二进制乘法遵循下面哪些规则(   )。(华为硬件逻辑实习岗)

A  0x1=0       B  1x0=0       

C  1x1=1        D  0x0=0

解题:

这应该是道多选题,

答案选ABCD

18、逻辑代数式:A*A=(   )。(华为硬件逻辑实习岗)

A  2A             B  A^2          

C  2A^2         D  A

解题:

重叠律

A+A=(A+A+A+……+A)=A

A·A=(A·A·A·……·A)=A

根据逻辑运算基本定律中的重叠律,

我们可以确定A*A=A

答案选D

19、逻辑表达式Y=AB,表示(   )。(华为硬件逻辑实习岗)

A  或门          B  异或门      

C  与非门       D  与门

解题:

没啥,本题划水。

答案选D

20.成为IEEE标准的HDL有(   )

A.      ABEL-HDL

B.      AHDL

C.      VHDL

D.     Verilog HDL

解题:

IEEE标准的只有VHDL和VerilogHDL。

答案选CD。

21. Quartus II 是 (     )公司的(     )开发工具。

A.      Altera

B.      Xilinx

C.      Lattice D

D.     集成

E.      专用

F.      第三方

解题:

Quartus II 是(Altera)公司的(集成)开发工具。

答案分别填AD。

22. ModelSim 是Mentor公司的出色的(   )软件,它属于编译型(  )器,速度快,功能强。

A.      综合

B.      编译

C.      仿真

D.     布局布线

E.      编程配置

解题:

ModelSim 是Mentor公司的出色的(仿真)软件,它属于编译型(仿真)器,速度快,功能强。答案填CC。

23. 使用Verilog HDL进行逻辑设计,端口类型有(              )

A.      input

B.      output

C.      inout

D.     buffer

解题:

Verilog HDL的端口类型有input/output/inout。

答案选ABC。

24. 使用Verilog HDL进行逻辑设计,可综合的变量类型有(              )

A.      reg

B.      wire

C.      buffer

D.     string

E.      double

F.      integer

解题:

使用Verilog HDL进行逻辑设计,可综合的变量类型有(reg,wire,integer)

答案选择ABF。

25. a=5`b11001;  b=5`b10101;下面那个是正确的        (                 )

A.      ~a=5’b00110

B.      a&b=5`b10001

C.      a|b=5`b11101

解题:

a=5`b11001

b=5`b10101

“~a”按位取反,得到5`b00110,正确。

“a&b”按位与,得到5`b10001,正确。

“a|b”按位或,得到5`b11101,正确。

26. 下面那些语句可以被综合成电路                   (             )

A.      initial

B.      always

C.      assign

D.     define

E.      for

F.      while

解题:

每个选项都分析一下,

A.    initial肯定是不可以的,它只用于仿真。*注意,不可综合不代表不能写。

B.    always肯定可以

C.    assign肯定可以

D.    define肯定可以

E.     for根据大量查询,这个应该是可以的。只是说它的意义不太一样,综合每个循环都会独立出一个电路。

F.     while这个有点难说,说是有些工具才可以……我这里保险起见,归为不行。

答案选BCDE

27. VHDL 和 Verilog HDL是一种HDL的两种名称

A.      正确

B.      错误

解题:

错的错的,

不解释了。

答案选B。

28. 相同的电路逻辑即可使用原理图方法输入也可使用HDL语言输入

A.      正确

B.      错误

解题:

描述正确,

答案选A

29. Verilog HDL语言即可用来做可综合的功能模块设计,又可以编写仿真文件实现对模块的测试。                                                            (     )

A.      正确

B.      错误

解题:

Verilog HDL当然是可以编写仿真文件的,

答案选A。

30. COUNT与count是相同的标识符名称(  )

A.    正确

B.    错误

解题:

标识符是区分大小写的,

所以COUNT与count不是相同的标识符。

答案选B。

31. 下面3种连接符的使用能实现相同的功能 (   )

1:{ 3{ a,b } }        2:{ {a,b} , {a,b} , {a,b} }         3:{ a , b , a , b , a , b }

 

A.      正确

B.      错误

解题:

这道题就遵循连接符的功能,

A选项用到了重复连接,B选项应该算嵌套连接,C选项就标准连接。

A选项第一步等价其实就是B,

B选项进一步等价就是C,

所以三者确实是相同的。

答案选A正确。

32. 下面代码通过设置counter的位数和(counter==xx)条件,可应用于下面哪些场景:

module test15(clk, keyin, keyout)

 input clk, keyin; //keyin,按键输入

output reg keyout;

reg[7:0] counter;

wire clk_use1, clk_use2;

reg keyout_tmp1=0;

reg keyout_tmp2=0;

 

always@(posegde clk)

  counter<=counter+1’b1;//单独摆了个计数器

 

always@(posedge clk)

  if(counter==8’b0000_0001) //只在counter等于这两个值时

    keyout_tmp1<=keyin;

else if(counter==8’b1000_0000) //才会去读按键输入

keyout_tmp2<=keyin;

 

always@(posegde clk)

    keyout <= keyout_tmp1& keyout_tmp2; //两者做与运算,如果都为1才输出1

endmodule

 A.      消除按键抖动

B.      滤除输入脉冲的毛刺

C.      异步信号向本时钟域同步

D.     边沿检测

解题:

先在上方题目进行注释解读。

因为这题很不清晰,但从最后的与操作可以看出,

这里应该是高电平有效的。

那么整段代码看下来的意思是这样的:

从counter=8’b0000_0001到counter=8’b1000_0000

这么一段时间里,如果keyin一直是1,

keyout才输出1。

A选项,如果说用在按键消抖,也是可以的,有那个意思。

B选项,这个和A其实基本一回事。

C选项,这个可以慢一点想想。

往期专栏里有讲到,

单比特数据/单一信号:

如果这个输入信号来自异步时钟域(比如FPGA芯片外部的输入),一般采用同步器进行同步。最基本的结构是两个紧密相连的触发器,第一拍将输入信号同步化,同步化后的输出可能带来建立/保持时间的冲突,产生亚稳态。需要再寄存一拍,减少(注意是减少)亚稳态带来的影响。这种最基本的结构叫做电平同步器。

所以C也是对的。

 

D选项就有问题了。边沿检测就是找上下沿,

一般这个时候用的是异或来找变化的位置,

这里使用的只是与运算,所以D选项不对。

最终答案应为ABC

33. 下面代码中可综合成电路是

A.     always @(posedge clk or negedge rst) begin

if(rst)

data_out <= 1’d0;

else

data_out<= data_in;

end

B.      generate

genvar i;

for(i=0;i<8;i=i+1)

begin:shifter

always@(posedge clk)

shifter[i]<=(i==0)?din:shifter[i-1];

end

endgenerate

C.      time abc;

always@(posedge clk)

if(rst)

abc <= 0;

else

abc <= data_in;

D.     fork

data1 = 3’d3;

data2 = 3’d1;

join

解题:

A就不说了,标准。

B generate是可以综合的。

C 时间变量time和实数变量real不能被综合,

D 并行块fork···join不可综合,并行块的语义在电路中不能被转化。

答案为AB。

34. 以下代码的运行结果是:

wire[3:0] out;

assign out = {4’hf,4{1’b1}};

A.      8’d4

B.      8’d255

C.      8’d256

D.     8’d1

解题:

要注意,这里定义的out位宽只有4而已。

后面的拼接符总共有8位,

拼接以后的结果为8’b1111_1111,

乘加运算如果溢出了,高位时会被舍弃的,

但拼接符不算运算,

它是对数据本身进行了一次处理,

所以out直接被改变成它需要的形状了。

 

所以答案是选B,8’d255。

35. 如果线网类型变量说明后未赋值,起缺省值是()?

A.      x

B.      1

C.      0

D.     Z

解题:

本题问的是线网型,所以是高阻态Z。

答案选D。

36. 电子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化) ,下列方法 (  )不属于面积优化。

A.      流水线设计

B.      资源共享

C.      逻辑优化

D.     串行化

解题:

流水线设计是速度优化的方法,

所以答案选A。

37. 时间尺度定义为timescale 10ns/100ps,选择正确答案( )

A.      时间精度10ns

B.      时间单位100ps

C.      时间精度100ps

D.     时间精度不确定

解题:

前面是单位,后面是精度。

答案选C。

38. 某设计中使用了DDR3-1066,数据位宽32bit,FPGA工程中实现的DDR3 controller时钟为800MHz, 应用端时钟为200MHz, 数据位宽为128bit,请问,应用端DDR3可用的理论带宽为()

A.      4264MB/s

B.      3200MB/s

C.      6400MB/s

D.     2132MB/s

解题:

DDR3-1066蕴含的信息

DDR3代表内存一次从存储单元取8bit数据。

1066指有效数据传输频率,除以8才是核心频率。

题目说了,DDR3的数据位宽时32bit,128的那个是应用端的位宽,要分清楚。

另外要注意的一点是,目前算的单位是bit,题目的MB/s实际上是Mbyte/s

8bit(位)=1Byte(字节)

因此,根据上面的公式以及单位的变换,

DDR3-1066 理论带宽 = 内存核心频率×内存总线位数×倍增系数 / 位字转换

=(1066/8)   *     32      * 8       /     8

= 4264MB/s

显然,其实计算可以简化为:标称频率1066  *   位宽32    /    8

但计算到这里还没有结束,

题目问的是应用端的带宽,而非DDR3的带宽,所以我们还需要考虑计算应用端的带宽,根据瓶颈,也就是最小带宽进行确定。

应用端时钟为200MHz, 数据位宽为128bit

因此,应用端带宽= 200 * 128 / 8 = 3200 MB/s

取瓶颈3200 MB/s

最终,应用端DDR3可用的理论带宽3200MB/s,

答案选B。

39. reg[7:0] mema[255:0]正确的赋值是()

A.      mema[5]=3’d0

B.      mema[5][3:0]=4’d1

C.      mema[8][8] = 8’d0

D.     都正确

解题:

题目中就是reg [7:0] mema[255:0];

该存储器有256个8位的存储器

A选项,mema[5]=3’d0,是对第5地址单元赋值,没有问题。

B选项,mema[5][3:0]=4’d1,是对第5地址单元的最低4位赋值,没有问题。

C选项,mema[8][8] = 8’d0,是对第8地址单元的第9位进行赋值,但这是个8位寄存器,所以应该是不对的。

我的答案是A和B,A虽然位宽不对但应该也是能赋值成功的。

40. 异步FIFO设计注意事项有哪些?

难点

1.      读写不在一个时钟下,这怎么对比。

不在一个时钟,那就让它们在一个时钟。

我们只同步指针的地址,比如把读地址同步到写地址的时钟域下,进行对比,

但这也就存在一个风险:同步错了怎么办?(如地址按0111->1000跳变,此时4bit都在变化,DFF进行同步时就很容易出错)

那么格雷码又出场了,它相邻数据只有一位发生变化的特性,解决了很多问题。

当然也有限制,设计的深度必须是2的n次幂。

 

 

2.      如何判断FIFO满或者空状态。

异步FIFO的写指针总是指向下一个要被写入的地址,当复位或者清空时候读写指针都指向FIFO缓冲区的0地址。

同样的读指针总是指向当前FIFO中要被读出的数据所在的地址,当清空或者复位是指针指向0,当发生一次读操作时读指针所指的地址的数据被取出,然后指针地址增加。

 

FIFO空的标志发生时是当读的指针和写的指针相等时。

当读写指针复位到0的时候如清空FIFO等操作的时候,或者是当读的指针赶上了写指针。

 

FIFO满的标志也是当读指针和写指针相等的时候。

当写指针已经环绕一周,然后追上读指针的时候。

 

因此就存在一个问题:当读写指针相等的时候如何判断是读空还是写满。

对于这个问题的解决方式为:读写指针要比存储地址多一位,用于判断满。

这个这么理解就好了。多一个标志位,这个标志位可以判断你的读写是否在同一轮。

 

具体而言:

写总归是要比读先跑的。

假设复位以后,读写的标志位都是0,

然后系统开始跑,

假设写指针跑着跑着已经计到最大深度了,那再加1不就进位了嘛,这个进位就必然会改变最高位这个标志位。这样写指针的标志位就变成1了,而读指针比较慢,它的标志位还是0。

然后系统继续跑,

写指针跑着跑着居然和读指针地址相同了,在同一个位置了。

我们一看,写指针标志位和读指针标志位不一致,一个是1一个是0,他们跑的不是同一圈,说明写的太快了,这个情况就是写满了。

 

如果标志位一致,那就是读满了,这就很好理解了。

41. 用D触发器实现2倍分频的Verilog描述?

解题:

仅在上升沿进行翻转。

always @(posedge d)//D触发器的输入就是时钟,仅检测时钟上升沿

begin

   if(!rst)

   q<=0;

   else q<=~q;//然后,每个时钟翻转输出

end

42. MOORE 与 MEELEY状态机的特征。(南山之桥)

解题:

如果只是问个特点的话,那就记住关键词:

输入

Moore与输入无关,

Mealy与输入有关。

43. 多时域设计中,如何处理信号跨时域。(南山之桥)

解题:

如上,回答的的话就先分单bit和多bit,

单bit又有三种方式:电平检测、边沿检测、脉冲同步。前两个从慢到快。

多bit建议专精异步FIFO,异步FIFO的设计主要有5部分组成:

FIFO Memory:双口RAM存储数据

sync_r2w:同步器,同步读数据指针到写时钟域

sync_w2r:同步器,同步写数据指针到读时钟域

wptr_full:处理写指针和满信号的逻辑

rptr_empt:处理读指针和空信号的逻辑

 

其他方法,格雷码,应该还有握手什么的,知道就好。

44. 在一个FPGA项目中,既有建立时间异常(setup violation),也有保持时间异常(hold violation),应该如何修改设计以使其正常工作?

解题:

Setup & Hold违例解决方法

T_ck2q + T_dp + T_setup <= T_skew + T_clk

因此setup violation修复方法包括:

1.      T_clk时钟周期:增加T_clk,也就是降频

 

2.      T_dp组合逻辑延时:优化组合逻辑延时,具体包括:

a. 增加一个中间触发器来切割Timing Path,分割组合逻辑延时(流水线结构)

b. 对于有较大负载的节点可以考虑插Buffer、逻辑复制的方法来优化扇出,减少关键路径上的负载(插Buffer,逻辑复制)

c. 小Cell换成大Cell,更换更大驱动的Cell,增强驱动能力

d. 更换SVT/LVT的Cell

 

3.      T_skew时钟偏移:采用positive skew(T_skew >0),但是要注意可能引入的hold问题,以及前后级的margin问题

正Tskew对保持时间是不利的

负Tskew对建立时间是不利的

4.      T_ck2q触发器CK端到Q端时间:更换更快的时序逻辑单元,如HVT->LVT

 T_ck2q + T_dp >= T_skew + T_hold

因此,hold violation修复方法包括:

1.      T_dp:增加组合路径延时,

通过插Buffer、插delay cell、更换驱动、更换阈值的方法(组合逻辑深度的增加会增加芯片的面积、布线资源、功耗,可能产生在慢速工艺库条件下建立时间违例)

 

2.      T_skew:减小skew,甚至采用negative skew,但需做好时钟树的balance。

插入低电平有效的锁存器(Lock-up Latch):高电平期间,锁存器输出保持不变,相当于人为将数据推迟了半个时钟周期,以保证满足hold时间要求。

45. IEEE754标准的32位浮点数格式

IEEE 754 规定,对于 32 位的浮点数,最高的 1 位是符号位 s,接着的 8 位是指数 E,剩下的 23 位为有效数字 M。

 

数符:1位,即符号位,0正1符,(-1)^S 阶码:8位,以2为底,阶码 = 阶码真值+127 尾数:23位,默认最高位为1,实际尾数24位,尾数=尾数真值-1

真值:±(1+尾数)*2^(阶码-127)

46. 将两输入的异或门作为反相器使用时,另一端的接法应该是()

A.      接低电平    

B.      接高电平     

C.      悬空

解题:

题目要的是反相器,那就看异或门的真值表,

若A 为输入,

当B为多少时,

Y的输出和A总是反的就行。

 

看表的话,当B为1的时候,Y和A总是反的。

所以答案选B接高电平。

47. 下列哪种说法正确(   )。(华为硬件逻辑实习岗)

A 同步复位增加了时序收敛的难度         

B 同步化异步复位可以保证逻辑正确复位

C 从使用资源的角度看,应该使用异步复位

D 异步复位可能会导致逻辑错误

解题:

这道题,如果让我来选我可能会选ABCD。

结合我之前的知识点来看,

需要考虑各种延时,增加了时序收敛难度,A正确。

异步信号同步化,是保证复位正确的一种方法,B正确。

异步复位节约资源, C正确。

异步复位容易使寄存器出现亚稳态, 可能导致逻辑错误,D正确。

 

但是,这道题我是了看了达尔文求职系列文章看到的。

他的题解在C选项存在差异。

C是错误的。

 

原因如下:

Altera器件中的基本单元就是由异步复位且低有效结构的寄存器组成的,如果不按照这个现有的资源来设计我们就需要额外使用其他的资源,从而造成浪费,所以这就是我们所“默认”Altera器件中往往都是异步复位低有效的原因。

 

但Xilinx与之正好相反。

官方文档《Vivado使用误区与进阶》中明确说明尽量避免使用异步复位,且如果使用复位就用高复位,巧的是刚好和Altera推荐的规则相反,也是因为内部结构决定的。

关于这一点还真有很多分析:

https://blog.csdn.net/weixin_41445387/article/details/106931285

https://blog.csdn.net/u010161493/article/details/52939224

 

总之结论就是,Xilinx FPGA的设计:

最好没有复位,有也要用高复位。

 

因此C选项对于Altera来说是正确的,对于Xilinx来说是错误的。

最终认为C选项错误。

答案选ABD

48. 关于任务和函数的区别,下列说法错误的是(   )。(华为硬件逻辑实习岗)

A 函数可以包含时延和时序控制               

B 函数不能调用任务          

C 函数必须带有至少一个输入                   

D 函数只能返回一个值

解题:

函数不能含有延迟,A错误。

函数可以调用其他函数,但不能调用任务,B正确。

函数至少有一个输入变量,C正确。

函数只有一个返回值,不能声明其他输出端口,D正确。

49. 请选出哪个不是FPGA的加载方式(   )。(华为硬件逻辑实习岗)

A 被动并行         B 主动串行

C I2C加载          D  JTAG

解题:

ABD选项都可以确定。

答案选C。

 

 

 

 

慢慢做,慢慢做。

目标2021秋招,共勉。

 

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空