跨时钟域问题方法解决之一:两级存储器

参考:https://www.cnblogs.com/linjie-swust/archive/2012/01/07/YWT.html

跨时钟域带来的亚稳态无法彻底解决,但通过一定手段可很大程度的改善。

触发器的每次正常工作都需要满足“建立时间Tsu”和“保持时间Th”,因为管子工作在截止区,要有充分时间来充放电。

跨时钟域会使得前时钟域A输出的数据不一定何时到达后时钟域B,此时B中接收数据的触发器FF1不一定满足建立保持时间,进入亚稳态,可其输出端发生亚稳态(0/1飘忽不定),这会对后续电路产生严重影响。

跨时钟域问题方法解决之一:两级存储器

在FF1之后再加一个FF2,由于亚稳态时间小于时钟周期(这也是限制了工作频率上限的一方面),故下次时钟沿到来之前亚稳态会进入稳态,FF2采集到的极大概率是稳定值,故两级触发器的方法把亚稳态限制在FF2之前。而在下次时钟沿到来时,由于B的时钟频率大于A(此方法的应用限制),FF1会采集到稳值,故FF2此时也一定会采集到稳值。

另一方面,即使FF1在第一次时钟沿就采集到了正确的数值,但很有可能驱动能力不够。--FPGA之道 狄超

如前文所说,触发器要满足Tsu和Th以充分充放电,让逻辑1接近1.5V(假设),让逻辑0接近0V。若不满足Tsu和Th,即使逻辑正确,但可能出现逻辑1的实际电压为1.1V的情况。


最后吐槽一下,CSDN的文章分类为啥没有“硬件类”......