<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

談一談FIFO的深度

冬至子 ? 來源:IC解惑君 ? 作者:木飛 ? 2023-11-28 16:19 ? 次閱讀

前言:

最近加的群里面有些萌新在進行討論FIFO的深度的時候,覺得 FIFO的深度計算比較難以理解 。所以特出漫談FIFO系列,會涉及到FIFO的深度計算、同步/異步FIFO的設計等。

引言:

考慮如下的場景,是我們小學或者初中的時候學過的一個問題:

image.png

場景一:

如上圖所示,假設入水口的 進水量 2m3/h ,出水口的 出水量1m3/h ,假設水池容量10m3,開始的時候水池沒有水,水池多久會滿?

答:水池容量 / (進水量 - 出水量) = 10 /(2 - 1) = 10 h

上面我們可以得出,對于進水量比出水量多的情況下,無論水池容量大小是多少, 水池在一些時間之后會溢出 。

所以這也反映了,我們在IC設計中,對于 FIFO這個蓄水池 ,輸入數據的個數一直大于輸出數據的個數, FIFO總會溢出產生問題 。

場景二:

如上圖所示,假設入水口的 進水量 2m3/h ,出水口的 出水量1m3/h ,但是本場景和場景二不同的地方是:入水口的進水時間是一天24h中的任意8小時進水。出水口是半天12h中的任意2小時出水。

問水池會溢出嗎?可以設計水池的深度讓水池不要溢出嗎?

(1)對于一天的進水量來說,2 *8 = 16m3 ,對于一天的出水量來說,2 *2 = 4m3 , 進水量 - 出水量 = 12 m3,所以水池會溢出。

(2)因為 輸入數據的個數一直大于輸出數據的個數 (在當前的時間)。所以無論設計多深的深度,水池都會溢出。

場景三

如上圖所示,假設入水口的時鐘是按照 分鐘來進行間隔 ,對于入水口,每10分鐘流入8m3的水,對于出水口來說,每1.2分鐘流出1m3的水。

問水池會溢出嗎?可以設計水池的深度讓水池不要溢出嗎?

(1)對于入水口來說,10分鐘8立方米 所以12分鐘9.6m3,對于出水口12分鐘10m3。所以通過 設定水池的深度可以讓水池不會溢出 。因為總體而言流出的水流是大于流入的水流。

概念1:back to back

對于入水口來說有一種情況是需要注意的。這種情況如下圖:

image.png

在一次 完整的20分鐘之內 ,前面兩分鐘沒有進水,最后的兩分鐘沒有進水,進水的時間集中在20分鐘內的 連續16分鐘內 ,所以這段時間對于水池來說壓力最大,因為水池設計的深度如果不考慮這個可能就會溢出,(這也就是所謂的流(水)量密集)

(2)考慮到概念1再回答場景三的第二個問題:水池的深度應該設計為:

**[1] **16m3 / 16 min = 進水量的效率

[2] 1m3 / 1.2min = 出水量的效率

**[3] ** 水池的深度 = (進水量效率 - 出水量效率) * **16 min ** = (16 /6 )m3

在計算水池深度我們可以得出 結論

所謂水池的深度在計算的時候,就是進水量在背靠背這段時間內,進水的所有量,減去背靠背這段時間內出水口的出水量,在這背靠背的時間內,入水的量減去出水的量,就是內部的水池應該承受的水量。

正文:

FIFO計算問題:

(1)假設FIFO的寫時鐘為100MHZ,讀時鐘為80Mhz,在FIFO輸入側,每100個寫時鐘,寫入80個數據,在讀數據側,每個時鐘讀出一個數據,問FIFO設置為多少FIFO不會溢出??

[1] 在輸入數據背靠背的情況下,進入( input**)FIFO的數據量:**

image.png

進入FIFO的數據量:160個 消耗的時間:160 個 寫時鐘

