由于亚稳态的存在,数据可能不会在目标时钟的第一个周期中被目标时钟域捕获。为了确保数据不会丢失,源时钟域数据应在最短的时间内保持稳定,以便满足目标时钟域的至少一个有效时钟边沿的setup和hold时间要求。
如果C1和C2的有效时钟边沿比较近,则C2的第一个时钟边沿,无法采样到A的变化。数据最终被时钟C2的第二个边沿捕获。
然而,如果数据A的转换和时钟C2的有效边沿之间有足够的时间,数据将在C2的第一个周期中被捕获。
假设源时钟C1的速度是目标时钟C2的两倍,并且两个时钟之间没有相位差。进一步假设在时钟C1的上升沿上生成的输入数据序列“A”是“00110011”。在时钟C2的上升边沿上捕获的数据B将是“0101”。在这里,由于信号A上的所有转换都被B捕获,因此信息其实没有丢失。
然而,如果输入序列为“00101111”,那么目标时钟域中的输出将是“0011”。在这里,输入序列中的第三个数据值“1”丢失。
解决方案。为了防止数据丢失,数据应在源时钟域中保持恒定足够长的时间,以便在目标时钟域中正确捕获。换句话说,在每次源时钟域数据翻转后,至少一个目标时钟边沿应该到达,而且建立或保持时序违例,以便源数据在目标时钟域中正确捕获。