笔试精解系列第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秋招,共勉。