原创 异步时钟域的电平同步器

2015-3-12 11:30 1211 30 30 分类: FPGA/CPLD

最近一直在看异步时钟域的亚稳态问题,有好多疑问

qq图片20150312112225.jpg
 

从简单的电平同步器开始,如上图。

qq图片20150312112245.jpg

假设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条评论)

登录后参与讨论
我要评论
0
30
关闭 站长推荐上一条 /2 下一条