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

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

3天内不再提示

简述CDC当中最典型错误案例

FPGA自习室 来源:FPGA自习室 作者:FPGA自习室 2021-04-12 16:47 次阅读

一、主要概念

同步逻辑和异步逻辑:时钟域为由单个时钟或具有固定相位关系的时钟驱动的设计部分。也就是说,在一个模块中一个时钟和他的翻转或者分频时钟认为是相同的时钟域,其所驱动的逻辑是同步逻辑。在一个模块中不具有相同相位和时间关系的时钟被视为不同的时钟域,其所驱动的逻辑是异步逻辑。

亚稳态:如果数据传输中不满足触发器的建立时间和保持时间,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态。亚稳态就是无法避免的,亚稳态主要发生在异步信号检测、跨时钟域信号传输以及复位电路等常用设计中。

MTBF: 平均无故障工作时间,英文全称:Mean time between failures;利用平均故障间隔时间(MTBF)公式可以预测亚稳态的发生,MTBF越大则说明亚稳态对电路产生的影响越小,反之亦然。

f6f4244c-957b-11eb-8b86-12bb97331649.png

其中C1和C2是常数,依赖于构建触发器所使用的技术;tMET为在不引起同步失败的前提下亚稳态输出持续时间,时间越长MTBF指数级增大,所以高频电路两级触发器不够可能要用三级触发器来保证;fclk和fdata分别是同步时钟和数据翻转率;所以在不影响功能前提下,可以降频工作频率和数据的翻转频率,都可以有效的增大MTBF。

二、CDC典型错误场景

芯片设计过程中,CDC正向确认时经常会发现几种典型的错误场景:没有处理直接裸跨、输入同步器前组合逻辑输出以及多路扇出和重新聚合场景等,还有一些不太常见情况未列出,请参阅文末资料

2.1直接裸跨

f705ca62-957b-11eb-8b86-12bb97331649.png

如上图,如果CLK B采样DA,而DA是变化的(在CLK的上升边缘和下降D)的边缘,则DB将是亚稳态的,这种就是没有使用同步器,显然是不合理的。

2.2毛刺(Glitch)

异步路径时序工具不会进行时序分析,这条道路上的任何逻辑都必须谨慎精心设计并验证,因为逻辑可能导致故障并在下游产生功能错误。如下图所示,尽管两个源触发器同时给出脉冲,但由于布局布线以及环境原因而引起的传播延迟(Td)不同,导致DA1和DA2信号不能同时到达,因此在CLKA时钟域下A&B会产生毛刺,而在CLKB时钟域下产生一个假脉冲,导致后继电路异常。正确的做法是将A&B在CLKA时钟域下打一拍寄存器输出。

f721daa4-957b-11eb-8b86-12bb97331649.png

此外,还有另外一种情况出现漏采,如下图所示,DB1在CLKB时钟域下应有的高电平信号,由于DA1和DA2的传输延时不同,导致在CLKB下没有传递出去。

f7703a64-957b-11eb-8b86-12bb97331649.png

2.3多路扇出

单个信号扇出输入到多个同步器时,由于输入信号到达的同步器的时间不同(传输延时Td不同),同步可能需要一拍或者两拍完成同步,此时同步后的各个信号之间可能存在错拍问题。如下图所示,DA1和DA2信号同步后分别是Fsm1_en 和 Fsm2_en信号,设计时如果仍认为它们是相同的信号,就会导致逻辑功能错误。

f78adcc0-957b-11eb-8b86-12bb97331649.png

2.4重新聚合(RECONVERGENCE)

在多bit跨时钟传输过程中,如果各个bit之间分别使用单bit同步器进行跨时钟处理,在目的时钟域又重新聚合起来。如下图所示,DA1和DA2由于传输delay不同,在 CLKB上升沿采样时,就会有2’10不期望值的出现,这样DB1和DB2进行逻辑处理(聚合)时,也会得到不期望的值,这也是总线不能采用单bit同步器进行跨时钟处理的原因。此外,格雷码是可以使用单bit同步器进行处理的,AFIFO就是其典型设计。

f7a40916-957b-11eb-8b86-12bb97331649.png

扩展:上述指的两个两级触发器的单bit同步器,可以扩展为两个AFIFO总线跨时钟,如果设计不当,只使用其中一个AFIFO的empty作为两个AFIFO读判断,由于格雷码同步的不确定性,导致两个AFIFO的empty信号不一致,当出口两组总线聚合时,就会发生错拍问题,从而导致功能异常。解决办法是两个AFIFO的读条件应该关联或者使用一个大的AFIFO.

Referencecadencecdc(1)

Reference Spyglass cdc(2)

编辑:jq

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

    关注

    0

    文章

    55

    浏览量

    17671
  • 复位电路
    +关注

    关注

    13

    文章

    308

    浏览量

    44277

原文标题:CDC(四) CDC典型错误案例

文章出处:【微信号:FPGA_Study,微信公众号:FPGA自习室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    USB CDC无法使用中断传输的原因?

    目前使用USB CDC 遇到无法使用中断传输的问题, 想请大家解惑 MCU: STM32F439 使用STM32Cube MX 产生code USB Full Speed - USB CDC
    发表于 04-09 06:57

    USB复合设备MSC+CDC,CDC_Transmit_FS函数发送不正常的原因?

    单独测试CDC、MSC功能均正常,实现MSC+CDC复合设备后,均可正常识别到,但CDC_Transmit_FS函数不正常,现象如下: 1、在主循环里调用CDC_Transmit_FS
    发表于 03-13 07:40

    芯片设计之CDC异步电路分析(五)

    结构:同一个信号源头,两个同步处理器。这里提一下,有两个CDC分析工具的参数配置:
    的头像 发表于 02-23 18:23 1466次阅读
    芯片设计之<b class='flag-5'>CDC</b>异步电路分析(五)

    盘点PCB设计中的常见错误

    搞技术,难免存在错误,只有经历过错误,才能更快地成长。PCB设计也一样,今天就来盘点一下PCB设计中最常见的错误
    的头像 发表于 01-12 09:53 716次阅读
    盘点PCB设计中的常见<b class='flag-5'>错误</b>

    uart接收数据,CDC发给电脑总有问题怎么解决?

    CDC先给STM32发指令,然后STM32获得uart2的11个数据(数据结构,一位数据长度,跟着10个数据),通过CDC把10位数据发给电脑。 问题,1,发的数据数量总是有问题。这个已经通过中间
    发表于 11-06 08:20

    简述无源/有源晶振的布局布线要点

    引言:晶振内部结构比较复杂,如果连接不妥当或者布线错误,就会影响晶振不起振或者EMC测试fail,从而导致产品不能使用。因此晶振电路的PCB设计非常重要,本节主要简述无源/有源晶振的布局布线要点。
    的头像 发表于 08-15 12:36 5957次阅读
    <b class='flag-5'>简述</b>无源/有源晶振的布局布线要点

    数字设计中常见的CDC问题

    在数字系统级别的时钟域交叉(CDC)中,亚稳态传播问题是一个重要的挑战。在这个问题中,由于时序差异,信号在触发器之间的传输可能会导致亚稳态值的产生和传播。让我们来看一下模型,如图1所示。
    的头像 发表于 08-14 11:48 665次阅读
    数字设计中常见的<b class='flag-5'>CDC</b>问题

    USB复合设备MSC+CDC,CDC_Transmit_FS函数发送不正常是怎么回事?

    单独测试CDC、MSC功能均正常,实现MSC+CDC复合设备后,均可正常识别到,但CDC_Transmit_FS函数不正常,现象如下: 1、在主循环里调用CDC_Transmit_FS
    发表于 08-08 07:32

    你一定要懂的CDC错误

    本文描述的跨时钟错误在特定场景下,有些是允许的,甚至有些是正常设计。因此IC设计者想要确认跨时钟错误需要分析应用场景。
    的头像 发表于 07-24 17:00 1812次阅读
    你一定要懂的<b class='flag-5'>CDC</b><b class='flag-5'>错误</b>

    HD74CDC2510B 数据表

    HD74CDC2510B 数据表
    发表于 06-27 18:49 0次下载
    HD74<b class='flag-5'>CDC</b>2510B 数据表

    HD74CDC2509B 数据表

    HD74CDC2509B 数据表
    发表于 06-27 18:49 0次下载
    HD74<b class='flag-5'>CDC</b>2509B 数据表

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

    CDC(Clock Domain Conversion)跨时钟域分单bit和多bit传输
    的头像 发表于 06-21 14:59 1079次阅读

    什么是usb cdc协议?

    什么是CDC类 (Communication Device Class)   USB的CDC类是USB通信设备类 (Communication Device Class)的简称。CDC类是USB
    发表于 06-15 07:02

    HD74CDC2510B 数据表

    HD74CDC2510B 数据表
    发表于 05-08 19:08 0次下载
    HD74<b class='flag-5'>CDC</b>2510B 数据表

    HD74CDC2509B 数据表

    HD74CDC2509B 数据表
    发表于 05-08 19:08 0次下载
    HD74<b class='flag-5'>CDC</b>2509B 数据表