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

    文章

    57

    浏览量

    17773
  • 复位电路
    +关注

    关注

    13

    文章

    322

    浏览量

    44540

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

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

收藏 人收藏

    评论

    相关推荐

    cdc减振器控制原理是什么

    CDC(Continuous Damping Control,连续阻尼控制)是一种先进的车辆悬挂系统技术,它能够根据车辆的行驶条件实时调整悬挂的阻尼力,以提供最佳的乘坐舒适性和操控稳定性。CDC系统
    的头像 发表于 09-18 15:16 583次阅读

    关键指南针-NXP USB CDC_VCOM虚拟串口例程

    最近有小伙伴反应USB中的 usb_examples/usb_device_cdc_vcom 例程(USB虚拟串口VCOM)中的一些使用问题,今天集中来说说使用example的必知要点~ 实验平台
    的头像 发表于 07-25 09:17 1806次阅读
    关键指南针-NXP USB <b class='flag-5'>CDC</b>_VCOM虚拟串口例程

    USB复合设备MSC+CDC,MSC异常影响CDC收发怎么解决?

    MSC读写物理存储设备的时候,如果返回一次错误错误码:-1),不知道为什么会触发一个枚举中断(USB_OTG_GINTSTS_ENUMDNE0),会调用到reset_callback,也会把CDC也会reset,导致
    发表于 07-23 06:23

    请问如何安装Espressif CDC Device驱动?

    S3的开发板,用usb连接电脑后提示安装Espressif CDC Device驱动,Windows7系统,请问要如何安装该驱动?
    发表于 07-01 08:01

    esp32-s2-usb-host-cdc示例程序接收错误怎么处理?

    在运行示例程序 esp32-s2-usb-host-cdc 时,当与设备通讯有段时间之后,串口打印错误信息: [0;33mW (1922332) : BULK IN, dir: 1, err
    发表于 06-28 06:24

    ESP32-S2-WROOM使用USB CDC虚拟串口打印log,模组在跑一段时间后会报一下错误,为什么?

    环境相关 模组:ESP32-S2-WROOM IDF:V4.3 关于开发环境: windows11 IDE:vscode 问题描述 使用USB CDC虚拟串口打印log,模组在跑一段时间后会报一下错误,然后就重启了
    发表于 06-19 06:22

    ESP32S2使用单根USB线创建MSC+CDC与上位机通信,CDC异常的原因?

    芯片型号:ESP32S2 SDK版本:ESP-IDF 4.4.6 现在的环境是使用单根USB线创建MSC+CDC与上位机通信。当CDC和MSC同时运行,且MSC接口有大数据量通过时CDC设备端口会
    发表于 06-06 07:29

    STM32 USB CDC为什么只能发送4096个字节?

    IC:STM32F411RCT6 SW:STM32Cube_FW_F4_V1.7.0 USB CDC功能,需要一次性发送近7K数据到PC,通过 USBD_CDC
    发表于 04-29 07:49

    STM32做3个CDC复合设备遇到的地址问题怎么解决?

    组合了三个CDC设备: 使用EP1的IN、OUT做CDC1的数据接口端点,EP4的IN做控制接口端点。 关联串口1。 使用EP2的IN、OUT做CDC2的数据接口端点,EP5的IN做控制接口端点
    发表于 04-18 08:29

    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

    求助,关于USB复合设备HID+CDC串口问题求解

    分别写了CustomHID的键鼠代码、CDC代码测试均无问题,整合到一起后,插上电脑有时识别串口,有时识别HID,最终过不了几秒HID的设备挂掉报代码10,虽然串口显示设备正常运行,但
    发表于 03-07 06:11

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

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

    PCB设计工作中常见的错误有哪些?

    一站式PCBA智造厂家今天为大家讲讲PCB设计工作中常见的错误有哪些?PCB设计中最常见到的六个错误。PCB设计是电子产品制造中非常关键的一环。它的质量直接关系到整个产品的性能和稳定性。然而,在
    的头像 发表于 02-21 09:32 524次阅读
    PCB设计工作中常见的<b class='flag-5'>错误</b>有哪些?

    盘点PCB设计中的常见错误

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