FPGA的多bit信号跨时钟域为什么不能使用两级同步打拍处理(面试必问)

本文转载自: 无界逻辑(微信号:wujieluoji)微信公众号

多bit信号跨时钟域如何处理呢?为什么不能使用两级打拍的方式呢?很多同学只记住了结论,本文以图示的方式细说一下。

可 先回顾FPGA的单bit信号跨时钟域处理方法(面试比问),可能会出现下面两种情况。

单bit位宽数据两级同步情况

情况一:下图是在T0时刻发生了亚稳态,T1时刻Q1的输出已经稳定在高电平,且满足Tsu和Th,因此T1时刻,Q2就成功的锁存了高电平。

情况二:下图是在T0时刻发生了亚稳态,T1时刻Q1的输出已经稳定在低电平,且满足Tsu和Th,因此T1时刻,Q1重新成功的锁存了Q0的高电平,Q2成功的锁存了Q1的低电平。T2时刻,Q2成功的锁存了Q1的高电平。

可知Q2最终都会锁存到Q0的高电平。要么在T1时刻,要么在T2时刻。换句话说,Q2要么锁存旧数据,要么锁存到新数据。

两bit位宽数据两级同步情况

加入针对2bit数据的跨时钟域处理,也是采用两级打拍同步,又会出现什么情况呢。我们举例说明:原始数据为Q00和Q01,分别进行两级同步电路处理,最终输出Q20和Q21。

若T0时刻,Q0从2‘b00,跳变为2’b11,且Q10在亚稳态后,稳定在低电平,而Q11在亚稳态后,稳定在高电平。

最终Q2会在T2时刻,采样到2‘b11的数据。而在T1和T2之间采样到2’b10的数据。

换句话说,Q2不再是要么锁存Q0的旧数据,要么锁存到Q0的新数据,而是有可能出现其它的数据。假如电路中,通过Q2==2'b10产生脉冲来控制其它的逻辑,这里就会出现功能上的错误。

同理,更多bit的数据跨时钟域采用两级同步处理,情况类似。

总结

很多博客只是描述了一下结论:多bit数据跨时钟域无法使用两级寄存处理。对于背后的根因,本文进行了解析。”字不如图,图不如表“,希望本文对你有所帮助。

最新文章

最新文章