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

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

3天内不再提示

所有的单比特信号跨时钟域都可以用敲两级DFF的办法处理吗?

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

用敲两级DFF的办法(两级DFF同步器)可以实现单比特信号时钟域处理。但你或许会有疑问,是所有的单比特信号跨时钟域都可以这么处理吗?

NO!两级DFF同步器,是对信号有一定的要求的。

想象一下,如果频率较高的时钟域A中的信号D1 要传到频率较低的时钟域B,但是D1只有一个时钟脉冲宽度(1T),clkb 就有几率采不到D1了,如图1。

图片

图1 快时钟域信号传递到慢时钟域

因此只有当D1 在很长一段时间内为1或0,确保一定可以被clkb采样到,才能用两级DFF同步器处理。

如果信号D1 只有1T或几个T的脉宽,又需要传到时钟频率较低甚至或快或慢不确定的时钟域B,这种情况该怎么如何处理呢?

1

握手协议(handshake)异步信号处理是一种常见的异步信号处理方法。常见的握手协议异步信号处理行为波形图大致如下图2:

图片图2 一种handshake电路波形

信号d_in 所处时钟域是clk_in,且d_in只有1T 的宽度,想要传送到clk_out 时钟域(clk_out 跟clk_in不相关)。

因为clk_out 和 clk_in相位关系不确定,时钟周期大小关系不确定,无法保证一定能采样到d_in。

因此需要把d_in展宽,产生d_req 信号;

d_req 信号一直拉高,经过clk_out时钟域两级DFF 同步器后,得到d_reg_sync;

取d_req_sync 上升沿1T,即可得到传送到clk_out 时钟域的d_out。

此时,d_in 从clk_in 传送到clk_out 的任务就算是结束了。

但对于handshake 电路来说,任务还没结束,因为d_req 还一直是高电平。

因此,需要把d_req_sync 信号再用两级DFF同步器,传回clk_in 时钟域,得到d_ack信号;

当clk_in 看到d_ack拉高后,就可以把d_req 信号拉低,到这里一个handshake电路行为才算是结束了。

2

根据上面的波形图,可以看到握手协议异步信号处理并不复杂,但是细心的朋友应该会注意到,这个处理方法信号传递的速度相对较慢。

从图2 的波形来看,至少需要3个clk_in 和2个clk_out时钟周期。根据不同的应用需求,人们会对图2的波形做不同的改造。但万变不离其宗,原理都是一样的,电路也大同小异。

最后留4个问题供大家思考,以增进对handshake电路的理解:

  1. 图2中的d_req的逻辑怎么实现?
  2. 图2中的d_out的逻辑怎么实现?
  3. 假设时钟域clka比clkb 频率高,如果输入信号的两个相邻脉冲D0和D1非常较近,如下图所示,如果使用握手协议处理,会发生怎样的事情?

图片

4.问题3里面,如果要确保D1数据一定要被能传送到clkb,电路该如何实现?

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

    关注

    1

    文章

    254

    浏览量

    25271
  • 同步器
    +关注

    关注

    1

    文章

    98

    浏览量

    14629
  • CLK
    CLK
    +关注

    关注

    0

    文章

    127

    浏览量

    17158
  • dff
    dff
    +关注

    关注

    0

    文章

    26

    浏览量

    3417
收藏 人收藏

    评论

    相关推荐

    关于时钟信号处理方法

    我在知乎看到了多bit信号时钟的问题,于是整理了一下自己对于时钟
    的头像 发表于 10-09 10:44 6154次阅读

    Verilog基本电路设计(转)收藏

    采样来自另一个时钟信号,级数越多,同步过来的信号越稳定。对于频率很高的设计,建议至少用三DFF
    发表于 09-15 19:08

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

    数据的时钟问题。打拍的方式,其实说白了,就是定义两级寄存器,对输入的数据进行延拍。如下图所示。应该很多人都会问,为什么是打
    发表于 09-22 10:24

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

    数据的时钟问题。打拍的方式,其实说白了,就是定义两级寄存器,对输入的数据进行延拍。如下图所示。应该很多人都会问,为什么是打
    发表于 10-20 09:27

    三种时钟处理的方法

    单bit数据的时钟问题。  打拍的方式,其实说白了,就是定义两级寄存器,对输入的数据进行延拍。如下图所示。    应该很多人都会问,为
    发表于 01-08 16:55

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

    寄存器,由于第二寄存器对于亚稳态的处理已经起到了很大的改善作用,第三寄存器在很大程度上可以说只是对于第二寄存器的延拍,所以意义是不大的
    发表于 02-21 07:00

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

    寄存器,由于第二寄存器对于亚稳态的处理已经起到了很大的改善作用,第三寄存器在很大程度上可以说只是对于第二寄存器的延拍,所以意义是不大的
    发表于 03-04 09:22

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

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

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

    target,hit这种单比特信号时钟交互来进行信息的交互。基于这对信使,双方各自定义了各自的行动规则作为
    发表于 07-07 17:25

    高级FPGA设计技巧!多时钟和异步信号处理解决方案

    : 打处理,即寄存拍 跨越个异步时钟传输单比特
    发表于 06-02 14:26

    异步bus交互(一)— 两级DFF同步器

    异步bus交互(一)— 两级DFF同步器时钟处理 & 亚稳态
    发表于 12-22 19:07 0次下载
    异步bus交互(一)— <b class='flag-5'>两级</b><b class='flag-5'>DFF</b>同步器

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

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

    时钟电路设计—单比特信号传输

    时钟(CDC)的应从对亚稳定性和同步性的基本了解开始。
    的头像 发表于 06-27 14:25 1054次阅读
    <b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>电路设计—<b class='flag-5'>单比特</b><b class='flag-5'>信号</b>传输

    感应加热技术有没有缺点?所有的工件都可以用电磁感应加热设备吗?

    感应加热技术有没有缺点?所有的工件都可以用电磁感应加热设备吗
    的头像 发表于 12-19 14:17 881次阅读

    一文解析时钟传输

    采样到的信号质量!最常用的同步方法是双触发器缓存法,俗称延迟打拍法。信号从一个时钟进入另一个时钟
    的头像 发表于 11-16 11:55 503次阅读
    一文解析<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>传输