跨时钟域处理

义项:数字电路设计技术
跨时钟域处理

跨时钟域处理(Clock Domain Crossing,CDC)是数字电路设计中处理信号从一个时钟域传输到另一个时钟域的技术。现代系统级芯片内部各模块往往工作在频率或相位互不相关的时钟下,信号跨越这些边界时,若不经专门处理,会使触发器因建立时间或保持时间不满足而进入亚稳态,造成数据丢失或功能错误。因此,跨时钟域处理是数字集成电路设计中的一项基础技术。[1][2]

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

跨时钟域处理是指在数字电路中,把信号从一个时钟域安全地传递到另一个时钟域的设计方法。所谓时钟域,指由同一时钟驱动、彼此同步的一组逻辑;当发送端与接收端的时钟频率不同、相位关系不确定时,二者即分属不同时钟域,两者之间的信号通路称为跨时钟域路径。跨时钟域处理的目标,是让这类路径上的数据在接收端被正确采样,避免亚稳态传播,同时不让错误的多比特组合中间态进入下游逻辑。[1][2]

跨时钟域处理既包括同步器、握手电路、异步先进先出队列(First In First Out,FIFO)等硬件结构的设计,也包括对这类路径的静态结构检查与带亚稳态注入的动态验证。它通常与 全局异步局部同步、片上网络 等体系结构问题一同讨论。[3]

原理

跨时钟域问题的根源在于信号变化的时刻相对于接收时钟是随机的。触发器要可靠地记录输入,要求在时钟沿前后的一小段窗口内输入保持稳定,分别称为建立时间与保持时间。如果异步信号恰好在这个窗口内发生变化,触发器的输出可能停留在 0 与 1 之间的不确定电平,即亚稳态;其恢复时间不可预测,若在恢复前被下游采样,就会把不确定状态扩散出去。[1][4]

最常用的对策是双触发器同步器:在接收时钟域串联两级触发器,使第一级触发器输出的亚稳态拥有接近一整个接收时钟周期的时间自行收敛,再由第二级安全采样。每增加一级触发器,留给决断的时间延长一个时钟周期,同步器可靠性随之提高。其可靠性通常用平均无故障时间(Mean Time Between Failures,MTBF)衡量,可近似表示为 $MTBF = \frac{e^{T_r/\tau}}{T_0 \cdot f \cdot a}$,其中 $T_r$ 为亚稳态决断时间,$\tau$ 与 $T_0$ 为器件相关的常数,$f$ 为接收时钟频率,$a$ 为被同步信号的变化频率。由该式可见,MTBF 随决断时间近似指数增长,却随接收时钟频率升高而迅速下降,因此在高速设计中两级往往不够。[5][6]

单比特控制信号经同步器即可传递,多比特数据则不能直接逐位同步。原因是数据各位的走线延迟与到达时刻略有差别,接收域可能采到新旧数值混合的结果,例如 2 位地址由 01 变为 10 时,若两比特变化时刻不同,采样结果可能是错误的 00 或 11,进而产生虚假的空满标志。因此多比特数据通常借助握手协议、异步 FIFO 或 MUX 隔离等方式,只在数据整体稳定时不带歧义地采样。[5][1]

发展历程

跨时钟域处理作为独立的设计课题,与多时钟域体系结构的普及同步发展。随着芯片集成度提高,用单一全局时钟同步全芯片变得越来越困难,把大量逻辑拆成多个较小的时钟树以降低功耗与面积的思路被普遍采用,多时钟域设计因而成为常规做法。据 Wilson Research Group 与西门子 EDA 2024 年的功能验证研究,95% 的集成电路与专用集成电路设计包含多个异步时钟域。[1][7]

在此背景下,全局异步局部同步(Globally Asynchronous,Locally Synchronous,GALS)被提出并研究多年:芯片各局部模块保留自己的同步时钟,模块之间通过异步接口通信,接口处的同步器与异步 FIFO 承担跨时钟域职责。针对相邻两个同步域直接通信的片上网络方案中,双同步 FIFO 常被用作相邻子系统的接口,同步失败只可能发生在这类跨域接口处。此类方法在学界和工业界获得较多讨论,但受工具与验证方法限制,在工业产品中的采用范围仍然有限。[8]

验证手段也随设计复杂度演进。静态 CDC 检查通过分析寄存器传输级结构识别跨时钟域路径,检出同步器缺失、组合逻辑传播、重汇聚等结构性问题;动态仿真则在跨时钟域路径上注入随机抖动,模拟亚稳态的随机行为并观察其下游影响。主流 EDA 厂商均已提供专门的 CDC 检查与验证工具,并与功耗意图文件描述的低功耗结构识别相结合。[1]

