0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

跨时钟域处理的亚稳态与同步器

FPGA之家 来源:FPGA开发之路 作者:FPGA开发之路 2022-12-12 14:27 次阅读

数字电路设计中遇到跨时钟域(Clock Domain Crossing, CDC)的电路时一般都需要特别的处理,例如同步器,异步FIFO等。那么为什么CDC需要特别的处理,如果不做处理又会导致什么问题。

亚稳态

我们都知道数字电路中有两个最重要的概念,建立时间和保持时间。通过满足建立时间和保持时间,我们可以确保信号被正确的采样,即1采到便是1,0采到便是0。但是如果不满足建立时间和保持时间,采到的信号会进入一个不稳定的状态,无法确定是1还是0,我们称之为亚稳态。这个亚稳态的信号会在一段时间内处于震荡状态,直到稳定,而稳定后的状态值与被采样值无关,可能是0也可能是1。

a70ce8ae-7947-11ed-8abf-dac502259ad0.jpg

图1【1】所示的是异步时钟采样失败的情况。当数据(adat)的变化离采样时钟(bclk)的变化沿很近时,由于不满足建立时间,导致采样到的信号(bdat1)进入亚稳态。

异步时钟由于时钟相位不同,图1的情况往往难以避免,这也是跨时钟域时容易发生亚稳态的原因。

亚稳态会导致什么问题

由于亚稳态的信号会在一段时间内处于震荡状态,后续不同的逻辑可能会将该信号识别为不同的状态值,甚至是后续逻辑也出现亚稳态的情况,导致逻辑的错误和混乱,比如状态机出现错误的跳转从而锁死在某个状态。

同步器

最常用的同步器是两级触发器,如图2【1】:

a7247f8c-7947-11ed-8abf-dac502259ad0.jpg

第一级触发器采样后出现亚稳态,第二级触发器在经过一个时钟周期的等待之后采样到一个稳定状态的信号,达到消除不定态的目的。不过要注意,这样的同步器只是减小了亚稳态发生的概率,并不能完全消除亚稳态的发生。而亚稳态发生的概率的大小一般可以用MTBF(Mean Time Between Faliure)来表示。MTBF的值越小表示亚稳态发生的频率越高。

a739ef66-7947-11ed-8abf-dac502259ad0.png

图3【2】表示了MTBF的影响因子,可以看到,当时钟频率越高,数据发生变化的频率越高,MTBF越小,即亚稳态发生的频率也越高。

对于一些高频电路设计,两级触发器所构成的同步器MTBF仍然很小,这时候可以考虑再添加一级触发器,即使用三级触发器。另外,我们也希望当数据被异步时钟采样时数据的变化频率也尽可能小,因此一般数据在跨时钟域之前最好可以用寄存器打一拍,减少数据的变化,从而减小亚稳态发生的概率。

值得注意的是,同步器的使用只是消除了不定态,但是同步器的输出仍然可能是错误的,可能被采样的信号是1,但是同步器输出的确是0。这样的错误是否是电路可以接受的要依据不同的设计来看,这便涉及到另外一个话题,如何使系统对产生的错误不敏感,本文暂不讨论。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • fifo
    +关注

    关注

    3

    文章

    387

    浏览量

    43654
  • 触发器
    +关注

    关注

    14

    文章

    2000

    浏览量

    61134
  • 同步器
    +关注

    关注

    1

    文章

    98

    浏览量

    14630

原文标题:跨时钟域处理-亚稳态与同步器

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA中亚稳态——让你无处可逃

    产生,我们就要对亚稳态进行消除,常用对亚稳态消除有三种方式:(1) 对异步信号进行同步处理;(2) 采用FIFO对
    发表于 04-25 15:29

    Virtex-5亚稳态保护是什么

    大家好,我正在研究包括3个不同时钟的设计。我已经阅读了这个帖子,我发现与virtex-II和virtex-4相比,virtex-5在MTBF中是最差的。对于较低和实用的MTBF,我没有在同步器
    发表于 06-12 09:27

    如何处理好FPGA设计中时钟问题?

    第二级寄存的延拍,所以意义是不大的。02方法二:异步双口 RAM处理多 bit 数据的时钟,一般采用异步双口 RAM。假设我们现在有一
    发表于 09-22 10:24

    两级DFF同步器时钟处理简析

    异步bus交互(一)— 两级DFF同步器时钟处理 & 亚稳态
    发表于 02-17 06:34

    IC设计中多时钟处理的常用方法相关资料推荐

    组来定义策略。在多个时钟之间传递控制信号时,尝试使用同步器的策略。尝试使用FIFO和缓存的数据路径同步器来提高数据完整性。现在讨论重要的
    发表于 06-24 16:54

    关于FPGA设计的同步信号和亚稳态的分析

    数据损坏。还需要注意recombination,这是两个或多个静态信号跨越时钟并在逻辑功能中重组的地方。由于亚稳态恢复,同步器中的延迟会导致下游逻辑受到影响。尽管我们在设计中尽最大努
    发表于 10-18 14:29

    同步亚稳态相关问题探讨

    在本文的第一章对时钟下的同步问题和亚稳态问题做了概述。 在第二章中对时钟
    发表于 09-06 15:24 42次下载
    <b class='flag-5'>同步</b>与<b class='flag-5'>亚稳态</b>相关问题探讨

    如何利用FPGA设计一个时钟同步策略?

    带来的亚稳态、采样丢失、潜在逻辑错误等等一系列问题处理不当,将导致系统无法运行。本文总结出了几种同步策略来解决时钟
    的头像 发表于 09-01 08:29 5551次阅读
    如何利用FPGA设计一个<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>的<b class='flag-5'>同步</b>策略?

    如何解决异步FIFO时钟亚稳态问题?

    时钟的问题:前一篇已经提到要通过比较读写指针来判断产生读空和写满信号,但是读指针是属于读时钟的,写指针是属于写
    的头像 发表于 09-05 14:29 6056次阅读

    CDC单bit脉冲时钟处理介绍

    单bit 脉冲时钟处理 简要概述: 在上一篇讲了总线全握手时钟
    的头像 发表于 03-22 09:54 3510次阅读

    总线半握手时钟处理

    总线半握手时钟处理 简要概述: 在上一篇讲了单bit脉冲同步器
    的头像 发表于 04-04 12:32 2854次阅读
    总线半握手<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b><b class='flag-5'>处理</b>

    时序问题常见的时钟亚稳态问题

    今天写一下时序问题常见的时钟亚稳态问题。 先说明一下亚稳态问题: D触发有个明显的特征就
    的头像 发表于 06-18 15:28 3038次阅读

    数字电路设计中时钟处理亚稳态

    数字电路设计中遇到时钟(Clock Domain Crossing, CDC)的电路时一般都需要特别的处理,例如同步器,异步FIFO等。
    的头像 发表于 08-25 11:46 2447次阅读

    FPGA同步转换FPGA对输入信号的处理

    的verilog异步fifo设计,仿真(代码供参考)异步fifo适合处理不同时钟之间传输的数据组,但有时不同时钟之间仅仅传递脉冲,异步f
    的头像 发表于 02-17 11:10 906次阅读

    如何处理时钟这些基础问题

    对于数字设计人员来讲,只要信号从一个时钟跨越到另一个时钟,那么就可能发生亚稳态。我们称为“
    发表于 01-08 09:39 635次阅读
    如何<b class='flag-5'>处理</b><b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>这些基础问题