FIFO設計中的深度計算【zz】

FIFO設計中的深度計算:

寫時鐘頻率 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-160*(80%)=160-128=32;

若是令wclk=200mhz,改成100個wclk裏寫入40個,rclk=100mhz,10個rclk裏讀出8個。那麼fifo深度爲48
計算以下fifo_depth =80-80*(80%)*(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的時候會至少留下一個數據空間的深度裕量。設計

相關文章
相關標籤/搜索