数字IC设计工程师笔试面试经典100题

数字IC设计⼯程师笔试⾯试经典100题
1:什么是同步逻辑和异步逻辑?
同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。同步时序逻辑电路的特点:各触发器的时钟端全部连接在⼀起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将⼀直保持到下⼀个时钟脉冲的到来,此时⽆论外部输⼊x有⽆变化,状态表中的每个状态都是稳定的。
异步时序逻辑电路的特点:电路中除可以使⽤带时钟的触发器外,还可以使⽤不带时钟的触发器和延迟元件作为存储元件,电路中没有统⼀的时钟,电路状态的改变由外部输⼊的变化直接引起。
2:同步电路和异步电路的区别:
甲基铝氧烷
同步电路:存储电路中所有触发器的时钟输⼊端都接同⼀个时钟脉冲源,因⽽所有触发器的状态的变化都与所加的时钟脉冲信号同步。异步电路:电路没有统⼀的时钟,有些触发器的时钟输⼊端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,⽽其他的触发器的状态变化不与时钟脉冲同步。
3:时序设计的实质:
时序设计的实质就是满⾜每⼀个触发器的建⽴/保持时间的要求。
4:建⽴时间与保持时间的概念?
建⽴时间:触发器在时钟上升沿到来之前,其数据输⼊端的数据必须保持不变的最⼩时间。
保持时间:触发器在时钟上升沿到来之后,其数据输⼊端的数据必须保持不变的最⼩时间。
5:为什么触发器要满⾜建⽴时间和保持时间?
因为触发器内部数据的形成是需要⼀定的时间的,如果不满⾜建⽴和保持时间,触发器将进⼊亚稳态,进⼊亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过⼀个恢复时间,其输出才能稳定,但稳定后的值并不⼀定是你的输⼊值。这就是为什么要⽤两级触发器来同步异步输⼊信号。这样做可以防⽌由于异步输⼊信号对于本级时钟可能不满⾜建⽴保持时间⽽使本级触发器产⽣的亚稳态传播到后⾯逻辑中,导致亚稳态的传播。
(⽐较容易理解的⽅式)换个⽅式理解:需要建⽴时间是因为触发器的D端像⼀个锁存器在接受数据,为了稳定的设置前级门的状态需要⼀段稳定时间;需要保持时间是因为在时钟沿到来之后,触发器要通过反馈来锁存状态,从后级门传到前级门需要时间。
6:什么是亚稳态?为什么两级触发器可以防⽌亚稳态传播?
这也是⼀个异步电路同步化的问题。亚稳态是指触发器⽆法在某个规定的时间段内到达⼀个可以确认的状态。使⽤两级触发器来使异步电路同步化的电路其实叫做“⼀位同步器”,他只能⽤来对⼀位异步信号进⾏同步。两级触发器可防⽌亚稳态传播的原理:假 设第⼀级触发器的输⼊不满⾜其建⽴保持时间,它在第⼀个脉冲沿到来后输出的数据就为亚稳态,那么在下⼀个脉冲沿到来之前,其输出的亚稳态数据在⼀段恢复时 间后必须稳定下来,⽽且稳定的数据必须满⾜第⼆级触发器的建⽴时间,如果都满⾜了,在下⼀个脉冲沿到来时,第⼆级触发器将不会出现亚稳态,因为其输⼊端的 数据满⾜其建⽴保持时间。同步器有效的条件:第⼀级触发器进⼊亚稳态后的恢复时间 + 第⼆级触发器的建⽴时间 < = 时钟周期。
更确切地说,输⼊脉冲宽度必须⼤于同步时钟周期与第⼀级触发器所需的保持时间之和。最保险的脉冲宽度是两倍同步时钟周期。所以,这样的同步电路对于从较慢的时钟域来的异步信号进⼊较快的时钟域⽐较有效,对于进⼊⼀个较慢的时钟域,则没有作⽤。
7:系统最⾼速度计算(最快时钟频率)和流⽔线设计思想:
同步电路的速度是指同步系统时钟的速度,同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就愈⼤。假设Tco是触发器的输⼊数据被时钟打⼊到触发器到数据到达触发器输出端的延时时间(Tco=Tsetpup+Thold);Tdelay是组合逻辑的延时;Tsetup是D触发器的建⽴时间。
假设数据已被时钟打⼊D触发器,那么数据到达第⼀个触发器的Q输出端需要的延时时间是Tco,经过组合逻辑的延时时间为Tdelay,然后到达第⼆个触发器的D端,要希望时钟能在第⼆个触发器再次被稳定地打⼊触发器,则时钟的延迟必须⼤于Tco+Tdelay+Tsetup,也就是说最⼩的时钟周期Tmin =Tco+Tdelay+Tsetup,即最快的时钟频率Fmax =1/Tmin。FPGA开发软件也是通过这种⽅法来计算系统最⾼运⾏速度Fmax。因为Tco和Tsetup是由具体的器件⼯艺决定的,故设计电路时只能改变组合逻辑的延迟时间Tdelay,所以说缩短触发器间组合逻辑的延时时间是提⾼同步电路速度的关键所在。由于⼀般同步电路都⼤于⼀级锁存,⽽要使电路稳定⼯作,时钟周期必须满⾜最⼤延时要求。故只有缩短最长延时路径,才能提⾼电路的⼯作频率。可以将较⼤的组合逻辑分解为较⼩的N 块,通过适当的⽅法平均分配组合逻辑,然后在中间插⼊触发器,并和原触发器使⽤相同的时钟,就可以避免在两个触发器之间出现过⼤的延时,消除速度瓶颈,这样可以提⾼电路的⼯作频率。这就是所谓"流⽔线"技术的基本设计思想,即原设计速度受限部分⽤⼀个时钟周期实现,采⽤流⽔线技术插⼊触发器后,可⽤N个时钟周期实现,因此系统的⼯作速度可以加快,吞吐量加⼤。注意,流⽔线设计会在原数据通路上加⼊延时,另外硬件⾯积也会稍有增加。
8:时序约束的概念和基本策略?
时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。通过附加时序约束可以综合布线⼯具调整映射和布局布线,使设计达到时序要求。附加时序约束的⼀般策略是先附加全局约束,然后对
快速和慢速例外路径附加专门约束。附加全局约束时,⾸先定义设计的所有时钟,对各时钟域内的同步元件进⾏分组,对分组附加周期约束,然后对FPGA/CPLD输⼊输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。附加专门约束时,⾸先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。
9:附加约束的作⽤?
1:提⾼设计的⼯作频率(减少了逻辑和布线延时);
2:获得正确的时序分析报告;(静态时序分析⼯具以约束作为判断时序是否满⾜设计要求的标准,因此要求设计者正确输⼊约束,以便静态时序分析⼯具可以正确的输出时序报告)
3:指定FPGA/CPLD的电⽓标准和引脚位置。
10:FPGA设计⼯程师努⼒的⽅向:
SOPC,⾼速串⾏I/O,低功耗,可靠性,可测试性和设计验证流程的优化等⽅⾯。
随着芯⽚⼯艺的提⾼,芯⽚容量、集成度都在增加,FPGA设计也朝着⾼速、⾼度集成、低功耗、⾼可靠性、⾼可测、可验证性发展。芯⽚可测、可验证,正在成为复杂设计所必备的条件,尽量在上板
之前查出bug,将发现bug的时间提前,这也是⼀些公司花⼤⼒⽓设计仿真平台的原因。另外随着单板功能的提⾼、成本的压⼒,低功耗也逐渐进⼊FPGA设计者的考虑范围,完成相同的功能下,考虑如何能够使芯⽚的功耗最低,据说altera、xilinx都在根据⾃⼰的芯⽚特点整理如何降低功耗的⽂档。⾼速串⾏IO的应⽤,也丰富了FPGA的应⽤范围,象xilinx的v2pro中的⾼速链路也逐渐被应⽤。
11:对于多位的异步信号如何进⾏同步?
对以⼀位的异步信号可以使⽤“⼀位同步器进⾏同步”(使⽤两级触发器),⽽对于多位的异步信号,可以采⽤如下⽅法:
1:可以采⽤保持寄存器加握⼿信号的⽅法(多数据,控制,地址);
2:特殊的具体应⽤电路结构,根据应⽤的不同⽽不同;
3:异步FIFO。(最常⽤的缓存单元是DPRAM)
12:FPGA和CPLD的区别?
锯齿线面部提升术
13:锁存器(latch)和触发器(flip-flop)区别?
电平敏感的存储器件称为锁存器。可分为⾼电平锁存器和低电平锁存器,⽤于不同时钟之间的信号同步。有交叉耦合的门构成的双稳态的存储原件称为触发器。分为上升沿触发和下降沿触发。可以认为是两个不同电平敏感的锁存器串连⽽成。前⼀个锁存器决定了触发器的建⽴时间,后⼀个锁存器则决定了保持时间。
14:FPGA芯⽚内有哪两种存储器资源?
FPGA芯⽚内有两种存储器资源:⼀种叫BLOCK RAM,另⼀种是由LUT配置成的内部存储器(也就是分布式RAM)。BLOCK RAM由⼀定数量固定⼤⼩的存储块构成的,使⽤BLOCK RAM资源不占⽤额外的逻辑资源,并且速度快。但是使⽤的时候消耗的BLOCK RAM资源是其块⼤⼩的整数倍。
15:什么是时钟抖动?
时钟抖动是指芯⽚的某⼀个给定点上时钟周期发⽣暂时性变化,也就是说时钟周期在不同的周期上可能加长或缩短。它是⼀个平均值为0的平均变量。
16:FPGA设计中对时钟的使⽤?(例如分频等)
FPGA芯⽚有固定的时钟路由,这些路由能有减少时钟抖动和偏差。需要对时钟进⾏相位移动或变频的时候,⼀般不允许对时钟进⾏逻辑操作,这样不仅会增加时钟的偏差和抖动,还会使时钟带上⽑刺。⼀般的处理⽅法是采⽤FPGA芯⽚⾃带的时钟管理器如PLL,DLL或DCM,或者把逻辑转换到触发器的D输⼊(这些也是对时钟逻辑操作的替代⽅案)。
17:FPGA设计中如何实现同步时序电路的延时?
⾸先说说异步电路的延时实现:异步电路⼀半是通过加buffer、两级与⾮门等来实现延时(我还没⽤过所以也不是很清楚),但这是不适合同步电路实现延时的。在同步电路中,对于⽐较⼤的和特殊要求
的延时,⼀半通过⾼速时钟产⽣计数器,通过计数器来控制延时;对于⽐较⼩的延时,可以通过触发器打⼀拍,不过这样只能延迟⼀个时钟周期。
18:FPGA中可以综合实现为RAM/ROM/CAM的三种资源及其注意事项?
三种资源:BLOCK RAM,触发器(FF),查表(LUT);
注意事项:
1:在⽣成RAM等存储单元时,应该⾸选BLOCK RAM 资源;其原因有⼆:第⼀:使⽤BLOCK RAM等资源,可以节约更多的FF和4-LUT等底层可编程单元。使⽤BLOCK RAM可以说是“不⽤⽩不⽤”,是最⼤程度发挥器件效能,节约成本的⼀种体现;第⼆:BLOCK RAM是⼀种可以配置的硬件结构,其可靠性和速度与⽤LUT和REGISTER构建的存储器更有优势。
2:弄清FPGA的硬件结构,合理使⽤BLOCK RAM资源;
3:分析BLOCK RAM容量,⾼效使⽤BLOCK RAM资源;
智能防盗窗4:分布式RAM资源(DISTRIBUTE RAM)
19:Xilinx中与全局时钟资源和DLL相关的硬件原语:
常⽤的与全局时钟资源相关的Xilinx器件原语包括:IBUFG,IBUFGDS,BUFG,BUFGP,BUFGCE,BUFGMUX,BUFGDLL,DCM等。关于各个器件原语的解释可以参考《FPGA设计指导准则》p50部分。
20:HDL语⾔的层次概念?
HDL语⾔是分层次的、类型的,最常⽤的层次概念有系统与标准级、功能模块级,⾏为级,寄存器传输级和门级。
系统级,算法级,RTL级(⾏为级),门级,开关级
21:查表的原理与结构?
查表(look-up-table)简称为LUT,LUT本质上就是⼀个RAM。⽬前FPGA中多使⽤4输⼊的LUT,所以每⼀个LUT可以看成⼀个有 4位地址线的16x1的RAM。当⽤户通过原理图或HDL语⾔描述了⼀个逻辑电路以后,PLD/FPGA开发软件会⾃动计算逻辑电路的所有可能的结果,并把结果事先写⼊RAM,这样,每输⼊⼀个信号进⾏逻辑运算就等于输⼊⼀个地址进⾏查表,出地址对应的内容,然后输出即可
22:IC设计前端到后端的流程和EDA⼯具?
设计前端也称逻辑设计,后端设计也称物理设计,两者并没有严格的界限,⼀般涉及到与⼯艺有关的设计就是后端设计。
1:规格制定:客户向芯⽚设计公司提出设计要求。
2:详细设计:芯⽚设计公司(Fabless)根据客户提出的规格要求,拿出设计解决⽅案和具体实现架构,划分模块功能。⽬前架构的验证⼀般基于systemC语⾔,对价后模型的仿真可以使⽤systemC的仿真⼯具。例如:CoCentric和Visual Elite等。
3:HDL编码:设计输⼊⼯具:ultra ,visual VHDL等
4:仿真验证:modelsim
5:逻辑综合:synplify
6:静态时序分析:synopsys的Prime Time
7:形式验证:Synopsys的Formality.
23:寄⽣效应在IC设计中怎样加以克服和利⽤(这是我的理解,原题好像是说,IC设计过程中将寄⽣效应的怎样反馈影响设计师的设计⽅案)?
所谓寄⽣效应就是那些溜进你的PCB并在电路中⼤施破坏、令⼈头痛、原因不明的⼩故障。它们就是渗⼊⾼速电路中隐藏的寄⽣电容和寄⽣电感。其中包括由封装引脚和印制线过长形成的寄⽣电感;焊盘到地、焊盘到电源平⾯和焊盘到印制线之间形成的寄⽣电容;通孔之间的相互影响,以及许多其它可能的寄⽣效应。理想状态下,导线是没有电阻,电容和电感的。⽽在实际中,导线⽤到了⾦属铜,它有⼀定的电阻率,如果导线⾜够长,积累的电阻也相当可观。两条平⾏的导线,如 果互相之间有电压差异,就相当于形成了⼀个平⾏板电容器(你想象⼀下)。通电的导线周围会形成磁场(特别是电流变化时),磁场会产⽣感⽣电场,会对电⼦的 移动产⽣影响,可以说每条实际的导线包括元器件的管脚都会产⽣感⽣电动势,这也就是寄⽣电感。在直流或者低频情况下,这种寄⽣效应看不太出来。⽽在交流特别是⾼频交流条件下,影响就⾮常巨⼤了。根据复阻抗公式,电容、电感会在交流情况下会对电流的移动产⽣巨⼤阻碍,也就可以折算成阻抗。这种寄⽣效应很难克服,也难摸到。只能通过优化线路,尽量使⽤管脚短的SMT元器件来减少其影响,要完全消除是不可能的。
24:⽤flip-flop和logic-gate设计⼀个1位加法器,输⼊carryin和current-stage,输出carryout和next-stage?
carryout=carryin*current-stage;与门
next-stage=carryin’*current-stage+carryin*current-stage’;与门,⾮门,或门(或者异或门)
module(clk,current-stage,carryin,next-stage,carryout);
inputclk, current-stage,carryin;
outputnext-stage,carryout;
always@(posedgeclk)
carryout<=carryin¤t-stage;
nextstage<=
25:设计⼀个⾃动饮料售卖机,饮料10分钱,硬币有5分和10分两种,并考虑零,
1.画出fsm(有限状态机)
2.⽤verilog编程,语法要符合FPGA设计的要求
3.设计⼯程中可使⽤的⼯具及设计⼤致过程?
设计过程:
聚丙烯吸收塔1、⾸先确定输⼊输出,A=1表⽰投⼊10分,B=1表⽰投⼊5分,Y=1表⽰弹出饮料,Z=1表⽰零。
2、确定电路的状态,S0表⽰没有进⾏投币,S1表⽰已经有5分硬币。
3、画出状态转移图。
艾叶油胶丸module sell(clk,rst,a,b,y,z);
input clk,rst,a,b;
output y,z;
parameter s0=0,s1=1;
reg state,next_state;
always@(posedge clk)
begin
if(!rst)
state<=s0;
else
state<=next_state;
end
always@(a or b or cstate)
begin
y=0;z=0;
case(state)
s0: if(a==1&&b==0)next_state=s1;
else if(a==0&&b==1)
begin
next_state=s0;y=1;
end
else
next_state=s0;
s1: if(a==1&&b==0)
begin
next_state=s0;y=1;
end
else if(a==0&&b==1)
洗手粉begin
next_state=s0;y=1;z=1;
end
else
next_state=s0;
default: next_state=s0;
endcase
end
endmodule
扩展:设计⼀个⾃动售饮料机的逻辑电路。它的投币⼝每次只能投⼊⼀枚五⾓或⼀元的硬币。投⼊⼀元五⾓硬币后给出饮料;投⼊两元硬币时给出饮料并回五⾓。
1、确定输⼊输出,投⼊⼀元硬币A=1,投⼊五⾓硬币B=1,给出饮料Y=1,回五⾓Z=1;
2、确定电路的状态数,投币前初始状态为S0,投⼊五⾓硬币为S1,投⼊⼀元硬币为S2。画出转该转移图,根据状态转移图可以写成Verilog代码。

本文发布于:2024-09-23 17:21:06,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/314771.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:FDN338P
标签:设计   时钟   触发器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议