CDC clock domain crossing

上传者: sunjianty | 上传时间: 2026-01-28 09:04:19 | 文件大小: 505KB | 文件类型: DOC
CDC Clock Domain Crossing CDC (Clock Domain Crossing) 是指在数字电路设计中,信号从一个时钟域到另一个时钟域的传输过程。这种传输可能会引发时序问题,例如时钟偏移、保持时间冲突等。本文将 CDC 分解为两部分:同步时钟域信号处理和异步时钟域信号处理。 同步时钟域信号处理 在全同步设计中,如果信号来自同一时钟域,各模块的输入不需要寄存。只要满足建立时间、保持时间的约束,可以保证在时钟上升沿到来时,输入信号已经稳定,可以采样得到正确的值。但是,如果模块需要使用输入信号的跳变沿(例如帧同步信号),千万不要直接使用。因为 begin ... end 语句段涉及到多个 D 触发器,无法保证这些触发器时钟输入的跳变沿到达的时刻处于同一时刻。 为了解决这个问题,可以使用边沿检测电路,例如: ```vhdl always @ (posedge Clk) begin inputs_reg <= inputs; if (inputs_reg == 1'b0 && inputs == 1'b1) begin ... end ... end ``` 异步时钟域信号处理 异步时钟域信号处理可以分为单一信号和总线信号处理两部分。 2.1 单一信号处理 如果输入信号来自异步时钟域(例如 FPGA 芯片外部的输入),一般采用同步器进行同步。最基本的结构是两个紧密相连的触发器,第一拍将输入信号同步化,同步化后的输出可能带来建立/保持时间的冲突,产生亚稳态。需要再寄存一拍,减少亚稳态带来的影响。这种最基本的结构叫做电平同步器。 如果需要用跳变沿而不是电平,又可以使用边沿同步器。边沿同步器在电平同步器之后再加一级触发器,用第二级触发器的输出和第三级触发器的输出来进行操作。 2.2 总线信号处理 如果简单的对异步时钟域过来的一组信号分别用同步器,那么对这一组信号整体而言,亚稳态出现的几率将大大上升。基于这一观点,对于总线信号的处理可以有两种方式。 如果这组信号只是顺序变化的话(如存储器的地址),可以将其转换为格雷码后再发送,由于格雷码相邻码字只相差一个比特,上面说的同步器可以很好的发挥作用。 但是如果信号的变化是随机的(如存储器的数据),这种方法便失效了,这时可以采用握手协议来同步总线信号。 CDC Clock Domain Crossing 是数字电路设计中一个非常重要的问题,需要根据具体情况选择合适的同步方法,避免时序问题的出现。

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明