chuanshaoke的个人空间 https://blog.eetop.cn/82559 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

同步复位 异步复位

已有 1455 次阅读| 2009-8-17 10:32

 

一、特点:
同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。

异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。

二、各自的优缺点:

   1、总的来说,同步复位的优点大概有3条:
      a
、有利于仿真器仿 真。                                                                          

      b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。EDA中国门户网站/R1A9| R!@
       c
、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

       他的缺点也有不少,主要有以下几条:

       a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
1^ \"W5a T X o z5k N Y B0       b
、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

    2、对于异步复位来说,他的优点也有三条,都是相对应的:

       a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
     b
、设计相对简单。

       c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR
      
缺点:
       a
、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
       b
、复位信号容易受到毛刺的影响。
三、总结:
   
所以说,一般都推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。

 

 

 

 

 

 

 

 

 

异步复位还是同步复位?

    对于这个问题,网上有很多讨论。在这里总结一下,提醒自己。

异步复位:

always @(posedge clk or posedge reset)
begin
    if(reset)
       // reset
逻辑
    else
       //
同步逻辑
end

 

同步复位:

always @(posedge clk)
begin
    if(reset)
        // reset
逻辑
    else
        //
同步逻辑
end

    ASIC设计中,同步复位要比异步复位多耗资源,但是在FPGA中两者差不多,因为FPGA中的寄存器同步复位和异步复位都提供资源。异步复位会对复位信号上的毛刺产生错误复位。

    ASIC设计中,通常的做法是使用异步复位,在异步复位信号的根部进行总体同步。

    2007年十月份,由于工作安排参加了IBM的芯片后端process的培训,了解了IBM关于后端process的流程、阶段定义和tool chain。当问到IBM的工程师关于异步复位还是同步复位的问题时,他们的回答是都可以,对于IBMtechnology来说两者都没有问题,不需要设计者特别考虑。真是高人呀!看来二者的争论是没有多大必要的了。一般的foundry厂商对两者都有很好的支持。

2009320号更新
   
又有新发现。IBM的标准单元中没有同步复位的DFF,使用同步复位综合成如下结果:
                 
所以使用同步reset会增加逻辑(上图中的与门)。

   
如果使用异步复位,综合结果如下:
                   
此时,使用异步复位会得到更好的时序。

所以,之前是被IBM工程师忽悠了。

一般性原则:如果确定了综合的foundry厂的库,先要研究库中DFF的情况。然后决定reset设计。
          
如果没有库或还不确定制程,比如要写IP,那就用同步reset

 

 

 

 

同步复位及异步复位设计

  关于复位设计,有多种不同的观点和方案。到底是采用同步复位还是异步复位,全局复位还是局部复位,是由多方面的因素决定的。但良好的复位设计既可以提高系统的可靠性,又可以节省大量的逻辑资源。在实际应用中,笔者也看到过很多因为复位电路设计问题而导致的系统可靠性问题。本节针对这几个问题加以说明,希望读者能够找到适合自己设计的复位设计方案。

  复位要解决的问题就是让电路在上电之后有一个确定的初始状态,而很多时候我们设计的复位电路没有能够达到这个效果。

  (1)同步复位的优点是同步的。

  对于非时钟沿的毛刺不敏感。

  对于软件进行的时序分析有好处,可以保证设计在复位的设计上没有时序问题。

  (2)同步复位的缺点需要一个时钟。

  在某些ASICFPGA的设计中要在datapath上插入复位逻辑。

  (3)异步复位的优点

  不需要在datapath上插入复位逻辑。

  (4)异步复位的缺点是异步的。

  因为是异步的,所以工具不自动对路径进行时序约束和检查,可能会有时序问题而导致功能不正常。

  针对以上同步和异步复位的分析,不同的设计者针对自己的应用有如下两个观点。

  (1)坚持同步复位,而忽略其对逻辑资源造成的影响,保证功能第一。笔者以为在FPGA设计中,同步复位的是较为优化的方案。它的一个缺点是需要在datapath上增加额外的逻辑,这点对FPGA来说没有问题。因为FPGA的寄存器都可以选择成同步复位或异步复位,所以不需要在datapath上增加额外的逻辑。也许有人以为,同步复位的时序很难满足,因为复位信号的扇出及延时会很大,我们将在后面详细阐述如何避免这个问题。

  (2)异步复位,对于因此可能造成的寄存器复位的初值不对的问题,采用将同步化了的异步复位信号连到寄存器的异步复位端的这种办法来避免,如图所示。

  图 异步复位的同步化设计

  笔者认为,如果能够约束好reset路径的时延,避开reset撤销沿和时钟的沿,这是一个很好的方案,可以有效去除reset release时导致的寄存器复位状态的错误。但是这个方案的一个问题就是reset路径的延时和skew需要约束,因为是异步复位,约束工具不会自动地来进行约束处理。

 


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 3

    获赞
  • 47

    评论
  • 1113

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-22 07:03 , Processed in 0.020495 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部