本系列分为以下部分:
1、FIFO深度计算
2、同步fifo设计
3、fifo与格雷码
计划分三次更新完毕,本次为FIFO深度计算。
FIFO最小深度计算背景
当异步FIFO读写端口的throught-put(吞吐量)不同时,会遇到数据丢失的问题,需要考虑FIFO中的深度问题,即为满足读写流畅不卡顿(数据不丢失)时,FIFO的deepth的最小值。
FIFO主要是用于数据的缓存,用在读慢写快的场景下。异步FIFO读写不同频,选用的FIFO要能够在极端的情况下仍然能够保证数据的不溢出。因此,考虑的前提一般都是读慢写快的情景(写时钟大于读时钟),但需要注意的是,这里的写操作是突发传输,而不能使连续操作。倘若写快读慢的场景下,写数据流是连续的,那再大的FIFO都会有写满的时候,因此无法避免数据的溢出。
当写快读慢时,FIFO便可被用作系统中元件或队列。因此FIFO的大小其实也就暗示了所需缓存数据的容量,该容量取决于读写数据的速率。据统计,系统的数据速率取决于系统的负载能力。因此为了保证FIFO的大小,需要考虑FIFO传输的最坏情况。
所谓最坏情况,就是使得写速率最大,读速率最小;通常是考虑突发传输。
宏观看,整个时间域上,"写数据=读数据",这个是异步FIFO正常工作最基本的要求,是大前提。由于写快读慢,在发送方"突发传输"的发送数据的T内,是很有可能发送方发送数据量<接收方接收的数据量,那么剩下未读取的数据必定需要存储供接收方继续读取并不能丢弃,因此FIFO的深度要能够保证,在这段时间T内,如果发送方未能将接收方的数据发送完毕的话,剩下的数据都是可以存储在FIFO内部而且不会溢出的,那么在发送方停止发送数据的"空闲时隙"内,接收方可以从容地接收剩下来的数据。
FIFO读写同时进行
构造模型:
~~感谢阅读~~周末愉快