[2] 在輸入數據背靠背的時間內,輸出( output 端口輸出的數據量

(1)因為輸入輸出端口的時鐘頻率不同,所以先把輸入數據背靠背的時間換算到輸出數據端口的時鐘個數:(160 *(1/100MHZ) * / * (1/80MHZ)=128讀時鐘周期

(2)則輸出端口在背靠背輸入的時間**內輸出的數據:128 *1 = 128個讀數據

[3] 則FIFO的深度為:

160 (輸入) - 128 (這段時間內的輸出) = 32 (內部水池FIFO應該存的)

(2)假設FIFO的寫時鐘為wclk,讀時鐘為rclk,在FIFO輸入側,每B個寫時鐘,寫入A個數據,在讀數據側,每Y個時鐘讀出X個數據,問FIFO設置為多少FIFO不會溢出??

[1] 在輸入數據背靠背的情況下,進入( input**)FIFO的數據量:**

進入FIFO的數據量:2A , 消耗的時間:2A * (1 / wclk)

**[2] 在輸入數據背靠背的時間內,輸出( output )端口輸出的數據量:

** (1)因為輸入輸出端口的時鐘頻率不同,所以先把輸入數據背靠背的時間換算到輸出數據端口的時鐘個數:**

讀時鐘周期個數 :(2A * (1 / wclk))* / (1 / rclk)
(2)則輸出端口在背靠背輸入的時間內輸出的數據:

讀的數據個數: (2A* (1 / wclk) / (1 / rclk) ** * (X / Y)

[3] 則FIFO的深度為:

輸入數據背靠背時間內的輸入數據 減去輸入數據背靠背時間內的輸出數據

2A - [(2A * (1 / wclk)) ** / (1 / rclk)] ** * (X / Y)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • IC設計
    +關注

    關注

    37

    文章

    1276

    瀏覽量

    103185
  • fifo
    +關注

    關注

    3

    文章

    371

    瀏覽量

    43150
  • 時鐘源
    +關注

    關注

    0

    文章

    88

    瀏覽量

    15805
收藏 人收藏

    評論

    相關推薦

    求助,FPGA fifo深度不夠怎么辦?

    圖像壓縮之后的數據存入fifo,然后經過nrf2401發送。。但是由于圖片尺寸比較大,導致fifo深度不夠,受限于FPGA芯片尺寸的限制,fifo
    發表于 05-22 14:34

    談一談大家新穎的思路

    長期玩電子,腦子都僵化了,大家來談一談自己有什么新穎有創意的想法。
    發表于 02-25 16:28

    FIFO深度怎么設計

    大家好,我有個設計問題,我有兩個域之間的接口:輸入是50MHz的16位并行數據輸出為500 MHz的1位串行數據,對于這種情況,我需要設計FIFO。任何人都可以幫助我設計FIFO
    發表于 01-10 10:45

    談談FIFO閾值的閾值設置及深度計算

    如何設置5.FIFO深度如何計算6.其他角度了解FIFO深度1.什么是FIFOFIFO是First in First out 的縮寫,
    發表于 02-19 21:09

    【教程】“最惡劣”的FIFO深度計算

    FIFO內緩存數據最多。計算此時寫入數據-該階段讀出數據即為FIFO的最小深度?! ?Nwr = 120x = Nwr - Nrd = 120 - 96 = 24.二.為保證數據連續輸出,求讀取前
    發表于 02-22 20:37

    談一談 MPU6050 姿態融合

    談一談 MPU6050 姿態融合
    發表于 05-05 09:28

    請問FIFO深度是多少?

    嗨,以下條件的FIFO深度是多少?8位并行數據連續出現(即沒有突發長度)寫入和讀取沒有理想的循環。寫頻率= 100MHz讀頻率= 70MHz謝謝娜文G K.
    發表于 05-21 07:45

    談一談對FOC的些理解

    FOC入門談一談我對FOC的些理解注:其中有些圖片是網上找的,有些是自己做的,作圖水平般,勿噴這是我第
    發表于 09-01 07:10

    談一談對穿越頻率的理解

    最近正好研究這方面的內容,所以頂個貼,支持把樓主。樓主從穿越頻率的定義來開宗明義,小弟也談一談對穿越頻率的理解:1)對定義的理解;2)對環路校正時穿越頻率選取原則理的解;3)還有大家在分析Bode
    發表于 10-29 06:06

    談一談對穿越頻率的理解

    最近正好研究這方面的內容,所以頂個貼,支持把樓主。樓主從穿越頻率的定義來開宗明義,小弟也談一談對穿越頻率的理解:1)對定義的理解;2)對環路校正時穿越頻率選取原則理的解;3)還有大家在分析Bode
    發表于 11-17 07:58

    談一談嵌入式開發怎么入門的

    想要從事嵌入式開發,但又不知道怎么入門的,可以看下,下面我結合自身實際來談一談。前提基礎:簡單的電路、模電、數電知識,C語言、從51單片機入手如果有些前提的基礎知識,要上手51單片機不算難。首先
    發表于 12-17 08:12

    談一談嵌入式操作系統些需要注意的點

    計算機學院的嵌入式系統實驗不是特別難,首先,連代碼都不需要寫,主要是需要操作些新的設備和軟件,但是這些軟件的安裝,設備的使用上有較多的坑,需要注意。接下來,我就來談一談些需要注意的點。...
    發表于 12-23 08:27

    談一談DALI的具體應用

    今天我們來談一談 DALI 的具體應用, 最主要的是 DALI 控制裝置中的調光驅動電源的使用場景, 比如 DT6 和 DT8 產品(參考文章 大力哥 DALI - D...
    發表于 12-27 08:32

    LabVIEW FPGA模塊實現FIFO深度設定

    為了解決基于LabVIEWFPGA模塊的DMAFIFO深度設定不當帶來的數據不連續問題,結合LabVIEWFPGA的編程特點和DMA FIFO的工作原理,提出了一種設定 FIFO 深度
    發表于 09-26 13:45 ?7068次閱讀
    LabVIEW FPGA模塊實現<b class='flag-5'>FIFO</b><b class='flag-5'>深度</b>設定

    FIFO最小深度計算的方法

    由于平時我們工作中,FIFO都是直接調用IP核,對于FIFO深度選擇并沒有很在意,而在筆試面試過程中,經常被問及的問題之一就是如何計算FIFO深度
    的頭像 發表于 07-03 17:25 ?2338次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>