应用

异步 FIFO 是最常用的跨时钟域数据交接电路之一,用于在两个不同时钟的模块之间按写入顺序传递数据。典型实现以双端口存储器为存储体,写端口由发送方时钟控制,读端口由接收方时钟控制,两侧各自维护读、写指针,并把对方指针同步过来用于产生空满标志。[9][8]

为安全传递指针,异步 FIFO 普遍采用格雷码编码地址。格雷码相邻两个数值之间只有一个比特不同,因此被另一时钟域采样时,结果要么是更新前的值,要么是更新后的值,不会出现多位同时翻转导致的错误中间值;相应地,由同步后的指针产生的空满标志是保守的,只会推迟标志的翻转而不会导致误操作。[5][10]

在器件互连层面,此类技术用于各类带有独立时钟的接口,例如存储器与主机之间按不同时钟读写、模数转换器与现场可编程门阵列按各自时钟交换数据等场景。片上网络则把跨域结构放在路由器输入端口或相邻同步模块之间的链路上,以支持分频、同频不同相、固定整数比等多种时钟关系。[11][12]

局限

同步器降低的是亚稳态导致失效的概率,而非将其彻底消除。MTBF 只是一个统计指标,若其数值不够大,在出货量很大的产品上仍可能出现偶发失效;提高可靠性需要增加触发器级数或等待更多时钟周期,代价是同步延迟增大、硅片面积上升,在接收时钟频率很高时,两级同步器常常已不满足要求。[13]

亚稳态的随机行为无法由常规功能仿真覆盖。传统仿真基于确定的时钟沿对齐关系,难以复现取决于信号到达时刻微小差异的失效,因此需要静态检查结合带随机抖动的动态仿真,而这类验证本身仍然是复杂的任务。[1][13]

多比特跨时钟域传输在结构上也有约束。使用 MUX 隔离时,要求数据在接收时钟域能稳定足够多个周期,否则仍需改用异步 FIFO;直接对多比特二进制计数值打拍同步,则会因多位同时翻转而得到错误的中间结果,只能改用格雷码等单比特变化的编码方式。此外,同步器的布局需要尽量靠近、减小时钟偏斜,组合逻辑不得插入同步器级联触发器之间,这些物理实现要求增加了设计流程的复杂度。[1][5]

参见

  • 亚稳态 —— 跨时钟域处理要解决的核心失效机制,触发器的输出在时序违规后停留于不确定电平。

  • 双触发器同步器 —— 处理单比特控制信号跨时钟域最常用的同步结构。

  • 异步FIFO —— 用于在多比特、批量数据场景下安全完成跨时钟域传输的电路。

  • 格雷码 —— 相邻数值仅一位变化的编码,常用于异步 FIFO 指针的跨域传递。

  • 全局异步局部同步 —— 把跨时钟域问题限定在模块边界的芯片体系结构方法。

  • 片上网络 —— 多核芯片的互连结构,其链路与路由器端口同样涉及跨时钟域设计。

参考资料

  1. 什么是时钟域交叉(CDC)?-IC设计验证/原型验证技术问题,使用中产生的问题-思尔芯 | S2C [引用日期2026-10-14]
  2. Design and Verification of Novel Sync Cell [引用日期2026-10-14]
  3. arteris.cn 上的网页 [引用日期2026-10-14]
  4. 双触发器同步器 | Bohrium [引用日期2026-10-14]
  5. [0044] 常见的同步器是使用两级寄存器,即使用寄存器打两拍的方式进行同步 [引用日期2026-10-14]
  6. openfile [引用日期2026-10-14]
  7. ASYNC.2013 [引用日期2026-10-14]
  8. S0167926007000235 [引用日期2026-10-14]
  9. 一种分布控制双时钟FIFO的设计与实现 [引用日期2026-10-14]
  10. 文章编号:1007-130X(2005)01-0058-03 [引用日期2026-10-14]
  11. Espacenet [引用日期2026-10-14]
  12. US 20140376569A1 [引用日期2026-10-14]
  13. Clock Generator with Clock Domain Crossing [引用日期2026-10-14]
词条评价
词条统计

浏览次数:2 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T21:01:10Z

历史版本

本条目引用的词条
全局异步局部同步 片上网络 亚稳态 双触发器同步器 异步FIFO 格雷码