【持续更新】 CDC 跨时钟域处理

在之前的专栏《硬件架构的艺术》里,有讲过亚稳态以及多个时钟的处理办法,但是感觉还是太宽泛了些,不太好理解。在这篇博客里,将主要参考《Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog》这篇论文,系统整理CDC处理方法。

亚稳态

产生原因与影响

产生原因: 寄存器采样不满足建立时间或保持时间要求

  • 亚稳态的产生是无法避免的,只能想办法降低其发生的频率。在跨时钟域设计中,如果不采取手段,会有很大概率引入亚稳态。
  • 下图显示了一个同步失败的示例, 其原因是当一个时钟域中产生的信号在另一个时钟域的时钟信号上升沿附近被采样时,输出进入亚稳态并且没有收敛到合法稳定状态(0或1)。

**亚稳态的影响:**亚稳态最大的危害就是会将系统引入一个未知状态,对于许多设计而言,这无疑是致命的。

  • 如下图所示,接收时钟域中的亚稳态输出会导致非法信号值在整个设计的其余部分传播。由于CDC 信号可能会波动一段时间,因此接收时钟域中其余部分的输入逻辑可能会将波动信号的逻辑电平识别为不同的值,从而将错误信号传播到接收时钟域中。

MTBF:平均无故障工作时间

MTBF表征两次故障之间的时间,即多久会发生一次亚稳态。影响同步器电路MTBF 的两个最重要因素是采样时钟频率(信号被采样到接收时钟域的速度)和数据更改频率(跨越CDC 边界的数据更改速度有多快)。

  • 从上面的部分方程可以看出,在更高速度的设计中,或采样数据变化更频繁时,故障发生的频率更高(MTBF 更短)。
  • 这里的故障是指一个信号被传递到同步触发器,然后在第一级同步触发器上进入亚稳态,并且在一周期后继续处于亚稳态时被采样到第二级同步触发器中。由于该信号在一个时钟周期后没有稳定到已知值,因此当它被采样并传递到接收时钟域时,该信号仍可能处于亚稳态,从而导致相应逻辑出现潜在故障。
  • MTBF的值越大越好,表示潜在故障之间的时间间隔较长。若能将MTBF控制在几十年(可以做到),则该设计即可视为几乎不会发生亚稳态的设计,毕竟数字系统预期寿命也没那么长(军工级除外)

两种同步场景

跨CDC 边界传递信号时可能出现两种情况:

  • 允许漏采在时钟域之间传递的信号的值:有时不需要对每个值都进行采样,但重要的是采样值必须要准确。 例如,异步FIFO设计中,就可以允许漏采的存在。因为异步FIFO的设计最重要的是正确(或者说不错误)地判断FIFO的空和满。漏采一些数据并不会对其判断空满造成错误,某种意义上还会使其设计更加安全。
  • 不允许漏采在时钟域之间传递的信号的值:CDC 信号必须被正确识别或握手后才允许更改。

在这两种情况下,CDC 信号都需要通过某种形式同步到接收时钟域中。

同步器

同步器是一种设备,它采样异步信号,并输出一个与本地或采样时钟同步的信号版本

双触发器同步器

如下图所示,第一个触发器将异步输入信号采样到新的时钟域,并等待一个完整的时钟周期,以允许第一阶段输出信号上的亚稳态衰减,然后用相同的时钟对第二级触发器进行采样,其目的是使第二级触发器输出成为一个稳定且有效的同步信号,并在新时钟域内准备分配。

相关推荐
9527华安15 小时前
国产安路FPGA开发设计培训课程,提供开发板+工程源码+视频教程+技术支持
fpga开发·fpga·安路·视频教程·培训·安路fpga
UVM_ERROR1 天前
硬件设计实战:解决Valid单拍采样失效问题(附非阻塞赋值与时序对齐核心要点)
驱动开发·fpga开发·github·芯片
brave and determined1 天前
可编程逻辑器件学习(day36):从沙粒到智能核心:芯片设计、制造与封装的万字全景解析
fpga开发·制造·verilog·fpga·芯片设计·硬件设计·芯片制造
步达硬件1 天前
【FPGA】FPGA开发流程
fpga开发
我爱C编程2 天前
【仿真测试】基于FPGA的完整16QAM通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·16qam·帧同步·卷积编码·viterbi译码·维特比译码·频偏锁定
s09071363 天前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp
燎原星火*3 天前
QSPI IP核 基本参数
fpga开发
XINVRY-FPGA3 天前
XCVU9P-2FLGC2104I Xilinx AMD Virtex UltraScale+ FPGA
嵌入式硬件·机器学习·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
FPGA_小田老师3 天前
FPGA Debug:PCIE一直自动重启(link up一直高低切换)
fpga开发·pcie debug·pcie初始化问题
hexiaoyan8273 天前
视频信号检测板卡:208-Base Camera Link 图像信号模拟器
fpga开发·图像信号模拟器·视频信号检测·视频信号分析·智能图像分析