時序分析與CDC
非同步FIFO是將對方的指標同步化後使用,因此看到的指標值會舊2~3個週期。這個延遲對full/empty判定的影響,何者正確?
- A只是full或empty的解除會延遲,不會發生溢位,也不會讀取空的FIFO
- Bfull的判定延遲,因此可能寫入過多而使資料溢位
- Cempty的判定延遲,因此可能從空的FIFO讀出資料
查看答案與解析
正確答案:A. 只是full或empty的解除會延遲,不會發生溢位,也不會讀取空的FIFO
寫入端看到的讀取指標是舊值,因此讀取看起來比實際進展得少,FIFO被判斷為比實際更滿。也就是說,真的滿時full一定已經出現,只是出現空位後的解除稍微延遲。讀取端的empty也一樣,只是延後看到新寫入的資料。兩者都偏向安全側(悲觀)運作,因此資料不會損壞,但為了在這段延遲中維持效能,需讓深度留有餘裕。