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

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

3天内不再提示

同步时钟和异步时钟详解

CHANBAEK 来源:数字IC与好好生活的两居室 作者:除夕之夜啊 2023-03-28 13:46 次阅读

当触发器输入端的数据和触发器的时钟不相关时,很容易导致电路时序约束不满足。 本章主要解决模块间可导致时序 violation 的异步问题。

关于异步与同步的定义,许多地方都有介绍,细节上也有所差异。 本章主要的关注点是解决异步问题的方法,而不关心为什么会出现异步时钟,也不关心异步电路的具体结构,仅从异步时钟的时序结果去分析解决问题。

同步时钟

数字设计中,一般认为,频率相同或频率比为整数倍、且相位相同或相位差固定的两个时钟为同步时钟。

或者理解为,时钟同源且频率比为整数倍的两个时钟为同步时钟。 其实,时钟同源,就保证了时钟相位差的固定性。 具体可以分类如下:

同源同频同相位

此类时钟频率和相位均相同,是同步的。 时钟间数据传输只要满足正常的建立时间和保持时间即可,不需要特殊的同步设计。

同源同频不同相位

两个时钟同频但不同相位时,只要相位差保持固定,也可以认为是同步的。 因为只要保证在两个时钟间传输的数据信号延迟,固定的控制在合理范围内,就不会导致时序问题。 而且,固定的时钟延迟也可以在版图级网表中修复。

固定的相位差可以理解为同源时钟下两个时钟因路径不同而导致的偏移。

图片

同源不同频但存在整数倍分频比

此类时一个时钟往往是另一个时钟的分频,即便存在相位差也是固定的。

当单 bit 信号从慢时钟域传递到快时钟域时,因为同源,只要满足建立时间和保持时间,快时钟域总会采集到从慢时钟域传递来的信号。

如下图所示,clk2 上升沿总能采集从 clk1 域来的信号 sig1,且采集到的信号 sig2 高电平持续周期也是两个时钟的频率比,即 2 个周期。

图片

如果 clk2 域的信号 sig2 只需要一个持续一个时钟周期,则需要对 sig1 进行上升沿检测

同步信号间的上升沿检测程序 Verilog 描述如下。

reg [1:0]    sig2_r ;
   always @(posedge clk2 or negedge rstn) begin
     if (!rstn) sig2_r  <= 2'b0 ;
     else       sig2_r  <= {sig2_r[0], sig1} ;
   end
   assign sig2 = sig2_r[0] && !sig2_r[1];

此时,快时钟域的信号 sig2 只会持续一个时钟周期,如下图所示。

图片

当单 bit 信号从快时钟域传递到慢时钟域时,只要慢时钟域能安全采集到从快时钟域传递来的信号,就不存在异步问题。 因为两个时钟是同源的。 如下图 sig1 到 sig2 的传输。

但是如果快时钟域信号过窄,慢时钟域有可能漏掉,如下图 sig11 到 sig22 的传输。 此时就需要对快时钟域的窄脉冲信号进行展宽。

图片

当两个时钟频率比相对较小时,可以在快时钟域采用对信号延迟的方法进行展宽;

当两个时钟频率比相差较大时,对信号延迟的方法会有些繁琐,可在快时钟域采用计数的方法来延长单 bit 信号有效的时间。

利用延迟来展宽窄脉冲信号的方法 Verilog 描述如下。 因为 clk1 与 clk2 的频率比为 2,只需要延迟 2 拍 clk2 时钟即可。

reg [1:0]    sig11_r ;
   always @(posedge clk1 or negedge rstn) begin
     if (!rstn) sig11_r  <= 2'b0 ;
     else       sig11_r  <= {sig11_r[0], sig11} ;
   end


   reg          sig22_r ;
   always @(posedge clk2 or negedge rstn) begin
      if (!rstn)        sig22_r  <= 1'b0 ;
      else              sig22_r  <= |sig11_r ;
   end
   assign sig22 = sig22_r ;

