涉及数字IC功耗、验证、测试、时序、数电相关问题。
一、单选题
1.下列功耗措施哪个可以降低峰值功耗(B)
A. Power Gating
B. 大幅度提高HVT比例
C. 静态模块级Clock Gating
D. Memory Shut Down
解析:首先峰值功耗是属于动态功耗中的短路功耗,即NMOS和PMOS同时导通所引起的峰值电流,最终带来的功耗。这个功耗和电源电压,时钟翻转率,以及峰值电流有关。
A选项电源门控技术,即模块不工作的时候,关闭电源,模块睡眠,工作时候再启动电源,是降低静态功耗。
B选项即采用高阈值电压的晶体管,阈值电压增加的效果在于降低亚阈值漏电电流,并且短 路 功 耗 公 式 为 :Pshort = TAshortVdd =TAβ(Vdd-Vth)3,只 跟 Vth 有 关,而 D 选 项 中 大 幅 提 高 HVT ( High Voltage Value)带入短路功耗公式中会使短路功耗变小,从而降低动态功耗中的峰值功耗。所以B选项正确。
C选项静态门控时钟,所以C选项不正确。
D选项存储关闭。即不被访问的时候,关闭存储器,因而也是降低静态功耗。
2.业界常用的验证学方法 ()
A. SystemC
B. UVM
C. SystemVerilog
D. VVM
3.下列不属于分解测试点时应关注点是()
A 性能
B 无充分理由揣测
C 偶然的设计失误
D 可测性
分解测试点不关注: a) 偶然的设计失误; b) 无充分道理的揣测;
4.modelsim命令在tb中的执行顺序:
Vlib建立仿真库/Vmap映射/Vlog编译/Vsim仿真
5.以下描述错误的是(D)
解析:
按逻辑功能分为:RS触发器、D触发器、JK触发器、T触发器。
按触发方式分为:电平触发器、边沿触发器和脉冲触发器。
按电路结构分为:基本RS触发器和钟控触发器。
按存储数据原理分为:静态触发器和动态触发器;
按构成触发器的基本器件分为:双极型触发器和MOS型触发器,所以选项A和选项B正确;
触发器能够存储1位二值信号的基本单元电路,所以选项C正确;
D触发器是一种最简单的触发器,在触发边沿到来时,将输入端的值存入其中,并且这个值与当前存储的值无关,D触发器并没有翻转的功能,D选项错误。
6.门控时钟
7.一个3bit计数器(计数范围0~6)共工作在38MHz时钟域下,将此计数值传递给另一异步100MHz时钟域,以下方式不正确的是(C)
A 锁存+握手
B 使用DMUX
C 使用格雷码
D 异步FIFO
解析:
格雷码的应用问题,也许会想到能不能先把数据变成格雷码,然后再通过双D触发器同步过去呢?如果计数器计数0到7,那么是可以的,因为相邻两个数都是只有一位不同;但是如果计数0到6,那么从计数6(格雷码为101)到计数0(格雷码为000),格雷码有两位不同,这个时候就不能再用双触发器的方法了。所以C选项错误。
8.DRAM/SRAM
答案:D
9.时序问题
解析:B
10.形式验证技术需要外界提供测试向量和时钟激励()
答案:错误
解析:形式化验证能够在芯片设计前期彻底找出一些隐藏较深的很难发现的设计错误。使用数学证明的方式来验证一个设计的功能是否正确。
因此形式化验证不需要测试平台和测试向量。
形式验证可以分为三大类:等价性检查(Equivalence Checking)、形式模型检查(Formal Model Checking)(也被称作特性检查)、定理证明(Theory Prover)。
11.逻辑电路动态功耗一般跟以下因素相关(ABCD)
A 电压
B 频率
C 工艺
D 工作温度
12.下列哪些项是异步处理需要考虑的因素(AC)
A 异步信号的电平或脉冲特性
B 异步信号是不是总线
C 两个异步时钟时间的频率关系
D 异步信号是不是寄存器输出
13.关于状态机编码,如下描述中正确的是(ACD)
A 状态编码用parameter定义
B 状态机必须有default态
C 用组合逻辑和时序逻辑分离的风格描述FSM
D 用case语句描述状态的转移
解析:状态机一般需要定义default态,但是对于case状态完全的状态机,可以不用default态,所以B错误;其他选项均正确。
14.关于FPGA,哪个说法不正确?【Slice】【分布式RAM】【DSP】
答案:A
解析:
A:Xilinx 的 7 系列 FPGA 内部有 CLB 可编程配置块(Configuration Logic Block),每个 CLB 里有 2 个 Slice。Slice 有 2种,一种是 SliceL(Logic逻辑),一种是 SliceM(Memory存储),SliceM 相比 SliceL 多出的功能在于可以配置成Distribute RAM(分布式RAM)。
B:分布式 RAM 可以配置成简单双口和双端口RAM,但是不支持真双口RAM(Block RAM 块RAM 支持 真双端口 RAM);
C:在前面提到,Slice 是 FPGA 内部的可编程资源;
D:DSP 主要是用于乘法、除法和快速加法;
15.当一根导线上的部分信号能量传输到相邻导线上时就出现了(C)的情形?【扇出fanout】【互调干扰】【串扰】【耦合】
A:扇出
B:互调
C:串扰
D:耦合
解析:
扇出:FPGA里面,扇出是一个输出端连接/驱动的后级资源的个数,比如驱动10个LUT查找表;
互调:由于器件的非线性,不同频率的信号互相调制,形成一个新频率信号;在通信中的接收机中常出现交调干扰和互调干扰,交调干扰是幅度失真,互调干扰是频谱失真;
串扰:一个信号的部分能量传输到相邻导线上,常出现在多路并行的高速传输线上,所以对于Gbps传输,常常使用 GT 高速串行收发器,而不采用并行(原因之一);
耦合:两个有依赖,彼此作用;
16.已知信号f(t)的频带宽度为带塔w,则f(3t-2)的频带宽度为(3带塔w)
解析:
涉及到傅里叶变换的性质,包括平移和尺度变换,其中平移不影响频带的宽度,尺度变换影响频带宽度。
在一个域的扩展,对应另一个域的压缩,反之亦然。
这里,时域是变窄,压缩为原来的1/3,对应频域要展宽为原来的3倍。
17.下列关于译码器描述错误的是(C)
解析:
译码器,常见的3-8译码器,组合逻辑,可能会出现竞争冒险,不可以作为时序电路的时钟端。
对于B,高地址译码作为片选,低地址直接寻址,想具体了解的可以去看微机原理。
18.两输入与非门当输入(C)时,输出可能会出现竞争冒险。
A 00->10
B 10->00
C 01->10
D 11->01
解析:竞争由于不同bit位跳变时间不同步,导致出现中间态;这些产生错误输出的中间态即产生冒险现象。
对A:00—>10,如果有延时产生,可能会出现00、10两种状态,输出均为1,没有输出冒险;
对B:10—>00,如果有延时产生,可能会出现10、00两种状态,输出均为1,没有输出冒险;
对C:01—>10,如果有延时产生,可能会出现01、00、10、11四种状态,输出本应该为1,但是可能会出现0(11状态),输出冒险;
对D:11—>01,如果有延时产生,可能会出现11、01两种状态,输出均为1,没有输出冒险;
19.同步电路设计中出现setup time不满足,不可以采用下面哪种措施解决?(D)
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错误!
19. 下列几种 TTL 电路中,输出端可实现线与功能的门电路是(OC门和OD门)
20. (1) (2)所描述的电路功能是否相同?哪种描述综合结果面积较小?(D)
A 相同,(2)面积小
B 不同,没法比较面积
C 相同,(1)面积小
D 相同,面积与信号a、b的位宽有关
(1)
if(select == 1‘b1)
sum <= a+b;
else
sum <= c+d;
(2)if(select == 1‘b1) begin
temp1 <= a;
temp2 <= b;
end
else begin
temp1 <= c;
temp2 <= d;
end
assign sum = temp1 + temp2;
解析:(1)由2个加法器、1个选择器、1个D触发器组成;(2)由2个选择器、1个D触发器、1个加法器组成。(1)相对(2)多了加法器,(2)相对于(1)增加了数据选择器。
21.假设S0和S1的都是2’b11,下列和((S0 == 2‘b11)|(S1 == 2‘b11))结果不同的是:(C)
A. (S0==2’b11)||(S1==2’b11)
B. (S0==2’b11)| (S1==2’b11)
C. (S0 | S1)
D. (S0 || S1)
|| 逻辑或;| 位或。ABD为1‘b1,C为2’b11
22.Shourt-current功耗(内部短路功耗)属于动态功耗?(A)
A. 正确
B. 错误
(1)静态功耗
在CMOS电路中,静态功耗主要是漏电流引起的功耗
(2)动态功耗
开关功耗(反转功耗)
电路在开关过程中对输出节点的负载电容充放电所消耗的功耗。
短路功耗(内部功耗)
由于输入电压波形并不是理想的阶跃输入信号,有一定的上升时间和下降时间,在输入波形上升下降的过程中,在某个电压输入范围内,NMOS和PMOS管都导通,这时就会出现电源到地的直流导通电流,这就是开关过程中的短路功耗。
23.芯片接口的三态数据总线实现时如何处理 D
A. 在芯片各功能子模块内把三态数据总线转为单向的两组总线
B. 在芯片内部总线使用的地方把三态数据总线转为单向的两组总线
C. 不需要转换
D. 在芯片顶层把三态数据总线转为单向的两组总线
FPGA中设定一个信号为三态门,在Verilog中,就是设定该信号的类型为inout。
通常用在总线接口中,因为在一个总线上同时只能有一个设备端口作输出,这时其他端口必须在高阻态,同时可以输入这个输出端口的数据。所以,设备端口要挂在一个总线上,必须通过三态缓冲器。
fpga代码设计中,记得有一条“原则”,对于三态口,尽量在顶层模块使用三态,不要在内部子模块使用三态,不然会带来一系列问题。
因此最好在芯片顶层就把三态数据总线分成两根,内部就不再使用三态门了。
24.静态时序分析中对建立时间(setup time)进行分析,应选取数据的哪个时序延时路径进行计算 A
A. 最晚到达
B. 平均到达
C. 正常到达
D. 最早到达
25.状态机的状态编码使用参数定义,也可以使用`define进行定义
A. 正确
B. 错误
`define作用 -> 常用于定义常量可以跨模块、跨文件;范围 -> 整个工程;
parameter作用 -> 常用于模块间参数传递;范围 -> 本module内有效的定义;
localparam作用 -> 常用于状态机的参数定义;范围 -> 本module内有效的定义,不可用于参数传递;
26.以下哪个不是代码实现的外在质量要求 B
A. 健壮性
B. 可读性
C. 完整性
D. 可靠性
解析:内在质量:可测性、可读性、可理解性、容变性等代码可维护性维度的质量属性来衡量代码质量。代码质量指的是代码内在的非功能性的质量,用户不能直接体验到这种质量的好坏。
27.独热码和2进制码相比较 A
A. 独热码的组合逻辑资源更少
B. 独热码的资源消耗都少
C. 独热码的资源消耗都多
D. 独热码的寄存器资源更少
解析:
独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。例如,有6个状态的独热码状态编码为:000001,000010,000100,001000,010000,100000。
Binary(二进制编码)、gray-code(格雷码)编码使用最少的触发器,较多的组合逻辑,而one-hot(独热码)编码反之。one-hot 编码的最大优势在于状态比较时仅仅需要比较一个bit,一定程度上从而简化了比较逻辑,减少了毛刺产生的概率。由于CPLD更多地提供组合逻辑资源,而FPGA更多地提供触发器资源,所以CPLD多使用gray-code,而FPGA多使用one-hot编码。另一方面,对于小型设计使用gray-code和binary编码更有效,而大型状态机使用one-hot更高效。
28.静态配置的控制寄存器,不需要进行异步处理 A
A. 正确
B. 错误
29.基于Verilog HDL,时钟或复位信号可以出现在赋值表达式中 A
A. 正确
B. 错误
30.在模块实例语句中,悬空端口可通过将端口表达式表示为空白来指定为悬空端口,模块的输入端悬空值为(D)
A. 0
B. X
C. 1
D. Z
解析:模块的输入端悬空,值为高阻态Z;模块的输出端口悬空,表示该输出端口废弃不用。
31.关于下面约束,说法正确的是 constraint ST{(a==0)->(b==0)}(C)
A. 如果a!=0,则b!=0
B. 如果b==0,则a==0
C. 如果b!=0,则a!=0
解析:
条件约束:让一个约束表达式只在某些时候才有效。例如,一条总线支持字节、字和长字的读操作,但只支持长字的写操作。“->”操作符可以产生和case操作符效果类似的语句块,它可以用于枚举类型的表达式,“if-else”适合于“真-假”类型的表达式。“A->B”表示满足A的情况下执行B
双向约束:SV的约束是双向的,这表示它会同时计算所有的随机变量的约束。增加或删除任一个变量的约束都会直接或间接影响所有相关变量值的选取。“->”和“if-else”也是双向的,如{(a==1)->(b==0)}约束下有 (a,b)=(0,0)、(a,b)=(0,1)、(a,b)=(1,0)这三种情况,a==1时对b有约束,但b==0时对a没有约束。
32.格雷码的异步处理可以采用直接打拍的方式,在STA时不需要特殊检查()
33.报文长度为65bytes,FPGA处理位宽为64bit,采用250M工作时钟,包处理性能为( B )M。
A 250 B 250除以9 C 250除以65 D 250除以64
解析:64bit = 8bytes; 65 / 8 = 8.125 取整到 9
所以处理速度是 250 / 9 (M/s)
34.施密特触发器的主要作用不包括( C )。
A 波形整型,如将正弦波变成矩形波
B 用在多谐振荡器中
C 无失真的放大输入的信号
D 抗干扰,可以抑制阈值附近信号跳变引起的输出跳变
解析:施密特触发器可作为波形整形电路,能将模拟信号波形整形为数字电路能够处理的方波波形,而且由于施密特触发器具有滞回特性,所以可用于抗干扰,其应用包括在开回路配置中用于抗扰,以及在闭回路正回授/负回授配置中用于实现多谐振荡器。
35.传输延迟将随扇出的增大而( ),随扇入的增大而( )。D
A 增大,减小 B 减小,增大 C 减小,减小 D 增大,增大
解析:传输延迟随扇入迅速恶化,因为电阻电容同时增加。
传输延迟随扇出数线性增加。
36.设int n=2, *p=&n, *q=p; 则以下赋值语句为非法的是( C )。
A *p=*q B n=*q C p=n D p=q
解析:题目中int n=2,*p=&n,*q=p 定义整型n,p是一个指向n的指针,它的值为n的地址。q是一个指针,q的值和p的值相同,也就是它俩是同样的地址。
A选项,*p=*q意思是指针q指向的值赋给q地址指向的值。
B选项,n=*q是将指针q所指向的值赋给n。
C是错误的,不能把一个变量赋给一个指针。应该是p=&n或者*p=n
D选项,p=q使得p的值等于q的值,它俩都是指针,可以赋值。
37.某放大电路在负载开路时的输出电压为4V,接入12k欧姆的负载电阻后,输出电压为3V,这说明放大电路的输出电阻为( B )。
A 2k B 4k C 12k D 10k
解析:接入负载后的输出电压为负载开路时输出电压的3/4,所以分压电阻值为负载电阻值的3倍,即放大电路的输出电阻为4 kΩ。
3+(3/12)×R=4 ,R=4K
38.下面关于$display,$strobe,$monitor的区别描述正确的是( C )。
A $strobe直接立刻输出,$monitor是等稳定后输出,$display是发生变化时输出
B $strobe直接立刻输出,$display是等稳定后输出,$monitor是发生变化时输出
C $display直接立刻输出,$strobe是等稳定后输出,$monitor是发生变化时输出
D $display直接立刻输出,$display是等稳定后输出,$strobe是发生变化时输出
解析:$display()和$strobe()用法和文本基本一致,$strobe()在该时刻所有事件处理完成才打印文本。$monitor()监控和输出参数列表中的表达式或变量值。
39.下面4项关于奇偶校验的描述正确的是( C )。
A 奇偶校验可以避免误码的发生 B 奇偶校验一定可以检测错误
C 奇偶校验使用1bit校验位 D 奇偶校验可以检测多bit误码
奇偶校验只有1位。只是发现,并不能避免误码发生。
没有什么一定可以检测错误。
只能检测1bit误码。
40.下列哪种时钟类型一般推荐使用( A )。
A 门控时钟 B 多级逻辑时钟 C 行波时钟 D 全局时钟
解析:全局时钟(或同步时钟)是最简单和最可预测的时钟。
随着设计复杂度增加,人们对功耗的要求越来越高,所以门控时钟现在作为一种有效的低功耗设计方法,被广泛的使用到设计过程中。
多级逻辑时钟使得,对设计的验证变得很困难,项目的可靠性变得很差。不推荐使用多级门控时钟。
波动式时钟,把和电路有关的定时计算变得复杂化,使系统的实际速度下降。
41.用8421码表示的十进制数45,可以写成( B)。
A [101101]BCD B [01000101]BCD C [101101]2 D 45
解析:8421就是BCD码,每个十进制数都用4位进行表示。
42.一个反相器,它测出的转换时间为tLH=7ns和tHL=3ns,最大信号频率为( D )。
A 10MHz B 50MHz C 500MHz D 100MHz
高电平转低电平的延迟时间 tHL、低电平转高电平的延迟时间 tLH。
反相器时间就是组合逻辑延时。根据反相器最大延时tLH=7ns,然后再考虑没有说明的触发器建立时间和触发器延时,假定最小时间周期为10ns,相应最大信号频率为100MHz。
二、多选题
1. 下列说法正确的是 CD
A. 异步FIFO设计不需要考虑两个时钟的频率关系
B. 异步FIFO设计中使用格雷码的目的之一是为了提高电路速度
C. 异步电路中,只有信号电平反转才可能引入亚稳态
D. 管脚静态配置信号可以不用做异步处理
2. 异步电路的检查或验证方法 CD
A. FPGA验证测试
B. 代码Review
C. STA
D. RTL仿真
解析:STA:意思是静态时序分析(Static Timing Analysis),做FPGA设计时是必须的一个步骤,事实上大家一般都已经做了这一步,我们在FPGA加约束、综合、布局布线后,会生成时序分析报告(在ISE中可以运行Timing Analyzer生成详细的时序报告), 设计人员会检查时序报告、根据工具的提示找出不满足setup/hold time的路径,以及不符合约束的路径,这个过程就是STA。细致全面的STA可以保证设计的时序符合要求,只要代码robust(综合结果符合设计原意),可以省略后仿真。
RTL行为级仿真:在大部分设计中执行的第一个仿真将是RTL行为级仿真。这个阶段的仿真可以用来检查代码中的语法错误以及代码行为的正确性,其中不包括延时信息。如果没有实例化一些与器件相关的特殊底层元件的话,这个阶段的仿真也可以做到与器件无关。因此在设计的初期阶段不使用特殊底层元件即可以提高代码的可读性、可维护性,又可以提高仿真效率,且容易被重用。
3.代码覆盖率主要包括 BCD
A. 功能覆盖率
B. 条件覆盖率
C. 状态机覆盖率
D. 行覆盖率
4.SRAM面积大小与那些因素相关 ABCD
A. 容量,即总bit数
B. 地址译码方式
C. 禁布区
D. BIST电路
5.关于综合说法不正确的是 ABD
A. 如果实现的电路频率比较高,一般建议使用LVT Cell库综合
B. 如果综合时钟过约束30%,后端就可以实现同等频率
C. 综合阶段的时序Violation需尽可能优化干净,否则后端实现可能会出现困难
D. 一般为了综合优化的效果好,综合工具使用越新越好
6.自底向上(Bottom-Up)综合策略的优点是 BCD
A. 需要进行多次迭代
B. 可以根据不同模块的不同特点和要求单独进行优化
C. 对内存要求较小并且可以在多个机器上并行执行
D. 某个模块修改后不必重新综合整个设计,减少了综合时间
7.以下关于存储器的描述正确的是( CD )。
A RAM在断电后信息不会丢失,接通电源即可使用
B ROM可以任意进行读写操作
C RAM可以任意进行读写操作
D ROM在断电后信息不会丢失,接通电源即可使用
RAM可以随时读写,断电后不能保存数据。
ROM只能写入,并不能加以修改,断电后可以保存数据。
8.以下属于C语言结构化程序的设计方法步骤为( ABCD )。
A 逐步细化 B 模块化设计 C 结构化编码 D自顶向下
结构化程序设计方法:自顶向下-逐步细化-模块化设计-结构化编码。
9.下面哪些措施对提高设计的频率有帮助( AD )。
A 组合逻辑拆分 B 减少不必要的寄存器复位
C ram/fifo输出寄存 D减少信号扇出数
提高频率就是降低各种延时。
组合逻辑拆分就是流水线设计,各个部分之间插入寄存器。
减少扇出可以减少延迟。
10.下面关于always语句描述正确的是( ACD )。
A 组合逻辑always中敏感列表可以标明敏感变量,也可以用*替代
B 在时序逻辑语句块中非阻塞赋值和阻塞赋值都可以使用,没有本质差别
C 阻塞赋值按照顺序执行,非阻塞赋值并发执行
D 时序逻辑always中敏感列表必须标明时钟信号和复位信号(如果使用异步复位)
注:always@(*)*敏感变量由综合器根据always里面的输入变量自动添加,不用自己考虑。
参考资料:FPGA探索者、数字芯片设计
参考资料:https://blog.csdn.net/persistlzy/article/details/108357244
参考资料:https://www.bilibili.com/read/cv10493013