|
本帖最后由 fpgaw 于 2010-7-6 05:28 编辑
关于异步FIFO的问题:
一般来说异步FIFO有两个独立的读写信号和时钟比如这些信号data,wren,wraddre
ss,rdaddress,wrclock,rdclock,q;data是输入数据,q是输出数据
对于异步FIFO来说,由于读写时钟(wrclock,rdclock)是不同时钟域,所以异步
FIFO控制器里面一般都要把他们同步,比如把rdaddress同步到写时钟(wrclock
)这边以计算FIFO是否被写满,把wraddress同步到读时钟(rdclock)以计算FIF
O是否被读空,而一般的同步的方法是对另一时钟域的信号进行两次采样,比如要
同步到写时钟这边,那么,可用写时钟(wrclock)对rdaddress进行两次采样。
现在的问题就是由于同步问题(对另一时钟域的信号采样两次)那么rdaddress将
会延迟两个写时钟才被使用(用于求FIFO是否已经写满或半空),然而如果在这
两个写时钟的时间里rdaddress已经变化了,那么可能会出现这种情况,其实现在
FIFO已经满了,但控制器还是要往里面塞数据,因为它是根据旧的rdaddress信号
作出反应?
大家讨论一下这个问题是如何解决的,谢谢 |
|