麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

異步 FIFO 最小深度計算方法及原理分析(轉補)

2019-11-14 12:38:00
字體:
來源:轉載
供稿:網友

異步 FIFO 最小深度計算方法及原理分析(轉補)

計算 FIFO 深度是設計 FIFO 中常遇到的問題。常識告訴我們,當讀速率慢于寫速率時(瞬時速率),FIFO 便可被用作系統中的緩沖元件或隊列。FIFO 的大小取決于讀寫數據的速率,系統的數據速率取決于系統的負載能力,因此為了保證系統性能,我們需要考慮 FIFO 傳輸的最壞情況。所謂最壞的情況就是使得寫速率最大,讀速率最小的時候考慮突發傳輸。


目錄

異步 FIFO 最小深度計算原理異步 FIFO 最小深度常用計算公式讀寫 FIFO 不是同時進行的情況下異步 FIFO 最小深度計算實例系統設計的問題流量平衡參考文檔


異步 FIFO 最小深度計算原理

FIFO 用于緩沖塊數據流,一般用在寫快讀慢突發傳輸的情況,遵循的規則如下:

FIFO深度(寫入速率?讀出速率)=FIFO被填滿時間>數據包傳送時間=寫入最大突發數據量寫入速率

即是確保對FIFO寫數據時不存在 Overflow 。

例1: A/D 采樣率50MHz,DSP 讀 A/D 的速率40MHz,要不丟失地將10萬個采樣數據送入 DSP,在 A/D 在和 DSP 之間至少設置多大容量的FIFO才行? 100,000/50MHz=1/500s=2ms (50MHz?40MHz)?1/500=20k,即是 FIFO 深度。


異步 FIFO 最小深度常用計算公式

這里假設讀寫 FIFO 是可以同時進行的, 寫時鐘頻率 w_clk, 讀時鐘頻率 r_clk, 寫時鐘周期里,每 B 個時鐘周期會有 A 個數據寫入 FIFO, 讀時鐘周期里,每 Y 個時鐘周期會有 X 個數據讀出 FIFO, 則 FIFO 的最小深度的計算公式如下: fifo_depth=burst_length?burst_length?(X/Y)?(r_clk/w_clk) 此公式可從上面原理推導而來。

例2: 如果100個寫時鐘周期可以寫入80個數據,10個讀時鐘可以讀出8個數據。令w_clk=r_clk ,考慮背靠背 (20個clk不發數據+80clk發數據+80clk發數據+20個clk不發數據的200個clk) ,代入公式可計算 FIFO 的深度, fifo_depth = 160-160*80% = 160 - 128 = 32

如果令w_clk=200MHz,改為100個w_clk里寫入40個,r_clk=100MHz,10個r_clk里讀出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?(1/w_clk)]/[Y?(1/r_clk)/X] 其中 [burst_length?(1/w_clk)]表示這個burst的持續時間, [Y?(1/r_clk)/X]表示讀出每個數據所需的時間(即:讀的實際速度)。 兩者相除自然就是這段時間讀出的數據量。顯然burst_length表示這段時間寫入的數據量,兩者的差為 FIFO 中殘留的數據,這個也就是理論上的 FIFO 的最小深度。 實際應用中往往是以半空半滿信號來指示 FIFO 的空滿狀態的,所以實際設計 FIFO 的時候會至少留下一個數據空間的深度裕量。


讀寫 FIFO 不是同時進行的情況下

假如讀寫 FIFO 不是同時進行的,FIFO 深度就是寫數據最大突發個數。


異步 FIFO 最小深度計算實例

例3: 如兩個異步時鐘域數據接口,假如讀寫是同時進行的,一般設置 FIFO 的深度就要對應兩個時鐘以及對應寫最大的突發數據。假設寫時鐘頻率是40MHz,讀時鐘為25MHz,在寫端最大突發寫數據個數為100個數據。對應深度計算:100(1-25/40)=37.5,對應深度設置至少為38。

假如讀寫不是同時的,這就需要設置深度為寫數據最大突發個數,如上例中,對應最大突發個數為100個,則深度設置為100。

例4: 一個8bit寬的異步 FIFO,輸入時鐘為100MHz,輸出時鐘為95MHz,設一個 frame 為4Kbit,且兩個 frame 之間的發送間距足夠大。求FIFO的最小深度? burst_length = 4K/8 = 4*1024/8 = 4096/8 = 512。 因為X和Y的值沒有給出,所以默認為1。 fifo_depth = 512 - 512*(95/100) = 25.6 ,所以fifo_depth最小取值是26 。


系統設計的問題——流量平衡

為了保證輸入數據(負載)全部通過,輸出吞吐量要大于輸入吞吐量;但也不要太大,以免設計過剩。 所以有, (r_clk?X/Y)=(w_clk?A/B) 等式左邊是系統設計吞吐量,右邊是負載流量。

例5: 兩個異步時鐘域數據接口,寫時鐘頻率是19MHz,讀時鐘為20MHz,讀寫是同時進行的,輸入數據不間斷。求FIFO的最小深度? 顯然有, ( r_clk * X/Y ) > ( w_clk * A/B ) 故理論上FIFO的最小深度是1。

聲明:本博文轉自下面鏈接,并做了少許修改和補充。屬于個人學習筆記,歡迎討論!


參考文檔

[1] http://blog.csdn.net/u011412586/article/details/10241585/


上一篇:建最小堆min_heap_sort

下一篇:大數乘法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区国产视频 | 亚洲免费在线视频 | 97伦理 | 男人久久天堂 | 国产剧情在线观看一区二区 | 海外中文字幕在线观看 | japanese末成年free | 九九热这里只有精品8 | 久草在线视频首页 | 狠狠婷婷综合久久久久久妖精 | 久久国产精品免费视频 | 久色视频 | 久久精品无码一区二区日韩av | 92精品国产自产在线 | 黄色片免费看网站 | 深夜影院一级毛片 | 日韩视频―中文字幕 | 久草久视频 | 4399一级成人毛片 | 九九热在线视频观看 | 99国产精品自拍 | 九九热精彩视频 | 香蕉国产在线视频 | 操碰 | 人人舔人人舔 | av成人免费观看 | 成人毛片网站 | 亚洲天堂成人在线 | 一区二区三区视频在线播放 | 成人福利视频导航 | 亚洲精中文字幕二区三区 | 成人做爽爽爽爽免费国产软件 | 九九看片 | 久久国产秒 | 日韩视频网址 | 圆产精品久久久久久久久久久 | 九九热在线视频观看 | 免费看综艺策驰影院 | 亚洲综合视频网 | 亚洲网站一区 | 国产精品av久久久久久网址 |