跨时钟域信号同步方法6种.pdfVIP

  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文档。上传文档
查看更多
跨时钟域信号同步方法 6 种 ASIC 中心 1 引言 基于 FPGA 的数字系统设计中大都推荐采用同步时序的设计,也 就是单时钟系统。但是实际的工程中,纯粹单时钟系统设计的情况 少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可 避免。如果对跨时钟域 来的亚稳态、采样丢失、潜在逻辑错误等等 一系列问题处理不当,将导致系统无法运行。本文总结出了几种同步 策略来解决跨时钟域 问题。 2 异步设计中的亚稳态 触发器是 FPGA 设计中最常用的基本器件。触发器工作过程中存 在数据的建立(setup)和保持(hold)时间。对于使用上升沿触发的触发 器来说,建立时间就是在时钟上升沿到来之前,触发器数据端数据保 持稳定的最小时间。而保持时间是时钟上升沿到来之后,触发器数据 端数据还应该继续保持稳定的最小 时间。我们把这段 时间成为 setup-hold 时间(如图 1 所示)。在这个时间参数内,输入信号在时钟的 上升沿是不允许发生变化的。如果输入信号在这段时间内发生了变化, 输出结果将是不可知的,即亚稳态 (Metastability) 图 1 一个信号在过渡到另一个时钟域时,如果仅仅用一个触发器将其 锁存,那么采样的结果将可能是亚稳态。这也就是信号在跨时钟域时 应该注意的问题。如图2 所示。 信号 dat 经过一个锁存器的输出数据为 a_dat。用时钟b_clk 进行采 样的时候,如果 a_dat 正好在 b_clk 的 setup-hold 时间内发生变化,此 时b_ dat 就既不是逻辑1,也不是逻辑0,而是处于中间状态。经过 一段时间之后,有可能回升到高电平,也有可能降低到低电平。输出 信号处于中间状态到恢复为逻辑1或逻辑0的这段时间,我们称之 为亚稳态时间。 触发器进入亚稳态的时间可以用参数 MTBF(Mean Time Between Failures)来描述,MTBF 即触发器采样失败的时间间隔,表示为: 其中 fclock 表示系统时钟频率,fdata 代表异步输入信号的频率,tmet 代表不会引起故障的最长亚稳态时间,C1 和 C2 分别为与器件特性相 关的常数。如果 MTBF 很大,就认为这个设计在实际工作中是能够正 常运行的,不会因为亚稳态导致整个系统的失效。当触发器处于亚稳 态,且处于亚稳态的时间超过了一个时钟周期,这种不确定的状态还 会影响到下一级的触发器,最终导致连锁反应,从而使整个系统功能 失常。 3 同步策略 在异步设计中,完全避免亚稳态是不可能的。因此,设计的基本思 路应该是:首先尽可能减少出现亚稳态的可能性,其次是尽可能减少 出现亚稳态并给系统 来危害的可能性。以下是根据实际工作总结出 来的几种同步策略。 3.1 电平同步器 为了避免进入亚稳态,应当使参数MTBF 尽可能大。通常采用的方 法是双锁存器法,即在一个信号进入另一个时钟域之前,将该信号用 两个锁存器连续锁存两次(如图 3 所示)。理论研究表明这种设计可以 将出现亚稳态的几率降低到一个很小的程度,但这种方法同时 来了 对输入信号的一级延时,需要在设计时钟的时候加以注意。 对于上面的双锁存器法,如果 a_clk 的频率比 b_clk 的频率高,将可 能出现因为 dat 变化太快,而使 b_clk 无法采样的问题。即在信号从快 时钟域向慢时钟域过渡的时候,如果信号变化太快,慢时钟将可能无 法对该信号进行正确的采样,所以在使用双锁存器法的时候,应该使 原始信号保持足够长的时间,以便另一个时钟域的锁存器可以正确地 对其进行采样。 3.2 边沿同步器 如果我们需要用跳变沿而不是 电平又该怎样处理呢,在 电平同步 器之后再加一级触发器,用第二级触发器的输出和第三级触发器的输 出来进行操作。这种结构叫做边沿同步器。 always @ (posedge Clk) begin inputs_reg1 = inputs; inputs_reg2 = inputs_reg1; inputs_reg3 = inputs_reg2; if (inputs_reg2 == 1b1 inputs_reg3 == 1b0) begin

文档评论(0)

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

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

1亿VIP精品文档

相关文档