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

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

3天内不再提示

跨时钟域信号该如何处理呢?

冬至子 来源:跟IC君一起学习集成电路 作者:IC君 2023-06-27 11:39 次阅读

1

时钟域是如何产生的呢?现在的芯片(比如SOC,片上系统)集成度和复杂度越来越高,通常一颗芯片上会有许多不同的信号工作在不同的时钟频率下。比如SOC芯片中的CPU通常会工作在一个频率上,总线信号(比如DRAM BUS)会工作在另一个时钟频率下,而普通的信号又会工作在另外的时钟频率下。这3个不同时钟频率下工作的信号往往需要相互沟通和传递信号。

图片

不同时钟域下的信号传递就涉及到跨时钟域信号处理,因为相互之间的频率、相位不一样,如果不做处理或者处理不当,如下图所示的时钟域CLK_A的数据信号A可能无法满足时钟域CLK_B的setup/hold时间,可能导致:

1.数据丢失,无法采到预期中的信号;

**2.**亚稳态的产生。

从而导致某个电路模块或者整颗IC无法工作。

图片

2

那么,常见的跨时钟域信号处理方法都有哪些呢?有如下的三种:

  1. 两级DFF同步器
  2. 握手协议
  3. 异步FIFO

最简单的单比特信号处理通常采用两级DFF串联进行同步,如下图所示:

图片

从时钟域A(CLKA)传过来的信号a_in, 直接用时钟域B CLKB采用很容易产生亚稳态,用两级DFF 敲过后再使用就可以把亚稳态概率降到一个合理的值。

很多人可能会问,为什么是两级DFF呢?一级或者三级DFF行不行呢?这里有一个平均失效间隔时间MTBF(Mean Time Between Failure)的考虑。MTBF时间越长,出现亚稳态的概率就越小,但是也不能完全避免亚稳态。注意采样时钟频率越高,MTBF可能会迅速减小。

有文献给出的数据:对于一个采样频率为200Mhz的系统,如果不做同步MTBF是2.5us,一级DFF同步的MTBF大概是23年,两级DFF同步的大约MTBF大概是640年,MTBF越长出错的概率越小。所以一级看上去不太稳,二级差不多够用了,至于三级可能会影响到系统的性能,而且增加面积,所以看上去没什么必要。

两级DFF同步器听起来够简单的吧?这个方法虽然很简单,但是很多人用起来还是常常会犯错。

3

错误1 :时钟域A的组合逻辑信号直接敲两级DFF同步到时钟域B

如下图(1)所示虽然时钟域A的逻辑信号c0 传输到时钟域B的时候,也用了两级DFF 同步器,但我们知道组合逻辑电路各个输入信号的不一致性以及组合逻辑内部路径的延时时间不一样,运算后的信号存在毛刺如图(2),而我们又无法预先知道CLKB 的上升沿何时会到来,CLKB 采样到的信号就无法预知,这显然不是我们想要的结果。

图片

因此,要想CLKB 能采到稳定的信号,时钟域A的信号必须是经过CLKA 敲过,在一个时钟周期内是稳定的信号,如图(3)所示:

图片

4

错误2 : Clock-gating enable 信号没有经过异步处理

在下图中a_in 信号经过CLKA的DFF敲过,再送到两级DFF 同步器处理,完全没毛病。但是F2的使能信号EN是从时钟域A来的,当EN信号变化的时候,由于时钟域不一样,无法保证使能之后的CLKB信号采样数据时满足setup/hold time 要求,这时F2输出信号也就变得无法预测了。

图片

两级同步器处理单比特信号虽然比较简单,但还是要注意它的使用方法,不要犯上面的错误哦。

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

    关注

    37

    文章

    1264

    浏览量

    102956
  • SoC系统
    +关注

    关注

    0

    文章

    50

    浏览量

    10575
  • 同步器
    +关注

    关注

    1

    文章

    78

    浏览量

    14489
  • FIFO存储
    +关注

    关注

    0

    文章

    102

    浏览量

    5894
  • DRAM控制器
    +关注

    关注

    0

    文章

    11

    浏览量

    7733
收藏 人收藏

    评论

    相关推荐

    FPGA设计中有多个时钟时如何处理

    FPGA设计中有多个时钟时如何处理时钟的基本设计方法是:(1)对于单个
    发表于 02-24 15:47

    请问时钟抖动如何处理

    一块音视频处理芯片输出1080i的数据Data及其同步时钟Clk,但是时钟clk的抖动很大,我何处理
    发表于 11-12 09:12

    时钟为什么要双寄存器同步

    出现了题目中的时钟的同步问题?怎么办?十年不变的老难题。为了获取稳定可靠的异步时钟送来的信号
    发表于 08-20 11:32

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

    时钟处理是 FPGA 设计中经常遇到的问题,而如何处理
    发表于 09-22 10:24

    探寻FPGA中三种时钟处理方法

    时钟处理是 FPGA 设计中经常遇到的问题,而如何处理
    发表于 10-20 09:27

    三种时钟处理的方法

      时钟处理是FPGA设计中经常遇到的问题,而如何处理
    发表于 01-08 16:55

    三种FPGA界最常用的时钟处理法式

    时钟处理是FPGA设计中经常遇到的问题,而如何处理
    发表于 02-21 07:00

    FPGA初学者的必修课:FPGA时钟处理3大方法

    时钟处理是FPGA设计中经常遇到的问题,而如何处理
    发表于 03-04 09:22

    关于cdc时钟处理的知识点,不看肯定后悔

    关于cdc时钟处理的知识点,不看肯定后悔
    发表于 06-21 07:44

    何处理好FPGA设计中时钟间的数据

    时钟处理是FPGA设计中经常遇到的问题,而如何处理
    发表于 07-29 06:19

    何处理时钟间的数据

    时钟处理是什么意思?如何处理时钟
    发表于 11-01 07:44

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

    异步bus交互(一)— 两级DFF同步器时钟处理 & 亚稳态处理1.问题产生现在的芯片(比如SOC,片上系统)集成度和复杂度越来越高,通
    发表于 02-17 06:34

    FPGA时钟处理简介

    (10)FPGA时钟处理1.1 目录1)目录2)FPGA简介3)Verilog HDL简介4)FPGA
    发表于 02-23 07:47

    看看Stream信号里是如何做时钟握手的

    一些,适用于追求高吞吐的场景。写在最后逻辑处理里很多总线都是基于Stream这种信号来实现的(如AXI4家族),通过上面的方法,可以很容易根据应用需求,做时钟
    发表于 07-07 17:25

    调试FPGA时钟信号的经验总结

    1、时钟信号的约束写法  问题一:没有对设计进行全面的约束导致综合结果异常,比如没有设置异步时钟分组,综合器对异步
    发表于 11-15 14:47