【Verilog】 同步复位和异步复位比较 async vs. sync

 

同步复位 sync

异步复位 async

特点

复位信号只有在时钟上升沿到来时才能有效。

无论时钟沿是否到来,只要复位信号有效,就进行复位。

Verilog描述

always@(posedge CLK)

always@(posedge CLK , negedge Rst_n)

优点

1)  利于仿真器仿真。

2)  因为只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

3)  可以使所设计的系统成为100%的同步时序电路,有利于时序分析。

1)  设计相对简单。

2)  因为大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。

3)  异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR

缺点

1)  复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。

 

2)  由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

 

1)  复位信号容易受到毛刺的影响。

 

2)  在复位信号释放(release)的时候容易出现问题。具体就是说:若复位释放刚好在时钟有效沿附近时,很容易使寄存器输出出现亚稳态,从而导致亚稳态。

总结

 

推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。

相关讨论:

1、同步电路和异步电路的区别是什么?
异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO或RAM的读写控制信号脉冲,但它同时也用在时序电路中,此时它没有统一的时钟,状态变化的时刻是不稳定的,通常输入信号只在电路处于稳定状态时才发生变化。也就是说一个时刻允许一个输入发生变化,以避免输入信号之间造成的竞争冒险。电路的稳定需要有可靠的建立时间和持时间,待下面介绍。
      
同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路,其所有操作都是在严格的时钟控制下完成的。这些时序电路共享同一个时钟CLK,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。比如D触发器,当上升延到来时,寄存器把D端的电平传到Q输出端。
在同步电路设计中一般采用D触发器,异步电路设计中一般采用Latch

2、什么是同步逻辑和异步逻辑?
同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。
电路设计可分类为同步电路和异步电路设计。同步电路利用时钟脉冲使其子系统同步运作,而异步电路不使用时钟脉冲做同步,其子系统是使用特殊的开始完成信号使之同步。由于异步电路具有下列优点--无时钟歪斜问题、低电源消耗、平均效能而非最差效能、模块性、可组合和可复用性--因此近年来对异步电路研究增加快速,论文发表数以倍增,而Intel Pentium 4处理器设计,也开始采用异步电路设计。
异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO或RAM的读写控制信号脉冲,其逻辑输出与任何时钟信号都没有关系,译码输出产生的毛刺通常是可以监控的。同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路,其所有操作都是在严格的时钟控制下完成的。这些时序电路共享同一个时钟CLK,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。

 

3、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现(漏极或者集电极开路),由于不用oc门可能使灌电流过大,而烧坏逻辑门,同时在输出端口应加一个上拉电阻。(线或则是下拉电阻)

4、什么是Setup Holdup时间?

5setupholdup时间,区别.

6、解释setup timehold time的定义和在时钟信号延迟时的变化。

 

7、解释setuphold time violation,画图说明,并说明解决办法。
时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现metastability的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。


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

9、什么是竞争与冒险现象?怎样判断?如何消除?
在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的(冗余)消去项,但是不能避免功能冒险,二是在芯片外部加电容。三是增加选通电路

 

在组合逻辑中,由于多少输入信号变化先后不同、信号传输的路径不同,或是各种器件延迟时间不同(这种现象称为竞争)都有可能造成输出波形产生不应有的尖脉冲(俗称毛刺),这种现象成为冒险。

10、你知道那些常用逻辑电平?TTLCOMS电平可以直接互连吗?

 

常用逻辑电平:TTLCMOSLVTTLLVCMOSECLEmitter Coupled Logic)、PECLPseudo/Positive Emitter Coupled Logic)、LVDSLow Voltage Differential Signaling)、GTLGunning Transceiver Logic)、BTLBackplane Transceiver Logic)、ETLenhanced transceiver logic)、GTLPGunning Transceiver Logic Plus);RS232RS422RS48512V5V3.3V);TTLCMOS不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。CMOS输出接到TTL是可以直接互连。TTL接到CMOS需要在输出端口加一上拉电阻接到5V或者12V
cmos
的高低电平分别为:Vih>=0.7VDD,Vil<=0.3VDD;Voh>=0.9VDD,Vol<=0.1VDD.
ttl
的为
:Vih>=2.0v,Vil<=0.8v;Voh>=2.4v,Vol<=0.4v.
cmos可直接驱动ttl;加上拉电阻后,ttl可驱动
cmos.
1
、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。

2
OC门电路必须加上拉电阻,以提高输出的搞电平值。
3
、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
4
、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。
5
、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。
6
、提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。
7
、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。
上拉电阻阻值的选择原则包括:
1
、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。

2
、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。
3
、对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑
以上三点,通常在1k10k之间选取。对下拉电阻也有类似道理
//OC
门电路必须加上拉电阻,以提高输出的搞电平值。
OC
门电路要输出“1”时才需要加上拉电阻不加根本就没有高电平
在有时我们用OC门作驱动(例如控制一个LED)灌电流工作时就可以不加上拉电阻
OC
门可以实现线与运算
OC
门就是  集电极开路输出
总之加上拉电阻能够提高驱动能力。
11
、如何解决亚稳态。?
亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。
解决方法:
1
降低系统时钟频率
2
用反应更快的FF
3
引入同步机制,防止亚稳态传播

4
改善时钟质量,用边沿变化快速的时钟信号
关键是器件使用比较好的工艺和时钟周期的裕量要大。亚稳态寄存用d只是一个办法,有时候通过notbuf等都能达到信号过滤的效果

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

 

13MOORE MEELEY状态机的特征。
   Moore
状态机的输出仅与当前状态值有关,且只在时钟边沿到来时才会有状态变化. Mealy状态机的输出不仅与当前状态值有关,而且与当前输入值有关,

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

猜你喜欢

转载自blog.csdn.net/BinGoViVi/article/details/5168585