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

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

3天内不再提示

单bit信号跨时钟域如何传输?

冬至子 来源:小何的芯像石头 作者:五线谱是偶然来的 2023-06-27 09:54 次阅读

同步电路

即电路中的所有受时钟控制的单元,全部由一个统一的全局时钟控制:

  • 触发器(Flip Flop)
  • 寄存器(Register)

图片

同步电路优点:

  • 在同步设计中,EDA工具可以保证电路系统的时序收敛,有效避免了电路设计中竞争冒险现象。
  • 由于触发器只有在时钟边缘才改变取值,很大限度地减少了整个电路受毛刺和噪声影响的可能。

缺点:

电路里面所有的触发器都由同一个时钟驱动,所以必须构建时钟树、时钟网络,因此时钟到达哥哥触发器的时间不一样,则会引入时钟偏斜和时钟抖动问题:

  • 时钟偏斜( Clock Skew )
  • 时钟抖动(Clock Jitter )
  • 时钟树综合,需要加入大量的延迟单元,使得电路的面积和功耗大大增加

图片

全局异步电路

全局异步设计跟同步设计最大的不同就是它的电路中的数据传输可以在任何时候发生,电路中没有一个全局的或局部的控制时钟。

图片

异步电路优点:

  • 模块化特性突出
  • 信号的延迟不敏感
  • 没有时钟偏斜问题
  • 有潜在的高性能特性
  • 好的电磁兼容
  • 具有低功耗的特性

异步电路缺点:

  • 设计复杂
  • 缺少相应的EDA工具的支持
  • 在大规模集成电路设计中应避免采用异步电路设计

同步异步时钟,指时钟源是不是同一个,假设是同一个PLL出来的,就能看成是同步时钟,不同PLL下即使是同频也是异步时钟

在一个性想的全局时钟控制下,只要电路的各个功能坏节都买现了时序收敛,整个电路就可以可靠工作了。由于 EDA 工具的广泛支持,采用同步电路设计的方法是目前ASIC 和 SoC 设计的基本要求。但是常大规模 ASIC 和 SoC 芯片中都采用了全局异步、局部同步的方法。因此,在设计中必须要注意 异步信号与同步电路的交互问题

在不同时钟域间,如何安全传递信号

跨时钟域电路主要分为以下几种:

图片

亚稳态相关概念和原理

图片

  • 亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。
  • 亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。
  • 在这个期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。
  • 亚稳态不能从根本上消除,但可以通过采取一定的措施使其对电路造成的影响降低。

亚稳态影响衡量指标MTBF(Mean Time Between Failure),MTBF越大,亚稳态影响越小:

1.jpg

双锁存器电平同步器

虽然说的是锁存器,但实际上是两个触发器:

  • 一个信号在过渡到另一个时钟域时,如果仅仅用一个触发器将其锁存,那么用b_clk进行采样的结果将可能是亚稳态。这也是信号在跨时钟域时应该注意的问题。

图片

为了避免上节所述的亚稳态问题,就应当使参数 MTBF 尽可能的大,通常采用的方法是双锁存器法,即在一个信号进入另一个时钟域之前,将该信号用两个锁存器连续锁存两次,最后得到的采样结果就可以消除亚稳态问题。

图片

双锁存器法,优点:

  • 结构简单、易实现,面积消耗很小。

缺点:

  • 增加了两级触发器延时;
  • 高性能计算中,两个时钟周期消耗对系统性能有消极的影响。
  • 当快时钟域转到慢时钟域时,易造成慢时钟采样丢失(还未来得及采样,数据就变化了)。

使用条件:

  • 常用于慢时钟域转到快时钟域
  • {(Clk_slow的周期)} > {(Clk_fast的周期) + (路径延时)} ,确保信号可以被Clk_fast采样到(假设Clk_fast和Clk_slow起始时刻相同求得)
  • {(data数据变化间隔)}>{(Clk_slow的周期)+2*(CIk_fast的周期) +(路径延时)},确保所有的数据变化均能采集到。

结论:

  • 对于典型的0.25gm 工艺 ASIC 库中的一个触发器,则 MTBF=2.01(day ) ,即触发器每两天便可能出现一次亚稳态。如果将采样时间和异步事件触发频率都提高,亚稳态出现还要频繁。
  • 对于同样的参数,双锁存器法可将MTBF提升为9.57* 年,这个数值足够保证电子系统稳定地运行。
  • 两级触发器已经将MTBF变得足够大
  • 三级或者更多级虽然能将亚稳态出现概率 降得更低 ,但是影响电路效率

