国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

異步 FIFO 最小深度計(jì)算方法及原理分析(轉(zhuǎn)補(bǔ))

2019-11-14 11:42:54
字體:
供稿:網(wǎng)友

異步 FIFO 最小深度計(jì)算方法及原理分析(轉(zhuǎn)補(bǔ))

計(jì)算 FIFO 深度是設(shè)計(jì) FIFO 中常遇到的問題。常識(shí)告訴我們,當(dāng)讀速率慢于寫速率時(shí)(瞬時(shí)速率),F(xiàn)IFO 便可被用作系統(tǒng)中的緩沖元件或隊(duì)列。FIFO 的大小取決于讀寫數(shù)據(jù)的速率,系統(tǒng)的數(shù)據(jù)速率取決于系統(tǒng)的負(fù)載能力,因此為了保證系統(tǒng)性能,我們需要考慮 FIFO 傳輸?shù)淖顗那闆r。所謂最壞的情況就是使得寫速率最大,讀速率最小的時(shí)候考慮突發(fā)傳輸。


目錄

異步 FIFO 最小深度計(jì)算原理異步 FIFO 最小深度常用計(jì)算公式讀寫 FIFO 不是同時(shí)進(jìn)行的情況下異步 FIFO 最小深度計(jì)算實(shí)例系統(tǒng)設(shè)計(jì)的問題流量平衡參考文檔


異步 FIFO 最小深度計(jì)算原理

FIFO 用于緩沖塊數(shù)據(jù)流,一般用在寫快讀慢突發(fā)傳輸?shù)那闆r,遵循的規(guī)則如下:

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

即是確保對FIFO寫數(shù)據(jù)時(shí)不存在 Overflow 。

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


異步 FIFO 最小深度常用計(jì)算公式

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

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

如果令w_clk=200MHz,改為100個(gè)w_clk里寫入40個(gè),r_clk=100MHz,10個(gè)r_clk里讀出8個(gè),那么 FIFO 深度為48。計(jì)算如下, fifo_depth = 80 - 80 * 80% * (100/200) = 80 - 32 = 48

注: 將fifo_depth=burst_length?burst_length?(X/Y)?(r_clk/w_clk)作個(gè)變形, 得到 fifo_depth=burst_length?[burst_length?(1/w_clk)]/[Y?(1/r_clk)/X] 其中 [burst_length?(1/w_clk)]表示這個(gè)burst的持續(xù)時(shí)間, [Y?(1/r_clk)/X]表示讀出每個(gè)數(shù)據(jù)所需的時(shí)間(即:讀的實(shí)際速度)。 兩者相除自然就是這段時(shí)間讀出的數(shù)據(jù)量。顯然burst_length表示這段時(shí)間寫入的數(shù)據(jù)量,兩者的差為 FIFO 中殘留的數(shù)據(jù),這個(gè)也就是理論上的 FIFO 的最小深度。 實(shí)際應(yīng)用中往往是以半空半滿信號來指示 FIFO 的空滿狀態(tài)的,所以實(shí)際設(shè)計(jì) FIFO 的時(shí)候會(huì)至少留下一個(gè)數(shù)據(jù)空間的深度裕量。


讀寫 FIFO 不是同時(shí)進(jìn)行的情況下

假如讀寫 FIFO 不是同時(shí)進(jìn)行的,F(xiàn)IFO 深度就是寫數(shù)據(jù)最大突發(fā)個(gè)數(shù)。


異步 FIFO 最小深度計(jì)算實(shí)例

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

假如讀寫不是同時(shí)的,這就需要設(shè)置深度為寫數(shù)據(jù)最大突發(fā)個(gè)數(shù),如上例中,對應(yīng)最大突發(fā)個(gè)數(shù)為100個(gè),則深度設(shè)置為100。

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


系統(tǒng)設(shè)計(jì)的問題——流量平衡

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

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

聲明:本博文轉(zhuǎn)自下面鏈接,并做了少許修改和補(bǔ)充。屬于個(gè)人學(xué)習(xí)筆記,歡迎討論!


參考文檔

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


上一篇:HDU 6011

下一篇:sql的數(shù)據(jù)類型

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 北海市| 仁化县| 鄢陵县| 鹤庆县| 富锦市| 永善县| 沙河市| 嘉兴市| 松潘县| 青铜峡市| 荆门市| 监利县| 凯里市| 禄丰县| 广宁县| 建湖县| 石嘴山市| 永年县| 拜泉县| 乌兰县| 湄潭县| 文安县| 大同县| 舒城县| 二手房| 新民市| 固始县| 汤原县| 昌都县| 东乡| 奎屯市| 工布江达县| 威信县| 比如县| 建始县| 彰化县| 和顺县| 乐东| 合阳县| 平利县| 长垣县|