vivado FIFO的Standard 和 FWFT模式
Standard 模式读操作
对于标准 FIFO 读取操作,在断言读有效后,如果 FIFO 非空,存储在FIFO中的下一个数据被驱动到输出总线(dout)上和VALID标志有效。
下图显示标准模式下的读数据。
当您将至少一个字写入FIFO时,empty被取消,表示数据可供读取。
当rd_en有效时,下一个上升沿时发生读操作。FIFO在dout上输出下一个可用字,VALID有效,表示成功的读操作。
当从FIFO中读取最后一个数据字时,FIFO的empty有效。如果在empty有效的同时继续rd_en有效,则忽略读请求,取消VALID,并underflow有效。
当执行写操作时,FIFO取消empty,允许您恢复有效的读操作,这由VALID的有效和underflow的取消表示。
FWFT模式读操作
FWFT(First-Word Fall-Through)功能提供了在不发出读操作的情况下向前查看FIFO中的下一个可用单词的能力。当FIFO中有数据时,第一个单词会从FIFO中掉落并自动出现在输出总线(dout)上。一旦第一个单词出现在dout上,empty被取消,表示FIFO中有一个或多个可读单词,并且VALID有效,表示dout上存在有效单词。
下图显示了FWFT读取访问。最初,FIFO不为空,下一个可用数据字放置在输出总线(dout)上,并且VALID有效。当您启用rd_en时,rd_clk的下一个上升时钟沿会将下一个数据字放置在dout上。在最后一个数据字放置在dout之后,额外的读取请求会导致dout上的数据无效,如VALID的去使能和empty的使能所示。任何进一步尝试从FIFO中读取都会导致下溢条件。
FWFT(First Word Fall Through)模式与标准读取模式不同,当从FIFO中读取最后一个数据时,FWFT模式下的空标志位被置位。当空标志位被置位时,VALID信号被取消。在标准读取模式下,当空标志位被置位时,VALID信号会在一个时钟周期内被置位。FWFT特性还将FIFO的有效读取深度增加了两个读取字。
FWFT特性在第一次写入空FIFO时,会增加两个时钟周期的延迟,直到空FIFO被写入第一个数据后才会取消空状态。此外,每次写操作都需要相同数量的读操作来清空FIFO。