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

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

3天内不再提示

CDC跨时钟域分单bit和多bit传输介绍

FPGA之家 来源:FPGA探索者 作者:FPGA探索者 2022-08-29 11:13 次阅读

多bit跨时钟

大疆2020数字芯片)下列关于多bit数据跨时钟域的处理思路,错误的有()

A. 发送方给出数据,接收方用本地时钟同步两拍再使用;

B. 发送方把数据写到异步fifo,接收方从异步fifo里读出;

C. 对于连续变化的信号,发送方转为格雷码发送,接收方收到后再转为二进制;

D. 发送方给出数据,发送方给出握手请求,接收方收到后回复,发送方撤销数据。

答案:A

解析:多bit跨时钟域不能简单使用打两拍,打拍后可能数据错乱;

CDC(Clock Domain Conversion)跨时钟域分单bit和多bit传输,其中:

1. 单bit(慢时钟域到快时钟域):用快时钟打两拍,直接采一拍大概率也是没问题的,两拍的主要目的是消除亚稳态;

其中:

(1)为了更长的平均无故障时间 MTBF( Mean Time Between Failures),需要配合一个 ASYNC_REG 的约束,把用作简单同步器的多个寄存器放入同一个 SLICE,以降低走线延时的不一致和不确定性。


(* ASYNC_REG = "TRUE" *) reg rst_reg_0;
(* ASYNC_REG = "TRUE" *) reg rst_reg_1;

(2)或者:直接在约束文件里进行约束

set_propertyASYNC_REGTRUE[get_cells[listrst_reg_0rst_reg_1]]

2. 单bit(快时钟域到慢时钟域):握手(脉冲展宽)、异步FIFO、异步双口RAM;快时钟域的信号脉宽较窄,慢时钟域不一定能采到,可以通过握手机制让窄脉冲展宽,慢时钟域采集到信号后再“告诉”快时钟域已经采集到信号,确保能采集到;

3. 多bit跨时钟域异步FIFO、异步双口RAM、握手、格雷码;

(1)使用异步FIFO的IP

实际上是用 FPGA 内部的 BRAM 来搭建,所有的控制逻辑都在 BRAM 内部,是推荐的 FIFO 实现方式。

时序约束简单,进行时序例外约束,只需要 set_clock_groups 将读写时钟约束为异步时钟组即可,简单高效。

set_property -asynchronous -group [get_clocks write_clock] \ -group [get_clocks read_clock]

(2)自己写外部控制逻辑的FIFO

格雷码做异步 FIFO 的跨时钟域处理,计数器和读写控制逻辑在 BRAM 或者 RAM 的外部,除了代码的合理设计以外,还需要进行额外的时序例外约束,不能简单使用 set_clock_groups 约束异步时钟组,还需要考虑外部的读写逻辑的约束。

Xilinx建议这里设置set_max_delay来约束跨时钟域路径,约束的原则是:最大路径延时等于或者略小于目的时钟的一个周期。

写逻辑从cell1到cell2的约束中,cell2的驱动时钟周期为5,如下所示,读逻辑约束进行相应约束。


poYBAGMML2WABtvqAAA8WO7wAAI530.jpg

多bit中,强烈推荐使用异步FIFO的IP来实现,我在实际工程中使用多次,简单方便。

set_propertyASYNC_REGTRUE[get_cells[listrst_reg_0rst_reg_1]]




审核编辑:刘清

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

    关注

    8

    文章

    1367

    浏览量

    114518
  • fifo
    +关注

    关注

    3

    文章

    387

    浏览量

    43537
  • 时钟
    +关注

    关注

    10

    文章

    1720

    浏览量

    131346
  • CDC
    CDC
    +关注

    关注

    0

    文章

    57

    浏览量

    17768

原文标题:CDC跨时钟域处理及相应的时序约束【set_clock_groups】【set_max_delay】

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

收藏 人收藏

    评论

    相关推荐

    关于时钟信号的处理方法

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

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

    以手到擒来。这里介绍的三种方法时钟处理方法如下:打两拍;异步双口 RAM;格雷码转换。01方法一:打两拍大家很清楚,处理
    发表于 09-22 10:24

    三种时钟处理的方法

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

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

    介绍3种时钟处理的方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了bit
    发表于 07-29 06:19

    cdc路径方案帮您解决时钟难题

    这一章介绍一下CDC也就是时钟可能存在的一些问题以及基本的
    的头像 发表于 11-30 06:29 7140次阅读
    <b class='flag-5'>cdc</b>路径方案帮您解决<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>难题

    CDCbit脉冲时钟的处理介绍

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

    如何解决bitbit时钟处理问题?

    一、简要概述: 在芯片设计过程中,一个系统通常是同步电路和异步电路并存,这里经常会遇到CDC也就是时钟处理的问题,常见的处理方法,可能大家也已经比较熟悉了,主要有
    的头像 发表于 03-22 10:28 6756次阅读

    介绍3种方法时钟处理方法

    介绍3种时钟处理的方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了bit
    的头像 发表于 09-18 11:33 2.2w次阅读
    <b class='flag-5'>介绍</b>3种方法<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 1259次阅读

    单位宽信号如何时钟

    单位宽(Single bit)信号即该信号的位宽为1,通常控制信号居多。对于此类信号,如需时钟可直接使用xpm_cdc_single
    的头像 发表于 04-13 09:11 1281次阅读

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

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

    FPGA时钟处理方法(二)

    上一篇文章已经讲过了bit时钟的处理方法,这次解说一下
    的头像 发表于 05-25 15:07 977次阅读
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(二)

    FPGAbit时钟之格雷码(一)

    FPGAbit时钟适合将计数器信号转换为格雷码。
    的头像 发表于 05-25 15:21 2658次阅读
    FPGA<b class='flag-5'>多</b><b class='flag-5'>bit</b><b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>之格雷码(一)

    CDC时钟处理及相应的时序约束

    CDC(Clock Domain Conversion)时钟
    的头像 发表于 06-21 14:59 1744次阅读

    从处理bit时钟信号同步问题来入手

    在数字电路中,时钟处理是个很庞大的问题,因此将会作为一个专题来陆续分享。今天先来从处理bit
    发表于 06-27 11:25 1575次阅读
    从处理<b class='flag-5'>单</b><b class='flag-5'>bit</b><b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>信号同步问题来入手