数字IC设计经典笔试题张戎王舵蒋鹏程王福生袁波摘要本文搜集了近年来数字IC设计公司的经典笔试题目,内容涵盖FPGA、VerilogHDL编程和IC设计基础知识。AbstractThisarticleincludessomeclassicaltestswhichhavebeenintroducedintointerviewbycompaniesindigitalICdesigninginrecentyears.ThesetestsarevariedfromFPGA,verlogHDLtobaseknowledgeinICdesigning.关键词FPGAVerilogHDLIC设计引言近年来,国内的IC设计公司逐渐增多,IC公司对人才的要求也不断提高,不仅反映在对相关项目经验的要求,更体现在专业笔试题目难度的增加和广度的延伸。为参加数字IC设计公司的笔试做准备,我们需要提前熟悉那些在笔试中出现的经典题目。IC设计基础1:什么是同步逻辑和异步逻辑?同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化,状态表中的每个状态都是稳定的。异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。2:同步电路和异步电路的区别:同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。3:时序设计的实质:时序设计的实质就是满足每一个触发器的建立/保持时间的要求。4:建立时间与保持时间的概念?建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。5:为什么触发器要满足建立时间和保持时间?因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。(比较容易理解的方式)换个方式理解:需要建立时间是因为触发器的D端像一个锁存器在接受数据,为了稳定的设置前级门的状态需要一段稳定时间;需要保持时间是因为在时钟沿到来之后,触发器要通过反馈来锁存状态,从后级门传到前级门需要时间。6:什么是亚稳态?为什么两级触发器可以防止亚稳态传播?这也是一个异步电路同步化的问题。亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。使用两级触发器来使异步电路同步化的电路其实叫做“一位同步器”,他只能用来对一位异步信号进行同步。两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间+第二级触发器的建立时间=时钟周期。更确切地说,输入脉冲宽度必须大于同步时钟周期与第一级触发器所需的保持时间之和。最保险的脉冲宽度是两倍同步时钟周期。所以,这样的同步电路对于从较慢的时钟域来的异步信号进入较快的时钟域比较有效,对于进入一个较慢的时钟域,则没有作用。7:对于多位的异步信号如何进行同步?对以一位的异步信号可以使用“一位同步器进行同步”(使用两级触发器),而对于多位的异步信号,可以采用如下方法:1:可以采用保持寄存器加握手信号的方法(多数据,控制,地址);2:特殊的具体应用电路结构,根据应用的不同而不同;3:异步FIFO。(最常用的缓存单元是DPRAM)8:锁存器(latch)和触发器(flip-flop)区别?电平敏感的存储器件称为锁存器。可分为高电平锁存器和低电平锁存器,用于不同时钟之间的信号同步。有交叉耦合的门构成的双稳态的存储原件称为触发器。分为上升沿触发和下降沿触发。可以认为是两个不同电平敏感的锁存器串连而成。前一个锁存器决定了触发器的建立时间,后一个锁存器则决定了保持时间。9:什么是时钟抖动?时钟抖动是指芯片的某一个给定点上时钟周期发生暂时性变化,也就是说时钟周期在不同的周期上可能加长或缩短。它是一个平均值为0的平均变量。10:寄生效应在IC设计中怎样加以克服和利用(这是我的理解,原题好像是说,IC设计过程中将寄生效应的怎样反馈影响设计师的设计方案)?所谓寄生效应就是那些溜进你的PCB并在电路中大施破坏、令人头痛、原因不明的小故障。它们就是渗入高速电路中隐藏的寄生电容和寄生电感。其中包括由封装引脚和印制线过长形成的寄生电感;焊盘到地、焊盘到电源平面和焊盘到印制线之间形成的寄生电容;通孔之间的相互影响,以及许多其它可能的寄生效应。理想状态下,导线是没有电阻,电容和电感的。而在实际中,导线用到了金属铜,它有一定的电阻率,如果导线足够长,积累的电阻也相当可观。两条平行的导线,如果互相之间有电压差异,就相当于形成了一个平行板电容器(你想象一下)。通电的导线周围会形成磁场(特别是电流变化时),磁场会产生感生电场,会对电子的移动产生影响,可以说每条实际的导线包括元器件的管脚都会产生感生电动势,这也就是寄生电感。在直流或者低频情况下,这种寄生效应看不太出来。而在交流特别是高频交流条件下,影响就非常巨大了。根据复阻抗公式,电容、电感会在交流情况下会对电流的移动产生巨大阻碍,也就可以折算成阻抗。这种寄生效应很难克服,也难摸到。只能通过优化线路,尽量使用管脚短的SMT元器件来减少其影响,要完全消除是不可能的。11:什么是线与逻辑,要实现它,在硬件特性上有什么具体要求?线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用oc门可能使灌电流过大,而烧坏逻辑门.同时在输出端口应加一个上拉电阻。oc门就是集电极开路门。od门是漏极开路门。12:什么是竞争与冒险现象?怎样判断?如何消除?在组合电路中,某一输入变量经过不同途径传输后,到达电路中某一汇合点的时间有先有后,这种现象称竞争;由于竞争而使电路输出发生瞬时错误的现象叫做冒险。(也就是由于竞争产生的毛刺叫做冒险)。判断方法:代数法(如果布尔式中有相反的信号则可能产生竞争和冒险现象);卡诺图:有两个相切的卡诺圈并且相切处没有被其他卡诺圈包围,就有可能出现竞争冒险;实验法:示波器观测;解决方法:1:加滤波电容,消除毛刺的影响;2:加选通信号,避开毛刺;3:增加冗余项消除逻辑冒险。门电路两个输入信号同时向相反的逻辑电平跳变称为竞争;由于竞争而在电路的输出端可能产生尖峰脉冲的现象称为竞争冒险。如果逻辑函数在一定条件下可以化简成Y=A+A’或Y=AA’则可以判断存在竞争冒险现象(只是一个变量变化的情况)。消除方法,接入滤波电容,引入选通脉冲,增加冗余逻辑13:你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?常用逻辑电平:TTL、CMOS、LVTTL、LVCMOS、ECL(EmitterCoupledLogic)、PECL(Pseudo/PositiveEmitterCoupledLogic)、LVDS(LowVoltageDifferentialSignaling)、GTL(GunningTransceiverLogic)、BTL(BackplaneTransceiverLogic)、ETL(enhancedtransceiverlogic)、GTLP(GunningTransceiverLogicPlus);RS232、RS422、RS485(12V,5V,3.3V);也有一种答案是:常用逻辑电平:12V,5V,3.3V。TTL和CMOS不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。CMOS输出接到TTL是可以直接互连。TTL接到CMOS需要在输出端口加一上拉电阻接到5V或者12V。用CMOS可直接驱动TTL;加上拉电阻后,TTL可驱动CMOS.上拉电阻用途:a、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。b、OC门电路必须加上拉电阻,以提高输出的高电平值。c、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。d、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。e、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。f、提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。g、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。上拉电阻阻值的选择原则包括:a、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。b、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。c、对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑以上三点,通常在1k到10k之间选取。对下拉电阻也有类似道理。OC门电路必须加上拉电阻,以提高输出的高电平值。OC门电路要输出“1”时才需要加上拉电阻不加根本就没有高电平在有时我们用OC门作驱动(例如控制一个LED)灌电流工作时就可以不加上拉电阻总之加上拉电阻能够提高驱动能力。14:IC设计中同步复位与异步复位的区别?同步复位在时钟沿变化时,完成复位动作。异步复位不管时钟,只要复位信号满足条件,就完成复位动作。异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。15:MOORE与MEELEY状态机的特征?Moore状态机的输出仅与当前状态值有关,且只在时钟边沿到来时才会有状态变化。Mealy状态机的输出不仅与当前状态值有关,而且与当前输入值有关。16:多时域设计中,如何处理信号跨时域?不同的时钟域之间信号通信时需要进行同步处理,这样可以防止新时钟域中第一级触发器的亚稳态信号对下级逻辑造成影响。信号跨时钟域同步:当单个信号跨时钟域时,可以采用两级触发器来同步;数据或地址总线跨时钟域时可以采用异步FIFO来实现时钟同步;第三种方法就是采用握手信号。17:说说静态、动态时序模拟的优缺点?静态时序分析是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。动态时序模拟就是通常的仿真,因为不可能产生完备的测试向量,覆盖门级网表中的每一条路径。因此在动态时序分析中,无法暴露一些路径上可能存在的时序问题;18:一个四级的Mux,其中第二级信号为关键信号如何改善timing.?关键:将第二级信号放到最后输出一级输出,同时注意修改片选信号,保证其优先级未被修改。19:给出一个门级的图,又给了各个门的传输延时,问关键路径是什