环境:配置FULL flag在reset后为0
测试方法:FIFO 设置为IndependentClock Block RAM,depth设置为16。用一个BRAM Controller写FIFO,用另一个BRAM Controller读FIFO。
1. FIFODepth是2的整数次幂,但是实际可用的要减去1,即2^N-1
2. 在初始状态:Almost Empty=1,Empty=1, Full=0。
3. 写入第1个数据6拍以后,Empty变为0。
4. 写入第2个数据6拍以后,Almost Empty 变为0。
5. 写入第15个数据1拍以后,Full 变为1。
6. 读第1个数据6拍后,Full 变为0。
7. 读第14个数据1拍后,Almost Empty变为1。
8. 读第15个数据1拍后,Empty变为1。
9. 读第16个数据,这时FIFO已经为空,返回上次读出的数据。
小结:相比En信号,Flag De-assert错后6拍,assert错后1拍。
本文详细探讨了FIFO深度与FULL flag在不同数据写入与读取操作后的状态变化,包括深度为2的整数次幂时的实际可用容量、初始状态以及数据交互后FULL flag的变化规律。

1万+


被折叠的 条评论
为什么被折叠?



