文章目录
- 单选题
- 1.表示任意两位无符号十进制数需要()位二进制数
- 2.时间尺度定义为`timescale 10ns/100ps,选择正确答案()
- 3.时序逻辑电路不仅与输入有关,还与原来的状态有关()
- 4.同步复位需要进行Recovery和Removal检查,异步复位不需要进行()
- 5.异步FIFO设计中,满信号由写时钟产生,空信号由读时钟产生()
- 6.以下关于False-Path正确的是()
- 7.下面是一个什么样的电路?()
- 8.对于信号定义语句:reg [0:4] always,a;,说法错误的是()
- 9.下列说法错误的是()【易错】
- 10.关于异步设计的危害,下面说法错误的是()
- 11.多bit总线信号可以通过格雷码转换进行异步处理,例如:8bit的数据总线进行格雷码转换,然后通过双触发器法实现异步处理()
- 12.SystemVerilog中,下面哪种数组在使用前需要先执行new操作()
- 13.电路设计中,只要采用STA就可以保证电路设计的准确性,不需要再进行动态时序分析了()
- 14.对于initial语句,说法错误的是()
- 15.线型信号必须显式定义()
- 16.以下名称不属于Verilog关键字的是()
- 17.当功能覆盖率达到100%,可以说明()
- 18.下面表达式正确的是()
- 19.RTL代码是测试点的一个重要来源()
- 20.时序电路中,既可以使用阻塞赋值,也可以使用非阻塞赋值()
- 21.数字电路设计中,下列哪种手段无法消除竞争冒险现象()
- 22.异步时钟数据采样的方法错误的是()
- 23.以下不能对多bit的数据总线的时钟异步处理的是()
- 24.一个4bit位宽的有符号数a=4'b1001取绝对值后的值为abs(a)=4'b0110()
- 25.对于两个位宽相同的无符号数a和b,a大于b和a小于b两个比较器面积是一样的?
- 26.组合逻辑电路的特点是输出信号只是该时刻的输入信号的函数,它是无记忆功能的。时序逻辑电路的特点是任何时刻产生的稳定输出信号不仅与该时刻输入信号有关,而且与它过去的状态有关()
- 27.高的功能覆盖率意味着高的代码覆盖率()
- 28.为了发现逻辑缺陷,要想到什么测什么,一定要遍历所有的可能()
- 29.在Verilog中,关于函数不正确的是()
- 30.在SystemVerilog中,函数可以调用任务()
- 31.下面的哪个语句是可以综合的()
- 32.同步时序电路与异步时序电路比较,其差异在于后者()
- 33.在模块实例语句中,悬空端口可通过将端口表达式表示为空白来指定为悬空端口,模块的输入端悬空值为()
- 34.下列电路中属于时序逻辑电路的是()
- 35.下列说法错误的是()
- 36.某个状态下,不关心某个寄存器的输出值,那么将其设计为输出0,可以降低功耗()
- 37.高频时钟域的总线数据(每时钟周期都变化)传递给低频时钟域时,哪种同步方式正确?()
- 38.同步电路设计中出现setup time不满足,不可以采用下面哪种措施解决?()
- 39.编写Verilog HDL时,变量的定义不可以与关键词冲突()
- 40.关于亚稳态描述正确的是()
- 多选题
单选题
1.表示任意两位无符号十进制数需要()位二进制数
【A】6
【B】8
【C】7
【D】5
解析:最大的两位无符号十进制数是99,介于26-1和27-1之间,需要用7位二进数表示。
参考答案:C
2.时间尺度定义为`timescale 10ns/100ps,选择正确答案()
【A】时间精度10ns
【B】时间精度100ps
【C】时间单位100ps
【D】时间精度不确定
解析:timescale命令的格式:`timescale <时间单位>/<时间精度>
参考答案:B
3.时序逻辑电路不仅与输入有关,还与原来的状态有关()
【A】正确
【B】错误
解析:时序逻辑电路任一时刻的输出信号不仅取决于当时的输入信号,而且还取决于电路原来的状态(闫石版《数字电子技术基础》p259)
参考答案:A
4.同步复位需要进行Recovery和Removal检查,异步复位不需要进行()
【A】正确
【B】错误
解析:异步复位信号随时会出现,也随时会消失,可以由用户决定,具有随机性。所以复位信号在恢复时可能会出现不满足recovery time 和removal time的问题。这时**,用异步复位同步释放的方法,可以减小亚稳态出现的概率**,如下图(异步复位同步释放):
扩展阅读,可参考:https://blog.csdn.net/u011729865/article/details/49281713
参考答案:B
5.异步FIFO设计中,满信号由写时钟产生,空信号由读时钟产生()
【A】正确
【B】错误
解析:下面这张图是典型的异步FIFO的架构框图,从标注处,可以看出满信号是在写时钟域产生,空信号是在读时钟产生。异步FIFO几乎涵盖了Clock-Domain Crossing (CDC)跨时钟域的全部知识,所以手写异步FIFO代码也是一项基本功能。
参考答案:A
6.以下关于False-Path正确的是()
【A】一般异步电路可以设置为False-Path
【B】两个不同频率的接口一定可以设置为False Path
【C】一般异步复位可以设置为False Path
【D】一般模拟IP和系统的互连接口都可以设置为False Path
之前做过原题,参考《https://recclay.blog.csdn.net/article/details/123940358》第22题
解析:
False-Path就是我们进行综合分析时,不希望综合工具分析的那些路径。一般不需要工具时序分析的路径指的是异步的路径,异步路径就是指的不同时钟域的路径。一般在以下两种情况下使用
1、从逻辑上考虑,与电路正常工作不相关的那些路径,比如测试逻辑,静态逻辑等
2、从时序上考虑,我们在综合时不需要分析的那些路径,比如跨越异步时钟域的路径
- A是错误的。设置false path的原因是该路径没必要满足特定时序(比如setup/hold,recovery/removal,clock gating,max delay等特定时序)。虽然异步电路时钟之间没有固定的相位关系,工具没法直接做reg-reg的setup/hold检查,但是可以设置max delay等特殊约束对需要满足一定时序关系的异步电路做检查,需要看具体的场景。
- B是错误的。频率不同和false path没有任何关系。而异步电路的频率可能不同,但是频率不同不等于异步电路,异步电路的本质是来自不同晶振的时钟源驱动的电路,他们频率甚至也可以相同。
- C是错误的。对于异步复位,指的只是寄存器使用了异步复位端口async_reset,在复位的时候复位信号可以是异步的。但它在释放的时候是需要满足recovery-removal时序检查的,需要做同步释放,因为做了同步,所以STA工具有能力做检查。所以异步复位不能设为false path,需要检查recovery-removal时序。
- D是正确的。模拟ip的时钟频率一般远小于数字电路,因此对数字电路的时序不敏感,互联接口可以设置false path。
参考答案:D
7.下面是一个什么样的电路?()
always@(posedge clk or negedge rst_n) begin
if(rst_n == 1'b0)
a<=2'b0;
else if(b>2'b0)
a<=b;
end
【A】综合为Latch
【B】带同步复位的D触发器
【C】带异步复位的D触发器
【D】组合逻辑
解析:由给出的代码我们可以看出触发条件为时钟的上升沿(posedge clk)和复位的下降沿(negedge rst_n)。所以综合的电路为带异步复位的D触发器;所以C选项正确。
参考答案:C
8.对于信号定义语句:reg [0:4] always,a;,说法错误的是()
【A】不能使用关键字定义信号名
【B】信号定义为reg型,只能使用在时序电路的赋值中
【C】bit定义顺序应该从高到低
【D】每个信号应该单独用一行来声明
解析:
- Verilog中规定不能使用关键字定义信号名,而always为关键字,选项A说法正确;
- reg类型可以组合逻辑中使用,例如always@(*),选项B错误;
- bit定义的顺序应该从高到底或者从低到高都是可以的,例如:reg[4:0]或者[0:4],习惯上我们使用第一种,选项C说法正确。
- 编写代码的风格每个信号应该单独用一行来声明(不是必须,但是建议),D选项表达的是建议,所以正确。
参考答案:B
9.下列说法错误的是()【易错】
【A】条件语句,如果无关优先级,尽量采用case,避免多级else if影响时序
【B】if/else语句配对使用,case语句加default项;组合逻辑中在所有条件下都要对信号赋值,如果要保持不变则用a=a的方式赋值
【C】两个向量进行比较操作或加减操作或赋值操作时,两个向量的位宽要相等,避免隐式扩展
【D】可综合代码中,除了for语句中的循环变量可以定义为integer型外,所有变量和信号都只能为wire型或者reg型,不能定义为整型、实数型、无符号型、realtime型和time型
解析:
- 优先级条件语句会综合成串联的选择逻辑,时序较差,而case可以综合成并行的选择逻辑,所以选项A正确。
- 在时序逻辑下,if/else可以不配对使用,case语句可以没有default,但是B选项是建议,一般情况下if/else要配对使用,case语句要加default,避免综合成latch!组合逻辑,如果有条件没给赋值,会综合出latch,选项B正确。【B中组合逻辑赋值给自己其实也会综合成latch,可参考:https://recclay.blog.csdn.net/article/details/123682390】
- 另外,if/else可以不配对使用,在时序逻辑下,可以只有if没有else,这时候else分支保持寄存器原值
- 两个向量位宽不匹配会隐式拓展高位,如果有操作数定义为wire类型但是作为有符号数使用,隐式拓展会错误高位补0,拓展成无符号数,功能出错,选项C是正确的。
- D是错误的,integer可以被定义成信号,会综合出32bit的register。但因为位宽固定,一般不这么使用。另外在verilog-2001中加入了无符号型和有符号型的reg/wire定义,也属于可综合类型。其他类型不可综合, 选项D是错误。
参考答案:D(B也不一定对,所以我感觉是BD都错!)
10.关于异步设计的危害,下面说法错误的是()
【A】信号的时延随着每次布局布线的不同而不同,随着PVT的改变而改变,因此可靠性很差,而且不容易移植
【B】异步设计会产生毛刺
【C】异步设计不能做静态时序分析(STA)
【D】异步设计会带来很大的同步翻转噪声
解析:
- a是正确的。现在大部分的设计都是同步设计,小部分高性能低功耗电路可能会考虑使用异步设计。异步设计的好处之一便是可以最大限度利用时间窗的margin。有点类似latch的timeborrow,无需等待同步打拍,并且没有了时钟信号,功耗可以大大降低。坏处是需要特殊的握手机制来保证时序,而握手机制又很大程度上依赖于信号的时延,像a所说,时延不可控型较强,因此可靠性较差,而且不容易移植。
- 异步设计如果产生了竞争冒险现象,确实可以产生毛刺!
- 异步涉及不能做STA(异步电路:两个电路不同时钟;异步设计:没有时钟)
- 同步翻转噪声指的是大量触发器在同一时刻进行电平切换,会在相邻管脚引入噪声,因此,同步设计才会带来同步翻转噪声。所以D错误。其余选项均正确。
参考答案:D(易错选C)
11.多bit总线信号可以通过格雷码转换进行异步处理,例如:8bit的数据总线进行格雷码转换,然后通过双触发器法实现异步处理()
【A】正确
【B】错误
解析;注意这题用的词是“可以”!多bit信号是可以通过转换成格雷码然后打拍进行跨时钟域的,比如异步FIFO的地址跨时钟域,利用了相邻的两个地址二进制码转化成格雷码后,只有1bit不同。在传输连续的二进制码时,转化成格雷码巧妙地将多bit的翻转转化成了1bit的翻转,然后问题变成了单bit的跨时钟域问题,利用双触发器就可以实现异步处理。
参考答案:A
12.SystemVerilog中,下面哪种数组在使用前需要先执行new操作()
【A】压缩数组
【B】联合数组
【C】动态数组
【D】多维数组
解析:动态数组在最开始时是空的,使用前,必须调用new[]操作符来分配空间,同时在方括号中传递数组宽度。
参考答案:C
13.电路设计中,只要采用STA就可以保证电路设计的准确性,不需要再进行动态时序分析了()
【A】正确
【B】错误
解析:现在大部分的同步电路设计流程都是RTL验证+Formality形式验证+STA静态时序分析。通过RTL验证保证功能完备,通过Formality保证rtl和网表一致性。因为有了Formality保证网表和RTL的一致性,因此如果RTL验证完备,一般情况下就可以保证网表功能验证完备。然后通过对网表进行静态时序分析(STA)来保证没有时序风险。动态时序分析(后仿)主要是跑一些典型场景,保证在典型场景下不会有时序问题,增强设计信心,对于同步电路,只要STA阶段检查仔细,问题一般不大。但是设计中难免会有一小部分异步电路无法进行静态时序分析,因此必须需要通过后仿来进行排查。
参考答案:B
14.对于initial语句,说法错误的是()
【A】在仿真过程中只执行一次
【B】这是一种过程结构语句
【C】在模拟的0时刻开始执行
【D】可用于给实际电路赋初值
解析;initial语句不能综合,所以不可以给实际电路赋初值。常用于仿真测试模块中对于激励向量的描述。
参考答案:D
15.线型信号必须显式定义()
【A】正确
【B】错误
解析:Verilog程序模块中输入、输出信号类型默认自动定义为wire型,可以不用显式定义。
参考答案:B
16.以下名称不属于Verilog关键字的是()
【A】genvar
【B】endcase
【C】cmos
【D】cnt
解析:
- 关键字genvar用于声明生成变量;
- case、endcase描述多分支语句;
- Verilog还可以在低抽象级别对电路进行描述,并提供了多种晶体管级(也称开关级)元件类型,包括N型金属氧化物半导体场效应管(关键字为nmos)、P型金属氧化物半导体场效应管(关键字为pmos)、互补式金属氧化物半导体(关键字为cmos)、带阻抗的互补式金属氧化物半导体(关键字为rcmos)、电源单元(关键字为supply1)、接地单元(关键字为supply0)等。
- cnt不是Verilog的关键字。
参考答案:D
17.当功能覆盖率达到100%,可以说明()
【A】功能覆盖率对应的DUT响应是正确的
【B】某些令人关注的情况已经得到测试覆盖
【C】DUT的功能点已经100%覆盖
【D】意味着验证的完整性
解析:
- 功能覆盖率是通过cover语句来收集电路中信号的翻转情况,保证在大规模随机回归的情况下令人关注的信号是否翻转到期望的值。一些特定信号翻转到期望的值表示一种场景的出现,比如fifo的满信号从0到1表示fifo满的场景被覆盖到。因此b是正确的。
- a是错误的,因为被覆盖到不意味着电路的响应是正确的,只是被测试到。
- c是错误的。功能覆盖的cover语句是验证人员根据自己的测试点提取来写的,并不一定是所有的功能点,只能说验证人员关注的功能点被覆盖。
- d是错误的,功能点都不能保证是100%,更不用说验证完整了。验证完整这句话不是随便可以说的,即便是真的做足了各种验证工作,都要对可能的疏忽保持敬畏之心。芯片的流片成功并不容易。
参考答案:B
18.下面表达式正确的是()
【A】a = 4’df;
【B】c = 3’d8;
【C】b = 5’h1;
【D】d = 3’b2;
解析;非常基础的题。<位宽>’<进制><数字>;二进制用b或B表示,十进制用d或D表示,十六进制用h或H表示,八进制用o或O表示。
参考答案:C
19.RTL代码是测试点的一个重要来源()
【A】正确
【B】错误
解析:
- 黑盒测试直接通过对产品功能定义的解读,完成端到端测试,通过输入导出预期输出,无需了解中间的RTL代码。
- 白盒测试则是通过对RTL代码的解读,分解出代码实现过程中可能出的问题,但是黑盒测试又不容易测试出来的点,利用断言进行检测。因此RTL代码是白盒测试点的一个重要来源。
- 灰盒测试则介于黑盒和白盒之间,通过定向用例测试一些RTL内部实现的细节,观察其输出正确性,辅以断言检测。
参考答案:A
20.时序电路中,既可以使用阻塞赋值,也可以使用非阻塞赋值()
【A】正确
【B】错误
解析:原则:
- 1、时序电路建模时,用非阻塞赋值;
- 2、锁存器电路建模时,用非阻塞赋值;
- 3、用always块写组合逻辑时,采用阻塞赋值;
- 4、在同一个always块中同时建立时序和组合逻辑电路时,用非阻塞赋值;
- 5、在同一个always块中不要同时使用非阻塞赋值和阻塞赋值;
- 6、不要在多个always块中为同一个变量赋值;
- 7、用$strobe系统任务(打印信息,自动换行,最后执行)来显示用非阻塞赋值的变量值;
- 8、在赋值时不要使用#0延迟。
遵循以上原则,有助于正确的编写可综合硬件,并且可以消除90%-100%在仿真时可能产生的冒险竞争现象。
参考:夏宇闻版《Verilog数字系统设计教程》P164
时序电路可以用阻塞也可以用非阻塞(从语法上),只是我们书写时,原则上在时序电路中使用非阻塞(从功能上)。
参考答案:A
21.数字电路设计中,下列哪种手段无法消除竞争冒险现象()
【A】加滤波电容,消除毛刺
【B】增加冗余项消除逻辑冒险
【C】增加选通信号,避开毛刺
【D】降低时钟频率
解析:数字电路中常见消除竞争与冒险的方法:
- 1、接入滤波电容,因为尖峰脉冲一般都很窄(多在几十纳秒以内),所以只需要在输出端接一个很小的滤波电容,就可以将尖峰脉冲的宽度削弱至电路的阈值电压以下。但输出波形随电容变化,所以适用于对波形前、后沿无严格要求的场合,所以A选项正确;
- 2、引入选通脉冲,选通脉冲在输出稳定之后才拉高,所以可以消除稳定之前的尖峰脉冲。但是,使用这种方法,必须得到一个与输入信号同步的选通脉冲,对它的宽度和作用时间有严格的要求,所以C选项正确;
- 3、修改逻辑设计,增加冗余项。这种方法使用范围有限,考虑的情况比较多,在不同输入的时候,冗余项会不一样,所以如果考虑所有情况,会花费比较多的资源,如果设计的好,适用范围可以适当增加,所以B选项正确;
- 由于在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争,降低时钟频率并不能消除竞争冒险现象,所以D错误。
参考答案:D
22.异步时钟数据采样的方法错误的是()
【A】单bit高频时钟脉冲展宽后给低频时钟进行采样
【B】握手信号后再采样
【C】使用FIFO隔离进行多bit的采样
【D】高频时钟直接采样低频时钟的多bit数据
解析:
- 低频时钟采样高频信号,必须先对高频信号进行展宽处理,否则采样不完全,会丢失数据,A正确;
- 异步时钟数据采样可以采用握手的方法,B正确;
- 多bit信号采样一般采用异步FIFO的方法,C正确;
- 跨时钟域即便是高频时钟采样低频时钟也不可以直接采样,直接采样可能会出现亚稳态,造成亚稳态的传播,严重影响电路的性能,D错误。
参考答案:D
23.以下不能对多bit的数据总线的时钟异步处理的是()
【A】DMUX synchronizer
【B】Gray Code
【C】寄存器同步
【D】FIFO
解析:
- DMUX同步器:对于多bit的data信号,还可以使用使能技术,也就是通过一个使能信号来判断data信号是否已经稳定,当使能信号有效的时候说明data处于稳定状态,在这种情况下终点寄存器才对信号进行采样,可以保证没有setup/hold违例。而使能信号一般使用双触发器的方法来进行同步。下面是DMUX的同步示意图,所以A选项正确。
详细可参考:https://recclay.blog.csdn.net/article/details/123984100
- 将多bit信号转化成格雷码,然后打拍处理也是一种异步处理方法,但是该方法有一定的局限性,要求相邻的多bit信号转化成格雷码必须只有1bit的跳变,比如异步FIFO的读地址传输到写时钟域(或者写地址传输到读时钟域),B选项正确;
- 寄存器同步的方式只适用于单bit信号,C错误;
- 无论是单bit还是多bit,无论是从快时钟域到慢时钟域,还是慢时钟域到快时钟域,FIFO通吃,FIFO的设计需要注意FIFO空满信号产生问题、格雷码的应用问题、深度选择问题等,所以D选项正确。
参考答案:C
24.一个4bit位宽的有符号数a=4’b1001取绝对值后的值为abs(a)=4’b0110()
【A】正确
【B】错误
解析:a=4’b1001的十进制数为-1,abs(a)=4’b0110是+6,显然错误。
Verilog中求一个数的绝对值代码:
function [7:0] abs;
input [8:0] data_in;
if(data_in[8])
abs=1+(~data[7:0]);
else
abs=data[7:0];
endfunction
参考答案:B
25.对于两个位宽相同的无符号数a和b,a大于b和a小于b两个比较器面积是一样的?
【A】正确
【B】错误
解析:在各种数字系统尤其是在数字电子计算机中,用来完成两个二进制数的大小比较的逻辑电路称为二进制比较器。在数字电路中,二进制比较器的输入是要进行比较的两个二进制数,输出是比较的结果。首先讨论1位数值比较器,1位数值比较器是多位比较器的基础,当A和B都是1位二进制数时,它们的取值和比较结果可由1位数值比较器的真值表表示,由真值表可得如下逻辑表达式:
从上述逻辑,我们可以看出A>B和A<B的逻辑中使用的逻辑关系是对称的。因此,我们可以得到A>B和A<B的面积是相同的。
参考答案:A
26.组合逻辑电路的特点是输出信号只是该时刻的输入信号的函数,它是无记忆功能的。时序逻辑电路的特点是任何时刻产生的稳定输出信号不仅与该时刻输入信号有关,而且与它过去的状态有关()
【A】正确
【B】错误
解析:组合逻辑电路和时序逻辑电路的基本特点。
参考答案:A
27.高的功能覆盖率意味着高的代码覆盖率()
【A】正确
【B】错误
解析:覆盖率包括代码覆盖率、功能覆盖率、漏洞率、断言覆盖率等。功能覆盖率是和设计意图紧密相连的,有时也被称为“规范覆盖率”,而代码覆盖率则是衡量设计的实现情况。设想某个代码块在设计中被漏掉的情况,代码覆盖率不能发现这个错误,但是功能覆盖率可以。代码覆盖率与功能覆盖率是并列的关系,二者并没有本质的联系。
参考答案:B
28.为了发现逻辑缺陷,要想到什么测什么,一定要遍历所有的可能()
【A】正确
【B】错误
解析:验证过程是需要制订完整和系统的测试方案来进行全面的验证,对于大规模集成电路,不可能遍历所有的可能,我们需要做的,是达到100%的覆盖率目标,但这并不意味着就是遍历所有可能。
正确答案:B
29.在Verilog中,关于函数不正确的是()
【A】函数可以调用其它函数
【B】函数只能返回一个值
【C】函数必须带有至少一个输入
【D】不能包含任何时延或者时序控制
解析:在Verilog语言中,函数只能在模块中定义,位置任意,并在模块的任何地方引用,作用范围也局限于此模块。函数主要有以下几个特点:
- (1)不含有任何延迟、时序或时序控制逻辑;
- (2)至少有一个输入变量;
- (3)函数的返回可以通过调用return语句实现,当不需要返回值时,可以将函数定义为void类型;当然也可以有
- (4)不含有非阻塞赋值语句;
- (5)函数可以调用其他函数,但是不能调用任务;
详细可参考:https://recclay.blog.csdn.net/article/details/123251466
参考答案:B
30.在SystemVerilog中,函数可以调用任务()
【A】正确
【B】错误
解析:在Verilog中函数不能调用任务,但在SystemVerilog对这条限制稍有放宽,允许函数调用任务,但只能在由 fork…join_none语句生成的线程中调用。绿皮书《SystemVerilog验证测试平台编写指南》3.2节的原话。
参考答案:A(易错选B)
31.下面的哪个语句是可以综合的()
【A】initial 过程块
【B】forever 循环语句
【C】for 循环语句
【D】fork join
解析:for语句是可以综合的,但一般会很少使用,主要原因是for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,每条执行语句并不能有效地复用硬件逻辑资源,造成巨大的资源浪费。initial、forever、fork join语句均不能综合,一般用在Testbench中。
参考答案:C
32.同步时序电路与异步时序电路比较,其差异在于后者()
【A】没有触发器
【B】没有稳定状态
【C】没有统一的时钟脉冲控制
【D】输出只与内部状态有关
解析:时序逻辑电路有两种形式:一是同步时序电路,电路状态只在统一的时钟脉冲控制下才同时变化一次,如果时钟脉冲没有到来,即使输入信号发生变化,电路的状态仍不改变;二是异步时序电路,电路状态变化不是同时发生的,它没有统一的时钟脉冲,输入信号的变化就能引起状态的变化。
参考答案:C
33.在模块实例语句中,悬空端口可通过将端口表达式表示为空白来指定为悬空端口,模块的输入端悬空值为()
【A】0
【B】X
【C】1
【D】Z
解析:模块的输入端悬空,值为高阻态Z;模块的输出端口悬空,表示该输出端口废弃不用。
参考答案:D(注意!)
34.下列电路中属于时序逻辑电路的是()
【A】译码器
【B】计数器
【C】编码器
【D】数据选择器
解析:常用的组合逻辑电路有编码器、译码器、数据选择器、加法器、乘法器、数值比较器等;常用的时序逻辑电路有寄存器、计数器、序列检测器等。
参考答案:B
35.下列说法错误的是()
【A】为了避免wire信号出现X态,最好在声明时赋初始值0
【B】一个模块例化多次,可以使用generate for循环减少代码量
【C】模块例化时,需要将端口显式列出,即使某个端口未连接信号
【D】循环表达式的循环次数必须为常数
解析:循环表达式的循环次数必须为常数、变量或者表达式!所以D错误。A选项,为了避免wire信号出现X态,最好在声明时赋初始值0,没有见过这种说法(但也没有找到证明它错误的权威的解析),但是wire型信号是可以在声明时赋初始值0的,例如:wire a=1’b0;B选项和C选项正确。
参考答案:D
36.某个状态下,不关心某个寄存器的输出值,那么将其设计为输出0,可以降低功耗()
【A】正确
【B】错误
解析:比起设计为输出0,降低功耗更好的做法是保持寄存器原值。因为功耗来自于信号toggle,如果在上一状态寄存器输出为1,下一状态下输出为0,即便0不使用,也产生了0到1的跳变,同样会有功耗,既然不关心,还不如保持输出为1。
参考答案:B(易错选为A)
37.高频时钟域的总线数据(每时钟周期都变化)传递给低频时钟域时,哪种同步方式正确?()
【A】使用握手信号进行同步
【B】使用异步FIFO
【C】使用同步FIFO
【D】使用打2拍进行同步
解析:高频时钟域的总线数据传递给低频时钟域,可以使用握手信号,但是总线数据每时钟周期都变化,这时候使用握手信号进行同步会造成数据的丢失,所以A错误;同步FIFO不能作为同步器来进行数据的跨时钟域传输,异步FIFO可以(无论是单bit还是多bit跨时钟域),B正确,C错误;单bit数据可以用打两拍来进行同步,多bit的数据不能,D错误。
参考答案:B
38.同步电路设计中出现setup time不满足,不可以采用下面哪种措施解决?()
【A】pipeline
【B】减小信号延迟
【C】降低时钟频率
【D】增加时钟频率
建立时间为时钟上升沿到来之前输入数据保持稳定的时间。如上图所示,Tco为时钟上升沿到DFF1的输出端Q1的时间间隔,可以理解为触发器DFF1的输出时间延时;Tcomb是组合逻辑电路的传输延时;Tsetup为DFF2的建立时间。即如果要满足DFF2的建立时间,那么建立时间容限必须要大于等于0。
建立时间容限=T(时钟周期)-Tco-Tcomb-Tsetup>=0
- A选项,采用流水线(pipeline)结构,在组合逻辑之间插入触发器,Tcomb减小;
- B选项,减小信号延迟,Tco和Tcomb减小;
- C选项,降低时钟频率,T增大;以上三种方法都可以增加建立时间容限,可以解决建立时间不满足问题。
- D选项,增加时钟频率,T减小,会减小建立时间容限,建立时间将会更不满足,所以D错误!
参考答案:D
39.编写Verilog HDL时,变量的定义不可以与关键词冲突()
【A】正确
【B】错误
解析:当定理来记住。
参考答案:A
40.关于亚稳态描述正确的是()
【A】异步逻辑不会产生亚稳态
【B】采用格雷码能消除亚稳态
【C】亚稳态不会传递,所以不会导致相关逻辑处于不确定态
【D】在时钟有效沿的时候外部数据未稳定,导致触发器不能判断数据电平状态
解析:
- 异步逻辑可能会造成触发器的建立时间或者保持时间不满足,从而数据采集到一个不稳定的状态,从而导致亚稳态的出现,故A错误;
- 采用格雷码打拍处理来进行跨时钟域传输并非是消除亚稳态,而是可以减小亚稳态传播的概率,B错误,注意,亚稳态是不能根除的;亚稳态会沿着组合逻辑传播,从而使相关逻辑处于不确定态,C选项错误;
- 在时钟有效沿的时候外部数据未稳定,导致触发器不能判断数据电平状态,从而导致亚稳态的出现,D选项正确。
参考答案:D
多选题
41.异步设计的特点是()
【A】没有时钟skew问题
【B】可移植性高
【C】低电源消耗
【D】设计可靠性高
解析:同步电路设计利用时钟脉冲使其子系统同步运作,而异步电路设计不使用时钟脉冲做同步,其子系统是使用特殊的“开始”和“完成”信号(握手信号)使之同步。异步电路的优点是无时钟偏移(Skew)问题、低电源消耗、平均效能而非最差效能、模块性、可组合和可复用性。异步电路设计的缺点是可靠性差,不容易移植,且不能进行静态时序分析(STA)。
参考答案:AC
42.关于状态机编码,下面描述中正确的是()
【A】用组合逻辑和时序逻辑分离的风格描述FSM
【B】用case语句描述状态的转移
【C】状态编码用parameter定义
【D】状态机必须有default
解析:
- 针对状态机,我们一般采用三段式写法,使用三个always模块,一个always模块采用同步时序的方式描述状态转移,一个采用组合逻辑的方式判断状态转移条件,描述状态转移规律,第三个always模块使用同步时序电路描述每个状态的输出,故A正确;
- case语句是FSM描述中最重要的语法关键字,用来描述状态的转移,B正确;
- 状态编码用parameter定义,增强源代码的可读性,简化描述,C正确;
- 在FSM设计中,为了提高设计的安全性,避免所设计的FSM进入死循环,一般要求加上default关键字来描述FSM所需状态的补集状态下的操作,default是个可选的关键字,用以指明当所列的所有case项不完全时的操作,如果case项表达完全,那可以不用,所以不是必须的,D错误。【但我觉得D是对的,万一出现不定态,怎么可能列全?】
参考答案:ABCD
43.如果功能覆盖率没有达到100%的话,可以采取的措施有()
【A】分析是否进行组合的项太多,导致功能覆盖率不高,适当减少组合项
【B】适当提高属性值的采样频率,对覆盖率报告中的漏洞进行覆盖
【C】检查激励产生机制,采用一些必要的约束,继续进行仿真
【D】再做一些定向测试,直接命中覆盖率报告中的漏洞
解析:A选项不正确,会降低验证的成功率;B选项是降低漏洞率;CD正确。
参考答案:CD
44.对于双触发器异步处理电路说法正确的是()
【A】对任何单bit信号都可以用此电路处理
【B】各个寄存器之间不能有组合逻辑
【C】需要考虑两个时钟的频率与信号的宽度
【D】无法绝对避免亚稳态的产生
解析:
- 对于双触发器异步处理需要考虑两个时钟的频率和信号的宽度,如果是快时钟域到慢时钟域,并且为连续信号,不能用双触发器处理,故C正确,A错误;
- 双触发器异步处理电路的各个触发器之间不能有组合逻辑,B正确;
- 双触发器跨时钟域处理单bit信号,只是减少亚稳态传播的概率,并不能完全消除亚稳态的产生,D正确。
参考答案:BCD
45.影响CMOS电路静态功耗的因素有哪些?()
【A】供电电压
【B】工作频率
【C】工艺
【D】温度
解析:静态功耗可以用下列关系来表示:Pstat = Istat * Vdd
其中Istat是在没有开关活动存在时在电源两条轨线之间流动的电流;Pstat为静态功耗。供电电压即为Vdd,工艺和温度会影响Istat,所以供电电压、工艺、温度都会影响静态功耗;静态功耗在接通电源后是一直存在的,与工作频率没有关系。工作频率主要会影响动态功耗。
标签:异步,数字,正确,海思,信号,IC,时序,参考答案,时钟 From: https://blog.csdn.net/MoorePlus/article/details/141404016参考答案:ACD