硬件工程师-面试笔记0305

1、单片机中断的原理

中断响应的条件:讲到这儿,我们依然对于计算机响应中断感到神奇,我们人可以响应外界的事件,是因为我们有多种“传感器“――眼、耳可以接受不同的信息,计算机是如何做到这点的呢?其实说穿了,一点都不希奇,MCS51工作时,在每个机器周期中都会去查询一下各个中断标记,看他们是否是“1“,如果是1,就说明有中断请求了,所以所谓中断,其实也是查询,不过是每个周期都查一下而已。这要换成人来说,就相当于你在看书的时候,每一秒钟都会抬起头来看一看,查问一下,是不是有人按门铃,是否有电话。。。。很蠢,不是吗?可计算机本来就是这样,它根本没人聪明。了解了上述中断的过程,就不难解中断响应的条件了。在下列三种情况之一时,CPU将封锁对中断的响应:

CPU正在处理一个同级或更高级别的中断请求。现行的机器周期不是当前正执行指令的最后一个周期。我们知道,单片机有单周期、双周期、三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指令,则CPU至少再执行一条指令才应中断。这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令才可以响应中断。

2、中断响应过程

  CPU响应中断时,首先把当前指令的下一条指令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记,将相应的中断入口地址送入PC,PC是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。这些工作都是由硬件来完成的,不必我们去考虑。这里还有个问题,大家是否注意到,每个中断向量地址只间隔了8个单元,如0003-000B,在如此少的空间中如何完成中断程序呢?很简单,你在中断处安排一个LJMP指令,不就可以把中断程序跳转到任何地方了吗? 

3、阻抗匹配

阻抗指的是电阻加电抗,阻抗是电阻和电抗在向量上的和,阻抗匹配主要是用于传输线上所有的高频信号都能传输至负载点的目的,不能有信号反射会发射点,提升传输能源效率。当某个电源的内阻等于其负载时,输出功率最大,则为阻抗匹配,如为高频信号,则为无反射波。阻抗匹配是指在能量传输时,要求负载阻抗要和传输线的特征阻抗相等,此时的传输不会产生反射,表明所有能量都被负载吸收了.反之则在传输中有能量损失。

  阻抗匹配有串联终端匹配和并联终端匹配,串联终端匹配是信号源端阻抗低于传输线特征阻抗的情况下采用,在信号源与传输线上串接一个电阻,使得信号源的输出阻抗和传输线的特征阻抗相匹配,抑制负载端反射回来的信号发生再反射。并联终端匹配是在信号源端阻抗很小的情况下,通过增加并联电阻使负载端输入阻抗与传输线的特征阻抗相匹配,达到消除负载端反射的目的。

  并联终端匹配分为单电阻和双电阻,RS-485总线终端匹配多采用的是双电阻并联终端匹配,如采用单电阻方式,负载端并联电阻值与传输线的特性阻抗相等或相近,那样静态电流将会很大,对电流驱动能力要求很高,很少采用。双电阻并联终端匹配由于是两电阻并联值与传输线的特性阻抗相等或相近,每个电阻都比传输线的特征阻抗大,对电流的要求不高。但是,并联终端匹配不管是单电阻还是双电阻总归是会带来直流功耗,降低总线负载能力。一般485总线传输线的特征阻抗为120欧姆,采用两个120欧姆电阻作为485总线的终端匹配电阻,具体连接方式是首尾各接一个,并联于485正负上。由于485总线并联电阻会导致直流功耗,一般建议在传输距离不超过300米,传输速率较低的情况下不要接终端电阻,只有在传输有信号反射,导致通信不稳定的情况下才加以考虑接终端电阻。

4、OC, OD门

OC, OD门结构一样,OC门是三极管上的,OD门是MOSFET上的。

开集级电路英语Open Collector,俗称“集电极开路门”或“OC门”),是一种集成电路的输出装置。OC门实际上只是一个NPN型三极管,并不输出某一特定电压值或电流值。OC门根据三极管基级所接的集成电路来决定(三极管发射极接地),通过三极管集电极,使其开路而输出。而输出设备若为场效应晶体管(MOSFET),则称之为漏极开路英语Open Drain,俗称“OD门”),工作原理相仿。通过OC门这一装置,能够让逻辑门输出端的直接并联使用。两个OC门的并联,可以实现逻辑与的关系,称为“线与”,但在输出端口应加一个上拉电阻电源相连。

5、什么是同步逻辑和异步逻辑,同步电路和异步电路的区别是什么?

通俗来讲,同步电路是需要时钟控制的,即它的逻辑变化是在下一个时钟到来时才改变,而异步电路则不然。

在同步时序电路中全部触发器均用同一个外部时钟脉冲CP触发。
在异步时序电路中各触发器则可以采用不同的时钟信号触发。
组合逻辑电路:

组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。组合逻辑电路可以有若个输入变量和若干个输出变量,其每个输出变量是其输入的逻辑函数,其每个时刻的输出变量的状态仅与当时的输入变量的状态有关,与本输出的原来状态及输入的原状态无关,也就是输入状态的变化立即反映在输出状态的变化。组合逻辑电路没有记忆功能。

时序逻辑电路:

时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。时序电路具有记
忆功能。

时序逻辑电路可以分为同步时序电路和异步时序电路两大类:

1.同步时序电路:同步时序电路是指各触发器的时钟端全部连接在一起,并接系统时钟端;只有当时钟脉冲到来时,电路的状态才能改变;改变后的状态将一直保持
到下一个时钟脉冲的到来,此时无论外部输入x有无变化;状态表中的每个状态都是稳定的.
2.异步时序电路:异步时序电路是指电路中除已使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件;电路中没有统一的时钟;电路状态
的改变由外部输入的变化直接引起.可将异步时序逻辑电路分为脉冲异步时序电路和电平异步时序电路.

6、什么是 Setup 和 Holdup 时间?

Setup/Hold time 是测试芯片对输入信号和时钟信号之间的时间要求。
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time.如不满足Setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。保持时间是指触发器的时钟信号上升沿到来以后,数据稳定 不变的时间。如果hold time不够,数据同样不能被打入触发器。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。
保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现stability的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。

Setup/Hold time 是测试芯片对输入信号和时钟信号之间的时间要求。
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time.如不满足Setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。保持时间是指触发器的时钟信号上升沿到来以后,数据稳定 不变的时间。如果hold time不够,数据同样不能被打入触发器。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。
保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现stability的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。

7、说说对数字逻辑中的竞争和冒险的理解,并举例说明竞争和冒险怎样消除。

在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争,产生毛刺叫冒险。如果布尔式中有
相反的信号则可能产生竞争和冒险现象。有竞争不一定有冒险,冒险产生需要布尔式中有相反的信号。解决方法:一是添加布尔式的消去项二是在芯片外部加电容

8、常用逻辑电平:12V,5V,3.3V;TTL和CMOS不可以直接互连,由于TTL是在(0V-5V)0.3-3.6V之间,而CMOS则是有在12V的有在5V的,电源电压一般3V-15V。

1.CMOS是场效应管构成,TTL为双极晶体管构成
2.CMOS的逻辑电平范围比较大(5~15V),TTL只能在5V下工作
3.CMOS的高低电平之间相差比较大、抗干扰性强,TTL则相差小,抗干扰能力差
4.CMOS功耗很小,TTL功耗较大(1~5mA/门)
5.CMOS的工作频率较TTL略低,但是高速CMOS速度与TTL差不多相当

CMOS输出可以直接接到TTL输入,TTL要驱动CMOS需加上拉。

9、上拉电阻作用

10、ESD模型

11、如何解决亚稳态

亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何 时输出才能稳定在某个正确
的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。
解决方法:
1.降低系统时钟
2.用反应更快的FF
3.引入同步机制,防止亚稳态传播
4.改善时钟质量,用边沿变化快速的时钟信号
关键是器件使用比较好的工艺和时钟周期的裕量要大。

12、IC设计中同步复位与异步复位的区别

同步复位在时钟沿采复位信号,完成复位动作。异步复位不管时钟,只要复位信号满足条件,就完成复位动作。异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。

13、多时域设计中,如何处理信号跨时域

不同的时钟域之间信号通信时需要进行同步处理,这样可以防止新时钟域中第一级触发器的亚稳态信号对下级逻辑造成影响,其中对于单个控制信号可以用两级同步器,如电平、边沿检测和脉冲,对多位信号可以用FIFO,双口RAM,握手信号等。跨时域的信号要经过同步器同步,防止亚稳态传播。例如:时钟域1中的一个信号,要送到时钟域2,那么在这个信号送到时钟域2之前,要先经过时钟域2的同步器同步后,才能进入时钟域2。这个同步器就是两级d触发器,其时钟为时钟域2的时钟。这样做是怕时钟域1中的这个信号,可能不满足时钟域2中触发器的建立保持时间,而产生亚稳态,因为它们之间没有必然关系,是异步的。这样做只能防止亚稳态传播,但不能保证采进来的数据的正确性。所以通常只同步很少位数的信号。比如控制信号,或地址。当同步的是地址时,一般该地址应采用格雷码,因为格雷码每次只变一位,相当于每次只有一个同步器在起作用,这样可以降低出错概率,象异步FIFO的设计中,比较读写地址的大小时,就是用这种方法。 如果两个时钟域之间传送大量的数据,可以用异步FIFO来解决问题。

posted @ 2016-05-03 19:55  Imapla  阅读(542)  评论(0编辑  收藏  举报