此时,快时钟域的信号被延迟 2 拍,总会被慢时钟域采集到,如下图所示。

图片

总之,同源且频率比为整数倍关系时,可以理解为这两个时钟是同步的,不需要特殊的同步处理。 下面,简单介绍下异步时钟的情况。

异步时钟

工作在异步时钟下的两个模块进行数据交互时,由于时钟相位关系不可控制,很容易导致建立时间和保持时间 violation。 以下 3 种情况下的时钟可以认为是异步的。

不同源

由两个不同的时钟源产生的两个时钟是异步的,这是最常见的异步时钟。 即便两个时钟频率相同,但是也不能保证每次上电后两者的相位或相位差是相同的,所以信号间的传输与时钟关系也是不确定的。

同源但频率比不是整数倍

此时两个时钟间相位差也可能会有多个,例如同源的 7MHz 时钟和 3MHz 时钟,他们之间也会出现多个相位差,时序也不好控制。 一般情况下也需要当异步时钟处理。

同源虽频率比为整数倍但不满足时序要求

前面介绍同步问题时有说明,当信号从快时钟域传递到慢时钟域时,只要慢时钟域能安全采集到从快时钟域传来的信号,就不存在异步问题。 但如果信号在快时钟域翻转速率过快,慢时钟域可能不会安全的采集到从快时钟域传来的信号,这也可以认为是异步问题。

一般来说,慢时钟域时序约束较为宽松,快时钟域较为严格。

如下图,当快时钟域信号在慢时钟域上升沿前翻转了 2 次。 此时,慢时钟域会漏掉部分数据。 而且,数据的快速变化也可能导致 timing violation。

图片

这里只简单介绍下异步时钟的分类情况,异步问题的解决方法请参考后面的章节。

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

    关注

    11

    文章

    2639

    浏览量

    75388
  • 触发器
    +关注

    关注

    14

    文章

    1677

    浏览量

    60402
  • 异步电路
    +关注

    关注

    2

    文章

    43

    浏览量

    11046
  • 异步时钟
    +关注

    关注

    0

    文章

    17

    浏览量

    9366
  • 同步时钟
    +关注

    关注

    0

    文章

    30

    浏览量

    3137
