关于FIFO
时间:10-02
整理:3721RD
点击:
大家是怎么理解FIFO中的空 满建立条件的?
读指针等于写指针,但是应该搞个格雷码,来区分到底是空了还是满了。
当FIFO进行读但不写时,FIFO有效长度减1,当FIFO进行写但不读时,有效长度加1,如果FIFO又读又写或不读也不写,则有效长度不变。
当FIFO中的有效长度等于0或者等于1并且正在读FIFO时,表示读空了。
如果FIFO不读,并且有效长度等于FIFO的深度时,或者有效长度等于(深度-1),并且正在写(即写使能有效)时,表示写满了。
在实现时,通常用读、写指针表示。
防止真空时的读和真满时的写,至于是否反映真实的空满状态倒不一定
不错不错
经常会浪费一个单元
fifo的高深方式,都是为了时序上更稳定,同频不同相(相位固定与相位随机),不同频的数据源的所有可以时钟相位都要去考虑.
原则上所有的方法都不能完全避免时序上的错误,只能少减少可以接受的水平.
这是因不fifo的计数器,要由两个时钟去控制.通常做成一个组合逻缉电路,这一组合逻辑电路由于两个时钟相位的不确定性,存在毛刺,用格雷码只是减少了这种毛刺,输出标志时,用时钟再同步一次也可能减少毛刺带来的错误.
当然有一种用高时钟同步的做法,可以理论上做到无错误.只不过这种做法实际意思不大.
同步FIFO就不用想那么多。
空就是真的空,满就是真的满,不会浪费。
很高深啊
http://d-waves.blogspot.com/2010/03/fifo.html
FIFO到现在也有点懵
大家理解的都很深