FPGA中FIFO深度的计算
在FPGA中中数据传输的时钟周期有差异时可以使用FIFO作为系统的队列缓冲,其中有写读的速度不一样的,这里我介绍一种写数据的比读数据快的一种情况;
计算写的为100MHz80个数据;读数据是每个时钟沿读一个,求FIFO的最小深度;其中写时钟为100MHz,读时钟为80MHz。
这里计算的FIFO的最小深度就是保存数据在读写没有间隔的情况下,数据不会溢出;
其中示意图如下所示:
其中最坏的情况下背靠背的情况,一次性连着发了160个数据过来;
1、首先计算发160个数据所用的时间为:160*(1/100Mhz);
2、读一个数据用的时间为1/80MHz;
3、写数据所有的时间/读一个数据的时间=在写的时候读取的数据个数;
4、用160-读走的数据个数=FIFO的最小深度;
即FIFO的最小深度为160-(160/100MHz)/(1/80MHz)=32;
最后在某些条件下,FIFO的深度它会要求为2的n次方,(例如计算出FIFO的深度为45,但是由于45不是2的n次方,所以最小的为64);
以上是自我的一次一些总结,不是很全面,大家可以大致看看,理个思路;但是无论怎么变,都是用写入数据-读出的数据;大家可以参考一下这个博主写的,比较全面FIFO深度计算