一、系统复位和fifo复位同时产生时在下一个时钟就写入数据,前两个数据丢失。
从图中可以看出来fifo写使能信号是复位键按下后5ns秒din=1时产生的,但是读完32个数据后,fifo只统计到30个数据,读数据端口也可以看出来读出的第一个数据是3。证明复位键按下后的前45ns的数据并没有写进去。
如果fifo复位键一直赋予无效状态,则可以不丢失写入。即按下复位键需要等45ns才能写数据(这个发现貌似没什么用)
二、First Word Fall Through模式下数据统计不精确。
虽然下图把所有数据都读出来了,但是如果设定wr_data_count == 32时触发rd_en时,即使fifo内数据,32个也无法触发读数据。
下面设定wr_data_count == 32时触发rd_en,且不勾选More Accurate Data Counts
就出现了下面的情况,虽然写入了32个数据,却只统计到30
当勾选上More Accurate Data Counts时,就可以统计到更精准的数据量,从而正确触发。
总结:FIFO工作在First Word Fall Throug模式下时,wr_data_count统计的数会比真实数据少2(据说也有可能少3、4),所以最好勾选上More Accurate Data Counts。