首页 / 资讯中心 / 文章详情

跨时钟域(CDC)处理:原理、问题与解决方案

跨时钟域(CDC)处理:原理、问题与解决方案 ★ FEATURED ARTICLE
1. 什么是跨时钟域CDC在数字电路设计中跨时钟域Clock Domain Crossing, CDC是指数据或控制信号从一个时钟域传输到另一个时钟域的过程。当设计中存在两个或更多时钟且这些时钟之间同频不同相或不同频时就构成了异步设计。数据A由clk1的时钟传输到了clk2的时钟就是跨时钟域。2. 同步设计与异步设计2.1 同步设计在同步设计中整个系统使用单一时钟源。2.2 异步设计异步设计中存在两个或以上时钟时钟之间可能是同频不同相或不同频的关系。3. 跨时钟域问题的本质亚稳态跨时钟域问题的核心是亚稳态Metastability。当信号在目标时钟的建立Tsu/保持时间Th窗口内发生变化时触发器的输出可能在一段时间内处于非0非1的中间电平这种不确定状态称为亚稳态。亚稳态会导致系统功能错误甚至崩溃。如果想要得到一个稳定的数据那就必须在建立时间到保持时间这段时间中数据不发生跳变4. 跨时钟域传输解决方案根据信号类型CDC处理分为单比特信号和多比特信号两大类。4.1 单比特信号跨时钟域传输4.1.1 电平信号针对电平信号无论是快时钟域到慢时钟域还是慢时钟域到快时钟域都采用两级触发器同步打两拍只能降低亚稳态发生的概率两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态也就是上图中Tmet震荡时间,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。4.1.2 脉冲信号慢时钟域→快时钟域不做处理的危害如下图图一并且还有可能在信号的跳变沿进行采样还要处理亚稳态。处理办法如图二两级同步打拍解决亚稳态再用边沿检测恢复脉冲检测上升沿或下降沿。图1不做任何处理图二脉冲信号(慢到快)处理办法4.1.3 脉冲信号快时钟域→慢时钟域不做处理的危害如下图3.解决办法需要在本时钟域下将脉冲展宽拓宽到目标时钟域的单个周期以上确保能够在慢时钟域下采样到再在慢时钟域下打两拍解决亚稳态图三4.2 多比特信号跨时钟域传输4.2.1 异步FIFO调用异步fifo ip核是跨时钟域传输常使用的方法。4.2.2 格雷码 两级触发器同步适用于连续变化的数据如地址指针在异步fifo中地址指针的变化就是转为格雷码后再进行跨时钟域打拍。4.2.3 握手协议通过请求req和应答ack信号确保多比特数据完整传输。例如AXI总线上的 VALID 和 READY 信号。
阅读完成 · 觉得有帮助?
咨询建站