增加寄存器进行同步的方法,只是不断降低亚稳态出现概率

单bit信号跨时钟域如何传输

慢时钟到快时钟的信号传输

采用边沿检测同步器电路。这种方法通常应用在慢速向快速时钟传递过程中,可以检测输入信号的上升沿,也可以检测它的下降沿。输出的的与门间相差一个快时钟的延迟:

图片

其时序图为:

图片

适用条件:

  • 输入数据的宽度必须比—个接受时钟周期加上一个同步触发器的hold时间要长,最安全的就是两个同步周期宽度。
  • 保证: 慢时钟域的脉冲足够保持到被快时钟的同步器拿到

快时钟到慢时钟的信号传输

对于快时钟域到慢时钟域,通常采用脉冲同步器进行同步。这个电路结构中,最左边是快时钟域下的一个翻转电路。中间是慢时钟域的两级同步器,最后是慢时钟域一级触发器+一个逻辑门。

图片

基本功能是从快时钟域取出一个单时钟宽度脉冲,然后在慢时钟域中建立另一个单时钟宽度的脉冲。对电路结构的功能分析:

图片

限制如下:

  • 输入脉冲之间的最小间隔必须等于两个同步器时钟周期。
  • 如果输入脉冲相互过近,则新时钟域中的输出脉冲也紧密相邻,结果是输出脉冲宽度比一个时钟周期宽。
  • 当输入脉冲时钟周期大于两个同步器时钟周期时,这个问题更加严重。
  • 这种情况下,如果输入脉冲相邻太近,则同步器就不能检测到每个脉冲。

对单bit同步器总结:

图片

三种同步器总结

  • 电平同步器,输入信号必须保持两个接受时钟周期宽度,每一次同步之后,输入信号必须恢复到无效状态。
  • 边沿检测同步器,适用于低频时钟域向高频时钟域传输,输入信号必须保持两个接受时钟周期宽度。
  • 脉冲检测同步器,适用于高频时钟域向低频时钟域传输,输入的脉冲时间的距离必须保持两个接收时钟周 期以上。

采用结绳法 进行单bit信号传输

  • 信号从快时钟域到慢时钟域过渡时 ,慢时钟将可能无法对变化太快的信号实现正确采样;
  • 上述同步器法对两个时钟之间的关系要求很严格,而“结绳法”适合任何时钟域的过渡。

“结绳法1”

原理:

  • 将快时钟信号的脉冲周期延长,等到慢时钟同步采样后再“解绳”,还原为原来的脉冲周期宽度。
  • 利用数据的边沿作时钟(图中上升沿)。(可以将脉冲无限延长,直到可以采集到数据,然后复位,要考虑产生数据的频率)。

