在一个FPGA系统中,如果有多个时钟,那么数据间的同步就是一个很大的问题。为了解决这一个问题,我们就可以使用FIFO。FIFO就可以缓存不同系统之间的数据。
FIFO可以分成同步FIFO和异步FIFO。同步FIFO就是指读和写是同一个时钟的,异步的就不是一个时钟周期的。FIFO就可以应用于不是同一个时钟域内但是数据吞吐量不同。异步FIFO就是时钟不同,相比之下其实就是同步FIFO只有一个时钟,异步时钟有两个时钟。
更详细的图为:
FIFO的空满逻辑逻辑的检测:难点在于异步时钟域的信号要准确同步到本地时钟而不产生毛刺,以及亚稳态问题。
为了消除亚稳态,可以对异步时钟信号进行连续两次的采样,那么亚稳态就会降到接近于0。