最近做Flash控制器,用到了缓存,为了方便直接使用QuartusII自带异步fifo,但是在使用过程中却出现这样一个问题,输入数据为递增计数器,但是用SignalTap观察却发现在从输出fifo中输出的数据却是递减的计数器,而usedw出现混乱,当只向fifo中写数据不读时,有时甚至出现usedw先是递增至某一数值(此数值并不固定,每次编译之后都不同)后开始递减,想了好久始终找不到解决办法。最初认为是wrclk与wrreq或rdclk与rdreq配合不好所致,虽然每次改动都有变化,但仍然不稳定。最终发现问题的根源是判断wrusedw应该用wrclk做为敏感时钟,判断rdusedw应用rdclk,而原来用的是全局时钟做为敏感时钟,这样可能会采到wrusedw或rdusedw处于变化过程中的值,造成不稳定,经过这样修改后,程序终于稳定了。
以上的分析只是我自己的想法,不知道是否正确,希望各位高手帮忙分析一下,请指教。
用户349741 2011-5-1 21:33