FIFO深度計算


  本文設計思想采用明德揚至簡設計法。在使用FPGA設計系統時,常需要利用FIFO進行數據緩存保證數據不丟失,因此計算FIFO深度是至關重要的。FIFO的深度主要取決於“最惡劣”的情況,以下對於兩種最常見的場合進行分析。

1.已知讀寫兩側帶寬及最惡劣情況,求FIFO深度

如:對於異步FIFO,寫時鍾100MHZ,讀時鍾80MHZ。讀寫位寬均為16bit。已知每100個寫周期最多寫入960bit數據,讀側每時鍾讀取一個數據。問:FIFO深度至少為多少?

分析:典型的“背靠背”情況,此時最惡劣的情況是第一次100個寫周期內后60個周期連續寫入60個數據和第二次100個寫周期內前60個周期連續寫入60個數據。故上述最惡劣情況下的連續寫入120個數據后FIFO內緩存數據最多。計算此時寫入數據-該階段讀出數據即為FIFO的最小深度

計算:t = 120*Tw

     Nwr = 120

          Nrd = t/Trd = 120*Twr/Trd = 120*frd/fwr = 120*80/100 = 96

          x = Nwr - Nrd = 120 - 96 = 24.

  由於FIFO深度只能取2的整數次冪,因此最小深度為2^5 = 32.

2.為保證數據連續輸出,求讀取前FIFO內至少緩存數據量

如:異步FIFO,寫入時鍾80MHZ,讀取時鍾100MHZ。數據位寬1byte。寫側連續寫入均為8192B長度的數據包。問:為保證輸出的數據包是連續不間斷,存夠多少數據后才能開始發送?

分析:此場景為寫入一定數據后開始讀取FIFO,那么最惡劣的時刻當然是剛開始讀取的時間點。想要保證輸出連續,則必須滿足:讀取8192B數據期間寫入的數據+已緩存數據 ≥8192B

計算:t = 8192*Trd

          Nrd = 8192

          Nwr = t/Twr = 8192*Trd/Twr = 8192*fwr/frd = 8192*80/100 = 6553.6B

          發送水線x滿足 Nwr +x = 8192 --> x = 8192 - Nwr = 1638.4B

  FIFO深度為2^11 = 2048.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM