首页 > 其他分享 >CDC与亚稳态

CDC与亚稳态

时间:2023-05-19 09:13:05浏览次数:40  
标签:同步 CDC 亚稳态 cycle dff 时钟

CDC与亚稳态

Clock Domain Crossing (CDC) : 跨时钟域设计中,信号adat从aclk domain传播到bclk domain;aclk与bclk之间的频率,相位没有固定关系,为asynchronous异步关系的时钟。

Metastability: 当adat在bclk采样点附近变化时,不满足后级flip-flop的setup/hold time,D端无法完成正确的锁存,Q端的输出在较长一段时间内处于不确定的振荡值,出现亚稳态的现象。

亚稳态传播给后级组合逻辑时,后仿中的不确定的X态会传播出去,影响电路功能。

图片名称
  1. Synchronous clock domains 在时钟约束和时钟树正确的情况下,不属于CDC这类情况,不会产生亚稳态;
  2. qasi synchronous: 时钟同源,由同一个分频器产生,频率为整数倍关系,相位差固定,为准同步时钟关系。时钟的抖动和偏移的不确定性存在一定关系。此时也可以当作同步电路处理。
  3. 相比于sequential logic,combinatorial logic的特性导致其更容易传播亚稳态和产生glitch。

亚稳态问题

无同步器时的亚稳态

图片名称

Re-Convergence of Synced Signals(信号同步后的重新组合)

Multi-bit signals 分别经过2-dff同步,然后通过组合逻辑成为一个有效信号,驱动后级组合逻辑。经过逻辑组合后的信号可能会出现一个cycle的非预期值被误采样,影响功能逻辑。原因可总结为两点:
F1 到 F2的path delay和 F6 到 F7的 path delay不同,skew的存在导致clk_B采样存在先后顺序。
就算布线保证skew几乎不存在,Multi-bit signals 在同一时刻发生变化。但是因为2-dff同步存在cycle uncertainty的问题,也会出现一个cycle的不确定值。

图片名称

2级同步会导致一个clock cycle的uncertainty;metastability可能会导致data-coherency和re-covergence的问题;
Reconvergence(correlation):一些reconvergence信号会带来的glitch以及sample single出错;
(multi-bit uncertainty)会导致在receiving domain中有一到两个cycle的latency或者cycle uncertainty;可以通过gray encoding的方式来避免;当采用了格雷编码或者下级电路对data coherency有一定容忍度,不会影响逻辑功能
通过verify signals肯定不会在destination clock cycle进行toggle,从而waive掉这个path。

Glitch introduced at RTL

图片名称

上述source domain的组合逻辑输出 ,容易出现glitch,导致亚稳态的发生。

快到慢的DATA LOSS

图片名称

从快时钟域到慢时钟域,信号保持时间过短,慢时钟域采样不到,data loss.

Data hold problem(data loss)

Fast to slow clock以及data enable sequencing场景;

图片名称

EN使能时,data hold而不是data change。
可以通过implement pulse extenders(脉冲展宽)的方式来避免:

图片名称

CDC同步方案

单bit 同步器

常见的单bit 或者采用格雷码的CDC处理方式为使用two-flip-flop作为同步器,第一级dff的Q端出现亚稳态,第二级相同clock的dff采样时,Q端一般为稳定的电平强度。

图片名称

注意事项

  • MTBF-mean time before failure 公式评估亚稳态发生的概率(发生两次失效的时间间隔)。时钟频率越高,数据变化频率越高,越容易出现亚稳态。
  • 如果在一个FPGA系统电路里面存在多个独立(异步)时钟,并且存在多时钟跨时域(clock domain)之间的信号传输,那么电路会出现亚稳态。
  • 出现亚稳态的平均时间间隔常用“平均无故障时间” (MTBF, Mean Time Between Failure)来表示。数据的频率,时钟频率及寄存器的工作温度、电压、辐射等因素都对MTBF有影响。平均无故障时间一般根据系统应用需求而定,例如一个医疗设备额平均无故障时间要大于一个消费型的音响。提高平均无故障时间有利于减少系统在信号传输过程因亚稳态而带来的风险。下图是平均无故障时间MTBF的计算公式:

  • 从上图的计算可以看得出,MTBF与触发器的时钟频率密切相关,甚至受到时钟频率的影响极大,但是注意一点的是亚稳态发生的概率与时钟的频率无关,只是MTBF与触发器的时钟频率有密切联系。例如对于一个系统来说,可能触发器的时钟频率为20MHZ时,系统MTBF为5年,但是当触发器时钟为40MHZ时,可能MTBF只剩下一分钟了。例如假设触发器的时钟频率为10MHZ,而输入数据频率为3KHZ,其MTBF如下图所计算的:
  • 满足setup/hold time,Q端的输出需要在clock-to-qdelay时间内稳定。在两级同步的策略中,参数S为第2级dff处理亚稳态的时间,Tdelay为第1级dff的clock-to-qdelay + wire delay,Tsetuphold为第2级dff的setuphold time。 对于超高速设计,参数S不够充裕,则可以采用3级dff进行同步处理。

  • 跨时钟域的信号,应该在source domain寄存一拍,再经过destination domain的2级同步处理。因为如果是source domain的组合逻辑直接输出,容易出现glitch,增加亚稳态发生的概率。而同步电路由于时钟约束,若是single cycle path,上级dff的q端经过组合逻辑到达下级dff的d端预期为1个cycle,在这1个cycle中,出现的glitch一般不会影响下级dff的d端采样锁存信号。

  1. 2级dff同步存在cycle uncertainty的问题;当第2级dff采样第1级dff Q端输出的亚稳态,若采样到1,则latency为1个cycle;采样到0,则latency为2个cycle。至于是N还是N+1,并不确定。
图片名称
  1. CDC中传播的信号一般分为event类型和level类型。event如pulse类型信号,level如static类型信号。这两种类型的处理方式不同,下文具体讲解。
  2. VC Spyglass CDC将CDC path分为ctrl path和data path两种。 VC Spyglass
  3. CDC分为structural verification和 functional verification 两种。

2.2 Reset Synchronization

图片名称

ASIC中一般采用异步复位,同步释放的策略。同步处理的reset信号,后端工具会自动识别,调整路径上的buffer,保证reset信号满足dff的removal time recovery time。未作同步处理的reset信号,在后仿时若removal/recovery违例,出现X态。
reset synchronizer的结构如下:低电平有效的复位,rstn_d1的D端一直为高电平1。

图片名称

reset release流程如下:
rstn_s assert时,rstn_d2维持为0,保持后级电路的复位状态。
rstn_s release时,若rstn_d1的removal/recovery违例,Q端出现亚稳态。rstn_d2在1~2个cycle latency后输出为1。
rstn_s release时,若rstn_d1的removal/recovery没有违例,rstn_d2在1个cycle latency后输出为1。

标签:同步,CDC,亚稳态,cycle,dff,时钟
From: https://www.cnblogs.com/lanlancky/p/17413898.html

相关文章

  • 跨时钟域亚稳态
    跨时钟域无论快采慢还是慢采快最好满足近似3edge要求:你真的懂2-flopsynchronizer吗--CDC的那些事(2)-知乎(zhihu.com)比如110M采100M,展宽再采 亚稳态(非0非1):关于数字电路中的亚稳态(douban.com)......
  • .Net 5 CanalSharp Mysql CDC (增量同步,捕获变更数据)Docker 系列之 Canal (CDC 增量
    CanalSharp阿里云的解决方案,需要两部分Canal 服务端要和Mysql连在一起(目前我是用docker部署的服务)另外一部分就是CanalSharp单独的客户端服务(.Net5服务)CanalSharp文档可以参考:https://canalsharp.azurewebsites.net/zh/安装服务,可以点击下边的连接。Docker系列之Canal......
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
    之前业务需要捕捉到业务数据增量部分,并对其进行宽表处理,这也是其中的一个技术方案,方案主要是用了CDC的技术。CDC全称是ChangeDataCapture,捕获变更数据,是一个比较广泛的概念,只要是能够捕获所有数据的变化,比如数据库捕获完整的变更日志记录增、删、改等,都可以称为CDC。该功能被......
  • 储能系统双向DCDC变换器蓄电池充放电仿真模型有buck模式 储能系统双向DCDC变换器蓄电
    储能系统双向DCDC变换器蓄电池充放电仿真模型有buck模式储能系统双向DCDC变换器蓄电池充放电仿真模型有buck模式和boost模式,依靠蓄电池充放电维持直流母线电压平衡ID:9670668092226736......
  • 国内汽车车载电源DCDC首家,硬件原理图,软件源码,3带上位机调试工具,资料完全配套
    国内汽车车载电源DCDC首家,硬件原理图,软件源码,3带上位机调试工具,资料完全配套YID:65450666521985563......
  • Flink MySQL CDC connector 使用注意事项
    注意事项表要有主键库名和表名不能有点号是个BUG,估计后续会修复。表名不能有大写也是个BUG,估计后续会修复。如果表名含有大写的字母,查询时日志可看到如下信息:java.util.concurrent.ExecutionException:java.io.FileNotFoundException:Filedoesnotexist:hdf......
  • 两级式光伏并网逆变器,DCDC环节采用boost电路,通过增量电导法实现光伏最大功率跟踪MPPT
    两级式光伏并网逆变器,DCDC环节采用boost电路,通过增量电导法实现光伏最大功率跟踪MPPT。逆变器采用二电平逆变器,通过双闭环控制,实现并网单位功率因数,并网电流与电网电压同相位,并网电流THD仅有1.3%,符合并网规范,并稳定直流侧母线电压。为了得到电网电网相位,采用基于双二阶广义积分器......
  • Flink Cdc MySQL 整库同步到 StarRocks
    这段时间开始调研使用StarRocks做准实时数据仓库:flinkcdc实时同步数据到StarRocks,然后在StarRocks中做分层计算,直接把StarRocks中的ADS层提供给BI查询。架构如下:由于用到的表比较多,不能用FlinkSQL给每个表都做个CDC的任务(任务太多不好维护、对数据库又可能有......
  • TiCDC 源码解读(5)-- TiCDC DDL 事件处理逻辑 与 Filter 实现介绍
    作者:asddongmen内容概要本文是TiCDC源码解读的第五篇,本文将会介绍TiCDC对DDL的处理方式和Filter功能的实现(基于TiCDCv6.5.0版本代码),文章将会围绕以下4个问题展开。为什么TiCDC只用Owner节点来同步DDL?DDL事件会对同步任务的进度有什么影响?TiCDC是怎么在内......
  • 基于 TiCDC 的 TiDB 复制集群的计划内和计划外切换验证步骤
    作者:pepezzzz环境准备集群名称和版本上游tidb集群:tidb-h下游tidb集群:tidb-cdc版本:v6.5.0CDC专用用户:cdcuser注:业务负载用户应独立于CDC专用用户。业务数据库:cdcdb模拟业务应用:Sysbench、BANK。上下游创建ticdc同步用户和数据库createusercdcuseridentified......