图片

  • 这种结绳法的原理是,数据作为Din_clkA ,即当数据有上升沿(0->1)时,寄存器1的输出将会稳定在高电平,此时等待CIkB采样;当CIkB完成采样后,寄存器4会输出高电平,若此时Din_clkA为低电平,那么即可完成复位,开始下一次采样等待。
  • 这里需要注意的是当数据来临(上升沿)时,ClkB域需要等待3个ClkB才会在寄存器4输出并完成输入端的复位,所以Din_CIkA如果变化较快,即持续时间短于3个CIkB,也就是Din_ClkA频率大于CIkB的1/3,那么这时Din_ClkA的变化将无法被采样到,因为CIkB域需要3个CIkB才能完成采样,并且此时Din_CIkA必须是低电平才能复位,采用异步复位。
  • 在慢时钟采样快时钟的时候,结绳法适合采样数据较少(即脉冲间隔较大的控制信号。即脉冲间隔Ta>3Tb;即等待3个clkB时钟后,完成复位,才允许下一个输入脉冲。

结绳法2:

  • 利用数据作为异步复位,置位信号:

图片

结绳法3:

  • 利用握手协议:

图片

电路功能为:

图片

结绳法总结

  • 结绳就是将单脉冲延长,以方便采集到数据。

结绳的方法归结为2类:

  • 利用脉冲的边沿做时钟;
  • 利用脉冲的电平(部分场合要求最小脉冲宽度)做选择器或者异步复位,置位。
  • 另外的关键点就是什么时候结绳结束(采集到了数据就要让对方回到初始状态)

这里的操作也有2种方法:

  • 利用采集到的脉冲做异步复位,置位。
  • 利用采集到的脉冲再次结绳采集做握手响应信号。

总结:

  • 结绳法可以解决快时钟域向慢时钟域过渡的问题,且其适用的范围很广。
  • 结绳法实现较为复杂,特别是其效率不高,在对设计性能要求较高的场合应该慎用。

传输两个同时需要的信号(b_load 和b_en)

多个控制信号跨时钟域仅仅通过简单的同步器同步有可能是不安全的

当两个信号中出现一点skew时,跨时钟域不一定能够正确在同一个时刻被采样到:

图片

b_load和b_en同步至a_clk时钟域,如果这两个信号有一个小的ske导致在a_clk时钟域中两个信号并不是在同一时刻起作用,与在b_clk中的逻辑关系不同。

解决方法(合并信号)

将b_load和b_en信号在b_clk时钟域中合并成一个信号b_lden,然后同步至a_clk中。

图片

对不能合并的情况

如果遇到不能合并的情况,如译码信号。如果Bdec[0]、bdec[1]间存在skew将导致同步至a_clk中后译码错误,出现误码。

图片

在这种情况下,建议加入另一个控制信号,确保bdec[0]、bec[1]稳定时采。例如在bdec[0]、bec[1]稳定输出后一到两个周期b_clk域输出一个en信号,通知a_clk域此时可以采bdec[O]、bec[1]信号。这样可确保正确采样。

小结

采样中“快到慢”与“慢到快”在考虑问题时有什么区别?

慢到快:

  • 只需要考虑亚稳态问题

快到慢:

  • 亚稳态问题
  • 考虑慢时钟的采样速率问题。因为根据采样定理,采样频率低于信号最高频率2倍的时候,是无法完整采样的。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电磁兼容
    +关注

    关注

    53

    文章

    1743

    浏览量

    97208
  • 寄存器
    +关注

    关注

    30

    文章

    5042

    浏览量

    117765
  • EDA工具
    +关注

    关注

    4

    文章

    253

    浏览量

    31287
  • 触发器
    +关注

    关注

    14

    文章

    1694

    浏览量

    60424
  • 同步电路
    +关注

    关注

    1

    文章

    56

    浏览量

    13138
收藏 人收藏

    评论

    相关推荐

    3.2.1]--1.bit信号时钟传输电路;2.FIFO导言

    硬件加速
    学习电子知识
    发布于 :2022年11月26日 21:08:35

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

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

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

    时钟处理的方法,这三种方法可以说是 FPGA 界最常用也最实用的方法,这三种方法包含了 bit 和多 bit 数据的
    发表于 09-22 10:24

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

    时钟处理的方法,这三种方法可以说是 FPGA 界最常用也最实用的方法,这三种方法包含了 bit 和多 bit 数据的
    发表于 10-20 09:27

    三种时钟处理的方法

    时钟处理的方法,这三种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了bit和多bit数据的
    发表于 01-08 16:55

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

    处理的方法,这三种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了bit和多bit数据的时钟
    发表于 02-21 07:00

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

    处理的方法,这三种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了bit和多bit数据的时钟
    发表于 03-04 09:22

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

    介绍3种时钟处理的方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了bit和多
    发表于 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信号里是如何做时钟握手的

    逻辑出身的农民工兄弟在面试时总难以避免“时钟”的拷问,在诸多时钟的方法里,握手是一种常见
    发表于 07-07 17:25

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

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

    bit信号的跨时钟传输可以使用两级同步但后果呢?

    看的东西多了,发现有些并未领会到位。单bit信号的跨时钟传输,可以使用两级同步,但后果呢?
    的头像 发表于 05-10 10:08 527次阅读
    单<b class='flag-5'>bit</b><b class='flag-5'>信号</b>的跨<b class='flag-5'>时钟</b>域<b class='flag-5'>传输</b>可以使用两级同步但后果呢?

    简述两级同步的副作用

    看的东西多了,发现有些并未领会到位。单bit信号的跨时钟传输,可以使用两级同步,但后果呢? 重复一下亚稳态,违反触发器的时序特性,可能导致触发器的输出进入亚稳态,亚稳态不在0和
    的头像 发表于 05-11 16:24 416次阅读
    简述两级同步的副作用