標題FIFO設計中的深度計算

2021-09-25 12:22:31 字數 975 閱讀 4952

寫時鐘頻率 w_clk,

讀時鐘頻率 r_clk,

寫時鐘週期裡,每b個時鐘週期會有a個資料寫入fifo

讀時鐘週期裡,每y個時鐘週期會有x個資料讀出fifo

則,fifo的最小深度是?

計算公式如下:

fifo_depth = burst_length - burst_length  *  x/y  *  r_clk/w_clk
例舉說明:

如果100個寫時鐘週期可以寫入80個資料,10個讀時鐘可以讀出8個資料。令wclk=rclk ,考慮背靠背(20個clk不發資料+80clk發資料+80clk發資料+20個clk不發資料的200個clk)代入公式可計算fifo的深度

fifo_depth = 160-160x(80%)=160-128=32

如果令wclk=200mhz,改為100個wclk裡寫入40個,rclk=100mhz,10個rclk裡讀出8個。那麼fifo深度為48

計算如下fifo_depth =80-80x(80%)x(100/200)=80-32=48

注:將 fifo_depth = burst_length - burst_length * (x/y) * (r_clk/w_clk) 作個變形,得到 :fifo_depth = burst_length -(burst_length /w_clk)*[r_clk*(x/y)]其中(burst_length /w_clk) 表示這個burst的持續時間,r_clk*(x/y)表示讀的實際速度。兩者的乘積自然就是這段時間讀出的資料量。顯然burst_length表示這 段時間寫入的資料量,兩者的差為fifo中殘留的資料,這個也就是理論上的fifo的最小深度。實際應用中往往是以半空半滿訊號來指示fifo的空滿狀態 的,所以實際設計fifo的時候會至少留下乙個資料空間深度裕量

FIFO深度計算問題

fifo深度計算公式 fifo depth burst length burst length x y r clk w clk burst length 突發資料個數 x,y 讀時鐘週期裡,每y個時鐘週期會有x個資料讀出fifo r clk 讀時鐘 w clk 寫時鐘 1,同步fifo 對於同步fi...

FIFO最小深度計算

我們通常需要非同步fifo用作兩個不同時鐘域的模組之間的資料緩衝,確保不會丟失資料。通常因為讀速率慢於寫速率,慢的模組來不及讀取的資料要被快取下來,所以說,fifo的工作模式應該是,資料突發 burst 寫入的形式。也就是隔一段時間突發的寫一組資料。如果連續寫入的話,因為讀速率慢於寫速率,fifo肯...

關於FIFO的深度計算

例如 對於同步fifo,每100個cycle可以寫入80個資料,每10個cycle可以讀出8個資料,fifo的深度至少為?參考 首先 要確實fifo的應用場景 並且最終要保證在最極端的情況下,仍不是發生溢位以及空資料的情況。如果資料是連續的資料流,那在頻率不同的非同步fifo中,當寫入頻率大於讀出頻...