一、CDC(跨时钟域处理,Clock Domain Crossing)
(一)基本原理
- 时钟域的概念
- 在芯片设计中,时钟域是由一个时钟信号及其相关逻辑组成的区域。每个时钟域内的电路元件(如寄存器、组合逻辑等)都由同一个时钟信号来同步操作。例如,一个微处理器芯片可能有多个时钟域,如用于CPU核心运算的高速时钟域,以及用于外部设备接口(如UART接口)的低速时钟域。
- CDC产生的必要性
- 随着芯片功能的日益复杂,不同功能模块对时钟频率的要求不同。例如,在一个多媒体处理芯片中,视频解码模块可能需要较高的时钟频率以满足实时解码的要求,而音频处理模块可能在较低的时钟频率下就能正常工作。为了优化芯片的性能和功耗,这些不同的模块会被设计在不同的时钟域下运行。然而,当信号需要在这些不同时钟域之间传递时,就必须进行CDC处理,以确保数据的正确传输和电路的稳定运行。
(二)亚稳态问题
- 亚稳态的产生机制
- 当一个寄存器在一个时钟沿对输入信号进行采样时,如果输入信号在时钟沿附近处于不稳定状态(例如,输入信号是由另一个不同时钟域的时钟驱动的,其变化与采样时钟沿没有确定的关系),寄存器就可能进入亚稳态。从电路原理上讲,在亚稳态下,寄存器内部的晶体管处于一种既不完全导通也不完全截止的中间状态,其输出电平在一段时间内处于不确定状态。
- 亚稳态的影响
- 亚稳态可能导致后续逻辑电路接收到错误的逻辑值。例如,在一个数字通信芯片中,如果跨时钟域传输的控制信号出现亚稳态,可能会导致通信协议的错误执行,如错误地启动或停止数据传输。此外,亚稳态还可能在电路中传播,影响更多的逻辑模块,甚至可能导致整个系统的故障。
(三)常见的CDC解决方案
1. 单比特信号的同步器
- 两级同步器
- 结构与原理:两级同步器是最基本的单比特信号跨时钟域同步方法