1)问题产生:亚稳态
因为不同时钟域,每一个触发器都有其规定的建立(setup)和保持(hold)时间参数, 在这个时间参数内, 输入信号在时钟的上升沿是不允许发生变化的。如果在信号的建立时间中对其进行采样,得到的结果将是不可预知的,即亚稳态。
2)解决方法之一:打二拍
若触发器进入亚稳态的时间可以用可靠性指标MTBF来描述的话,不打二拍时的MTBF为MTBF = e (tr/τ)/ T0fa;
打二拍后MTBF为 MTBF = e(tr/τ)/ T0fa × e(tr/τ) / T0f
评价:代价最小
3) 解决方法之二:结绳法(取clka的前后二个时钟中间时刻读取法)
评价:代价小
4)异步FIFO法:用一种时钟写入数据,而用另外一种时钟读出数据,其中这两个读写时钟是异步的。
评价:代价最大,性能最好,适合大批量数据传递。 |