ASIC中的异步时序设计-Read.DOCVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ASIC中的异步时序设计-Read

前言 在一般的ASIC教程中,大家接触的大都是同步时序的设计,即单时钟的设计。但是在实际的工程中,纯粹单时钟设计的情况很少,特别是在设计模块与外围芯片的通讯中,跨时钟域的情况经常不可避免。作者在实际工作中就遇到了一些异步时序设计的问题,由于最初对异步时序产生的问题估计不足,导致在设计的后期不得不对设计进行返工,本文介绍的几种同步策略也正是在实践中学习摸索的结果。本文旨在向读者介绍几种实用的同步方法,不可能对异步时序设计涉及的问题覆盖完全。由于篇幅限制,本文主要描述同步策略的核心思想,而不涉及到具体的实现。 问题的产生-亚稳态 异步时序的定义 异步时序设计指的是在设计中有两个或以上的时钟,且时钟之间是同频不同相或不同频率的关系。而异步时序设计的关键就是把数据或控制信号正确地进行跨时钟域传输。 亚稳态 每一个触发器都有其规定的建立(setup)和保持(hold)时间参数, 在这个时间参数内,输入信号在时钟的上升沿是不允许发生变化的。如果在信号的建立时间中对其进行采样,得到的结果将是不可预知的,即亚稳态。 下面从触发器的物理特性方面对亚稳态进行描述:[1] 2-1 亚稳态问题 触发器进入亚稳态的时间可以用参数MTBF(mean time between failures)来描述,MTBF即触发器采样失败的时间间隔,其公式描述如下: MTBF = e (tr/τ)/ T0fa 其中: tr :分辨时间(从时钟沿开始) (?,T0 :触发器参数 f :采样时钟频率 a :异步事件触发的频率 对于一个典型的0.25(m工艺的ASIC库中的一个触发器,我们取如下的参数: tr = 2.3ns, ( = 0.31ns, T0 = 9.6as, f=100MHZ, a = 10MHZ, MTBF = 2.01 days 即触发器每两天便可能出现一次亚稳态。 如下图所示,一个信号在过渡到另一个时钟域时,如果仅仅用一个触发器将其锁存,那么用b_clk进行采样的结果将可能是亚稳态。这也是信号在跨时钟域时应该注意的问题。 2-2单锁存器法产生的问题 同步策略一 — 双锁存器法 为了避免上节所述的亚稳态问题,就应当使参数MTBF尽可能的大,通常采用的方法是双锁存器法,即在一个信号进入另一个时钟域之前,将该信号用两个锁存器连续锁存两次,最后得到的采样结果就可以消除亚稳态问题。 3-1双锁存器法解决亚稳态问题 当使用了双锁存器以后,b_dat2的MTBF由以下公式可以得出:[1] MTBF = e (tr/τ)/ T0fa × e (tr/τ)/ T0f 如果我们仍然使用上一节所提供的参数,则b_dat2的MTBF为9.57*109(years)。由上述结果可以看出,双锁存器法可以消除亚稳态问题。 同步策略二 — 结绳法 细心的读者也许会发现,在上面的例子中,如果a_clk的频率比b_clk频率高,将可能会出现因为dat变化太快而使b_clk无法采到的问题。即在信号从快时钟域向慢时钟域过渡的时候,如果信号变化太快,慢时钟将可能无法对该信号进行正确采样,如下图所示。所以在使用双锁存器法的时候,应该使原始信号保持足够长的时间,以便另一个时钟域的锁存器可以正确的对其进行采样。[3] 4-1采样失败的例子 针对上述问题,本节将介绍一种安全的跨时钟域的方法:“结绳法”。如下图所示,因为“结绳法”适合任何时钟域的过渡(clk1和clk2的频率和相位关系可以任意选定),所以没有表明两个时钟坐标。[2] 4-2 “结绳法”波形示意图 其中标明_clk1的信号表示该信号属于clk1时钟域,同理标明_clk2的信号表示该信号属于clk2时钟域。在两次src_req_clk1之间被src_vld_clk1“结绳”(pluse2toggle),在将src_vld_clk1用双锁存器同步以后,将该信号转换为dst_req_clk2(toggle2pluse)。同理,用dst_vld_clk2将dst_req_clk2“结绳”,dst_vld_clk2表明在clk2时钟域中,src_dat_clk1已经可以进行正确采样了。最后将dst_vld_clk2转换为dst_ack_clk1(synchronizer and toggle2pluse), dst_ack_clk1表明src_dat_clk1已经被clk2正确采样了, 此后clk1时钟域就可以安全地传输下一个数据了。可以看出,“结绳法”关键是将信号结绳以后,使其保持了足够长的时间,以便另一个时钟可以正确地采样。 图5-2描述了“结绳法”具体的实现方法,可以看出结绳法的实现主要包括三个基本单元:Pluse2Toggle, Synchronizer 和Toggle2Pluse。 4-3 “结绳法”实现图 其中,

文档评论(0)

wumanduo11 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档