异步fifo的深度,如何确定?
时间:10-02
整理:3721RD
点击:
想设计个异步fifo,异步fifo的深度该如何确定,是随意的嘛?如果不是该怎么计算呢?谢谢指教
其实很简单,
1. 异步时钟下数据的速率匹配:pop rate和push rate在长时间上是均衡的(肯定,否则再深也不行)。那么在某段时间内因为POP和push速率不一样,就需要ASYNC FIFO。这一段时间内的pop和push数量相减,不就是深度吗?
2. 如果是异步时钟数据单纯的跨越时钟域的话,那么要算好两个时钟频率相差多少,不要出现还没pop就已经overrun了(push满了),或者还没push就pop了。就是,关注地址格雷码转变的速率。
不是很懂,能说的而具体点吗?
靠理解吧,不好深入计算,文字不好描述清楚的。
二楼说的一般都是跨时钟区域的做法,基本上添加必要的控制辅助电路,不管深度怎么样都可以的,只不过性能优化的时候可能要求深度
要看应用场合,比如一次突发性数据是多少?读写时钟频率以及fifo两端数据宽度。
如果你的系统层面的速率是匹配的,那么只要保证你的深度不会导致写满/读空就可以了,在这个基础上在增加深度已没有意义了。要计算这个无非就是看你的业务的突发特性。
Thank you very much.
读地址和写地址之间可能最大的差是多少,深度就取稍微大一点,最好2的n次幂
FIFO深度跟你应用相关,满足最极端的情况而不是平均
靠理解吧,不好深入计算,文字不好描述清楚的。
看写入数据的速率和读出数据的速率多少,写快读慢的话,不靠外围控制电路控制的话,再深的fifo也会溢出,反过来会读空
你可以仿真看下读写地址之间的差距最大达到多少
小编说的深度就是每次数据能够存放的数量吧
FIFO深度满足应用的各种条件就OK