收藏 人收藏

    评论

    相关推荐

    IC设计:ram的应用-异步时钟域位宽转换

    在进行模块设计时,我们经常需要进行数据位宽的转换,常见的两种转换场景有同步时钟域位宽转换和异步时钟域位宽转换。本文将介绍异步
    的头像 发表于 11-23 16:41 372次阅读
    IC设计:ram的应用-<b class='flag-5'>异步</b><b class='flag-5'>时钟</b>域位宽转换

    FPGA异步时钟设计中的同步策略

    摘要:FPGA异步时钟设计中如何避免亚稳态的产生是一个必须考虑的问题。本文介绍了FPGA异步时钟设计中容易产生的亚稳态现象及其可能造成的危害,同时根据实践经验给出了解决这些问题的几种
    发表于 04-21 16:52

    异步时钟同步疑惑

    在SDRAM的代码中,有的模块工作频率50MHz,有的100MHz,不同时钟域间的数据同步太难理解了,请各位前辈指点。代码如下所示。//同步SDRAM初始化完成信号always @(posedge
    发表于 09-12 20:39

    异步时钟域的亚稳态问题和同步

    相较纯粹的单一时钟同步电路设计,设计人员更多遇到的是多时钟域的异步电路设计。因此,异步电路设计在数字电路设计中的重要性不言而喻。本文主要就
    发表于 07-31 16:51 0次下载

    FPGA异步时钟设计中的同步策略

    FPGA 异步时钟设计中如何避免亚稳态的产生是一个必须考虑的问题。本文介绍了FPGA 异步时钟设计中容易产生的亚稳态现象及其可能造成的危害,同时根据实践经验给出了解决这些问题的
    发表于 12-20 17:08 63次下载
    FPGA<b class='flag-5'>异步</b><b class='flag-5'>时钟</b>设计中的<b class='flag-5'>同步</b>策略

    同步异步时钟之间是如何联系_如何正确的约束时钟

    现在的硬件设计中,大量的时钟之间彼此相互连接是很典型的现象。为了保证Vivado优化到关键路径,我们必须要理解时钟之间是如何相互作用,也就是同步异步
    的头像 发表于 05-12 10:15 2w次阅读

    简谈异步电路中的时钟同步处理方法

    大家好,又到了每日学习的时候了。今天我们来聊一聊异步电路中的时钟同步处理方法。 既然说到了时钟同步处理,那么什么是
    的头像 发表于 05-21 14:56 1.3w次阅读
    简谈<b class='flag-5'>异步</b>电路中的<b class='flag-5'>时钟</b><b class='flag-5'>同步</b>处理方法

    时钟域的同步时序设计和几种处理异步时钟域接口的方法

    在数字电路设计中,大部分设计都是同步时序设计,所有的触发器都是在同一个时钟节拍下进行翻转。这样就简化了整个设计,后端综合、布局布线的时序约束也不用非常严格。但是在设计与外部设备的接口部分时,大部分
    的头像 发表于 07-24 09:52 3960次阅读
    多<b class='flag-5'>时钟</b>域的<b class='flag-5'>同步</b>时序设计和几种处理<b class='flag-5'>异步</b><b class='flag-5'>时钟</b>域接口的方法

    如何将一种异步时钟域转换成同步时钟

     本发明提供了一种将异步时钟域转换成同步时钟域的方法,直接使用同步时钟
    发表于 12-21 17:10 5次下载
    如何将一种<b class='flag-5'>异步</b><b class='flag-5'>时钟</b>域转换成<b class='flag-5'>同步</b><b class='flag-5'>时钟</b>域

    Verilog电路设计之单bit跨时钟同步异步FIFO

    FIFO用于为匹配读写速度而设置的数据缓冲buffer,当读写时钟异步时,就是异步FIFO。多bit的数据信号,并不是直接从写时钟同步到读
    发表于 01-01 16:48 999次阅读

    详解数字设计中的时钟与约束

    : ·同步电路与异步电路; ·时钟/时钟树的属性:偏移(skew)与时钟的抖动(jitter)、延时(latency)、转换(transit
    的头像 发表于 01-28 07:53 2237次阅读
    <b class='flag-5'>详解</b>数字设计中的<b class='flag-5'>时钟</b>与约束

    异步时钟同步处理

    异步系统中,由于数据和时钟的关系不是固定的,因此会出现违反建立和保持时间的现象。
    的头像 发表于 06-05 14:34 1989次阅读
    <b class='flag-5'>异步</b><b class='flag-5'>时钟</b>的<b class='flag-5'>同步</b>处理

    时钟同步的总线电路方案

    、保持(hold)时间的时序关系,电路的输出(布尔值)就是可预测的,这是数字逻辑电路设计的基础。如果 不能满足建立保持时间 ,我们认为输入是 异步 (asynchronous) 信号 。一个时钟域的同步信号输出到另一个
    的头像 发表于 06-23 17:53 1036次阅读
    <b class='flag-5'>时钟</b><b class='flag-5'>同步</b>的总线电路方案

    为什么异步fifo中读地址同步在写时钟域时序分析不通过?

    为什么异步fifo中读地址同步在写时钟域时序分析不通过? 异步FIFO中读地址同步在写时钟域时序
    的头像 发表于 10-18 15:23 356次阅读

    异步电路中的时钟同步处理方法

    异步电路中的时钟同步处理方法  时钟同步异步电路中是至关重要的,它确保了电路中的各个部件在正确
    的头像 发表于 01-16 14:42 327次阅读