最近一直在看异步时钟域的亚稳态问题,有好多疑问
从简单的电平同步器开始,如上图。
假设clk2 = 1.5clk1(或者更高),用clk2来同步clk1的单bit data,假设data刚好在clk2的上升沿跳变(data在clk2的Tsu和Tth区间类跳变),这时产生亚稳态,导致reg1的输出震荡,输出的值Q1不固定,假设输出0(0是错误值,也有可能输出1正确值),结果导致本来在clk1里只有一个周期的低电平,经clk2同步后出现两个周期的低电平,这样第一级reg1的输出错误值会一直沿着reg2传递下去,这种同步错误应该是无法纠正的。
对于单bit的数据且有效电平只有原时钟域的一拍这种情况,可以用边沿检测
那么问题来了,对于单bit数据但是有效电平不只一拍的情况,假如FPGA作为IIC从机来接收sda过来的数据,我们应该怎么避免或者减少上面情况所带来的问题。
文章评论(0条评论)
登录后参与讨论