整理乐鑫科技2021届招聘的数字IC提前批笔试题,并做了部分答案和解析,有问题的地方欢迎一起探讨。
一.单选题
1.关于跨时钟域电路的设计,以下说法正确的是:
A: 信号经两级D触发器同步后即可进行跨时钟域传递
B: 跨时钟域电路存在亚稳态风险,最好避免使用
C: 跨时钟域电路中一定存在亚稳态
D: 采用单一时钟的电路也可能产生亚稳态
答案:B 或 D(答案暂不确定)
解析:
4 种方法跨时钟域处理方法
(1)打两拍,两级触发器同步——单bit数据跨时钟域处理,适用于慢时钟域数据到快时钟域;
(2)异步双口RAM(异步FIFO可以实现同样效果)——多bit数据跨时钟域处理;
(3)格雷码转换;
(4)加握手信号。
A:不一定,跨时钟域时一般可以使用两级D触发器对信号“打两拍”,有时需要打多拍,但是并不能按照A的说法去说。(注:两级并不能完全消除亚稳态危害,但是提高了可靠性,减少其发生概率。总的来讲,就是一级寄存器发生亚稳态的概率很大,三级及以上改善不大。)
B:亚稳态出现场景:异步信号检测、跨时钟域信号传输以及复位电路,最好避免使用,但多数情况下无法避免;
C:概率问题,可能出现,并非一定。
D:只要系统中有异步元件,亚稳态就是无法避免的,亚稳态主要发生在异步信号检测、跨时钟域信号传输以及复位电路等常用设计中。亚稳态产生原因是建立时间setup或保持时间hold不满足,单路时钟也有可能不满足,此处有争议。
2.若要将异或非门当作反相器(非门)使用,则输入端A B端的连接方式是()
A:A或B中有一个接“0”
B:A和B并联使用
C:A或B中有一个接"1”
D:不能实现
答案:A
解析:1与0异或非为0,0与0异或非为1,有一个接0后相当于非门;
1与1异或非为1,0与1异或非为0,有一个接1后相当于寄存器;
3.以下代码综合出来的D触发器的D端逻辑表达式为:
always @( posedge clk or negedge rst_n)
if(~rst n)q<= 1'b0;
else if(set)q<= 1'b1;
else if(wr)q<= wdata;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
A: ~set & (we & wdata) | q
B: set | (wr | wdata) & q
C: set | wr & wdata | ~wr & q
D: set & (~wr & q) | wr & wdata & (~set)
答案:C
解析:set为1时,q输出1;wr与wdata同时为1时,q输出1;wr不为1时,输出上一状态的q。
4.ModuleA/ModuleB用的是同个Clock, Clock领率80MHz。ModuleA和ModuleB同时启动,ModuleA产生如下周期性的burst数据给ModuleB,一共产生8次burst. burst rate : 1280 Mbit/s,burst持续时间1us。burst内部速率均匀,burst周期5us,余下的4us内没有数据
ModuleB收到启动信号后,需要花10us做初始化,所以先把module A的数据缓存在ModuleB内部的同步FIFO中,同步FIFO位宽32bits,初始化结束后,ModuleB以640 Mbit/s的均匀速度从FIFO中读取数据。在满足功能需求的前提下,为了节省电路面积,要求FIFO size越小越好,以下四个选项的FIFO深度,选项()的FIFO深度符合要求:
A: 128
B: 64
C: 96
D: 160
答案:A
解析:
考虑最大数据情况,在ModuleB启动的10us内,ModuleA一直在传输数据,一共2us有效数据,需要存储 1280Mbit/s * 2us = 2560 bit;在第11us,ModuleA传输数据 1280Mbit/s * 1us = 1280 bit,ModuleB读取 640 Mbit/s * 1us = 640 bit,需要存储 1280 - 640 = 640 bit,此时共需存储 2560 + 640 = 3200 bit。
考虑读取,前15us共写入 3 * 1280=3840,读取 5*640=3200,需要存储640。
综合考虑,最大需要存3200bit,深度需要 3200 / 32 = 100,选A的128较为合适。
5.欲产生序列信号11010111,则至少需要()级触发器
A: 3
B: 4
C: 2
D: 5
答案:A
解析:8位序列,23=8。
二:多选题
1.以下方法哪些是进行面积优化( )。
A: 串行化
B: 资源共享
C: 流水线设计
D: 寄存器配平
E: 逻辑优化
F: 关键路径优化
答案:ABE
解析:
面积优化,提高资源利用率以降低功耗要求:串行化,资源共享,逻辑优化;
速度优化,提高运行速度:流水线设计,寄存器配平,关键路径优化。
2.下面哪些属于动态验证范畴( ).
A: 形式验证
B: Modelsim仿真
C: 后仿
D: STA
答案:BC
解析:
A,形式验证是一种静态的验证手段,它根据电路结构静态地判断两个设计在功能上是否等价,常用来判断一个设计在修改前和修改后其功能是否保持一致。它运行时无须测试向量,但是必须有一个参照设计和一个待验证的设计;
B,Modelsim仿真中既可以功能仿真(静态),也可以时序仿真(动态),时序仿真时利用网表文件”.vo”和延时文件”.sdo”;
C,后仿,时序仿真加入布局布线的连线延时,属于动态时序分析;
D,Static Timing Analysis,静态时序分析;
前仿是针对RTL的功能验证,
后仿是针对是综合后(加入约束,延时等信息)的网表文件,在前仿的基础上加入了延时信息的功能仿真,同时验证了设计的时序以及功能都正确。
3.在异步设计中的对跨时钟处理的信号,功能验证时般需要考虑以下哪些因素()
A: 信号变化的最小宽度
B: 信号高电平有效还是低电平有效
C: 时钟频率
D: 相位和抖动
答案:ABC
解析:相位和抖动是考虑时序仿真所用,其他都是正常的功能仿真时要考虑的,比如在Modelsim的功能仿真(前仿)时,TestBench需要考虑ABC内容。
4.可综合的verilog语法包括( )
A: for
B: wait
C: assign
D: initial
E: time
F: always
G: generate
答案:ACFG
解析:无。
5.在高速的系统设计中,下列哪种优化方案的可以提高系统的工作频率()
A:树型结构
B:迟置信号后移
C:流水线
D:资源共享
答案:ABC
解析:D是资源优化,树形结构、迟置信号后移、流水线均能提高系统工作频率。
三.填空题
1.assign重写一段代码。
答案:assign out = (in&(a^b))|(~in&{in[6:0],1’b0});
解析: in[i]=1时,a[i]^b[i];
In[i]=0时,左移一位,最低位补零。
2.将2004个叫1"异或起来的结果为(0)。
解析:偶数个1异或为0.
3.用2048x12的ROM芯片,最多能实现()个输入 ()个 输出的组合逻辑的数。
答案:11,12
解析:2048=211,2048深度,是11位地址位,2048*12表示11位输入地址、12位输出数据(ROM只能输出)。
4.一个4bits的输入A,AE= 4’b0, A中从MSB开始出现的第个1的位置表示为B。 e.g.: A= 4’b0111. B= 2’b10 (从MSB开始,第一个1出现在A的bit2)
B[1]= () B[0]= ().
答案:A[3]|(~A[3]&A[2]),A[3]|(!A[3:2]&A[1])
解析: A[3]=1时,B=2’11,B[1]=1,B[0]=1;
A[3]=0,A[2]=1时,B=2’10,B[1]=1,B[0]=0;
A[3]=0,A[2]=0,A[1]=1时,B=2’01,B[1]=0,B[0]=1;
A[3]=0,A[2]=0,A[1]=0,A[0]=1时,B=2’00,B[1]=0,B[0]=0;
B[1]=1:A[3]|(~A[3]&A[2])
B[0]=1:A[3]|(!A[3:2]&A[1])
~是按位取反,!是逻辑取反(非0即1)
5.某个SRAM共12根地址线A11 -A0,32根数据线D31-D0, 如果要实现20Dytes的Memory,需要()块这样的SRAM?
答案:64
解析:12根地址线,存储深度为2^12,32根数据线有4 Bytes,即一个SRAM存储2^14 Bytes,共需 2^20 / 2^14 = 2^6 = 64 块。
6.已知R1= R2 = R3 = R4 = R5 = R6 = R,下图从电源两端向右看去的等效电阻为(2R)。
7. 一批IC样品在测试中发现有setup或者hold时序问题 现取A B. C、D四颗样品进行测试A降温后停止工作,则很可能是()问题: B升温后停止工作,则很可能是()问题; C降压后停止工作,则很可能是()问题,D升压后停止工作,则很可能是()问题。
答案:hold(不确定),setup(不确定),setup,hold
解析:
电压的关系可以确定,setup可以用提高电压来满足,所以C降压后停止工作可能是setup问题,D升压后停止工作可能是hold问题。
温度的关系没找到相关资料,但是按出题人的思路想,应该是和电压的影响相反,这里A和B猜测是hold和setup。
这里涉及的是PVT(Process,Voltage,Temperature),本人不是做这方面的,不深入去找了。
8.下图表示几进制计数器
答案:五
解析:最后的Q2部分,上面1J处的意思是先把两输入信号做“与”运算,再将运算结果作为JK触发器的输入,在Quartus中绘制原理图如图所示,给出Modelsim仿真,可以按照仿真波形去验证自己画出的波形,对Q2,显然每5个CP时钟出现一次高电平脉冲,五进制计数器。
9.OOP的三大特征是(封装性、继承性、多态性)。
10.NAND和NOR Flash的主要区别是1.(NAND)中常存在坏块, 2.(NAND)容量可以做到很大,3.(NAND)写入速度比较快, 4.(NOR Flash)读出速度比较快
四.问答题
1.请根据下面的设计描述,尽可能多的列出你所能想到的测试点。
如下图所示异步FIFO, rdata和wdata均为8位数据,FIFO深度为16.当rst_n输入为低时,FIFO被复位,当wclk的上升沿采样到wr为高时,数据被写入
FIFO;当rclk的上升沿采样到rd为高时,FIFO输出数据。此外,当FIFO为空时,empty信号输出为高,当FIFO满时, full信号输出为高。
测试点:
(1)复位信号,复位给出后各信号状态;
(2)读写同时有效时的判断,读写冲突先执行读还是先执行写;
(3)写溢出时的数据处理和full满标志位;
(4)读为空时的数据输出和empty空标志位;
(5)欢迎补充。。。
2.请实现对4*4矩阵式健盘的按键识别,假设每次都是单按键输入,需要有去抖功能(持续20 ms以上被认为是有效键值) ,模块时钟频率为1 kHZ.
要求用状态机实现,定义状态,画出状态转移图,并用Verilog完整描述该识别模块。
矩阵式健盘电路结构参见下图,其中行线1-4由识别模块控制输出,列线5~8为识别模块的输入。
解析:可以参考单片机的矩阵键盘检测(扫描法)和防抖(加延时,两次检测),转成状态机形式。
3.Verilog实现串行CRC-8,G(D)=D8+D2+D+1。
解析:状态机,可以按照C语言的CRC-8转成状态机写法,用计数器代替for循环。
欢迎关注。
</div><div><div></div></div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-ff98e99283.css" rel="stylesheet"></div>