异步FIFO问题
时间:10-02
整理:3721RD
点击:
我最近看了cumming的那篇异步FIFO文章,对异步FIFO的控制是通过两个时钟使能信号进行的对吗?然后当FIFO满了以后,不能再往里面写数据,对吧?要是FIFO空了以后,数据不能被读取对吧?不知道我理解的对吗?望大神给点指导。谢谢了!
异步FIFO就像小学时候的一道数学题:一个水库,一边从其他地方抽水进去,一边从水库抽水出去。当水库满了,就不能再抽水进去了,因为已经满了;当水库空了,就不能再抽水出去,因为水库空了。
对,关键就是空满标志的处理
其实满了继续写,或者空了继续读都是可以设置的,在Xilinx FIFO生成选项中可以设置。
一般在逻辑设计中,为避免这种情况,会自己把empty信号加入去控制读信号,防止空了还读或满了再写。
是的啊,就是这样
那控制信号就是时钟使能信号对吧?
那控制信号就是时钟使能信号对吧?
其实控制信号我一般理解为读写使能信号,
不叫时钟使能信号,因为读写使能是在时钟同步下产生的。
时钟使能听起来感觉像门控时钟。
嗯 谢谢了!
那篇文章讲得挺不错,自己做一下仿真,看一下综合出来的电路。会对异步FIFO有更深刻的理解。
FIFO满了以后,read pointer 立刻锁死(enable deactive)
FIFO空了以后,write pointer立刻锁死(enable deactive)
如果要深究的话,full/empty flag的产生都是跨时钟指针比较的,跨时域是有延迟的,也就是说在flag产生的时候其实fifo并没有相应的满或空。
栏目分类
射频专业培训教程推荐