0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

談一談FIFO的深度

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

前言:

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

引言:

考慮如下的場(chǎng)景,是我們小學(xué)或者初中的時(shí)候?qū)W過(guò)的一個(gè)問(wèn)題:

image.png

場(chǎng)景一:

如上圖所示,假設(shè)入水口的 進(jìn)水量 2m3/h ,出水口的 出水量1m3/h ,假設(shè)水池容量10m3,開(kāi)始的時(shí)候水池沒(méi)有水,水池多久會(huì)滿?

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

上面我們可以得出,對(duì)于進(jìn)水量比出水量多的情況下,無(wú)論水池容量大小是多少, 水池在一些時(shí)間之后會(huì)溢出 。

所以這也反映了,我們?cè)?a href="http://srfitnesspt.com/v/tag/1055/" target="_blank">IC設(shè)計(jì)中,對(duì)于 FIFO這個(gè)蓄水池 ,輸入數(shù)據(jù)的個(gè)數(shù)一直大于輸出數(shù)據(jù)的個(gè)數(shù), FIFO總會(huì)溢出產(chǎn)生問(wèn)題 。

場(chǎng)景二:

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

問(wèn)水池會(huì)溢出嗎?可以設(shè)計(jì)水池的深度讓水池不要溢出嗎?

(1)對(duì)于一天的進(jìn)水量來(lái)說(shuō),2 *8 = 16m3 ,對(duì)于一天的出水量來(lái)說(shuō),2 *2 = 4m3 , 進(jìn)水量 - 出水量 = 12 m3,所以水池會(huì)溢出。

(2)因?yàn)?輸入數(shù)據(jù)的個(gè)數(shù)一直大于輸出數(shù)據(jù)的個(gè)數(shù) (在當(dāng)前的時(shí)間)。所以無(wú)論設(shè)計(jì)多深的深度,水池都會(huì)溢出。

場(chǎng)景三

如上圖所示,假設(shè)入水口的時(shí)鐘是按照 分鐘來(lái)進(jìn)行間隔 ,對(duì)于入水口,每10分鐘流入8m3的水,對(duì)于出水口來(lái)說(shuō),每1.2分鐘流出1m3的水。

問(wèn)水池會(huì)溢出嗎?可以設(shè)計(jì)水池的深度讓水池不要溢出嗎?

(1)對(duì)于入水口來(lái)說(shuō),10分鐘8立方米 所以12分鐘9.6m3,對(duì)于出水口12分鐘10m3。所以通過(guò) 設(shè)定水池的深度可以讓水池不會(huì)溢出 。因?yàn)?strong>總體而言流出的水流是大于流入的水流。

概念1:back to back

對(duì)于入水口來(lái)說(shuō)有一種情況是需要注意的。這種情況如下圖:

image.png

在一次 完整的20分鐘之內(nèi) ,前面兩分鐘沒(méi)有進(jìn)水,最后的兩分鐘沒(méi)有進(jìn)水,進(jìn)水的時(shí)間集中在20分鐘內(nèi)的 連續(xù)16分鐘內(nèi) ,所以這段時(shí)間對(duì)于水池來(lái)說(shuō)壓力最大,因?yàn)樗卦O(shè)計(jì)的深度如果不考慮這個(gè)可能就會(huì)溢出,(這也就是所謂的流(水)量密集)

(2)考慮到概念1再回答場(chǎng)景三的第二個(gè)問(wèn)題:水池的深度應(yīng)該設(shè)計(jì)為:

**[1] **16m3 / 16 min = 進(jìn)水量的效率

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

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

在計(jì)算水池深度我們可以得出 結(jié)論

所謂水池的深度在計(jì)算的時(shí)候,就是進(jìn)水量在背靠背這段時(shí)間內(nèi),進(jìn)水的所有量,減去背靠背這段時(shí)間內(nèi)出水口的出水量,在這背靠背的時(shí)間內(nèi),入水的量減去出水的量,就是內(nèi)部的水池應(yīng)該承受的水量。

正文:

FIFO計(jì)算問(wèn)題:

(1)假設(shè)FIFO的寫(xiě)時(shí)鐘為100MHZ,讀時(shí)鐘為80Mhz,在FIFO輸入側(cè),每100個(gè)寫(xiě)時(shí)鐘,寫(xiě)入80個(gè)數(shù)據(jù),在讀數(shù)據(jù)側(cè),每個(gè)時(shí)鐘讀出一個(gè)數(shù)據(jù),問(wèn)FIFO設(shè)置為多少FIFO不會(huì)溢出??

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

image.png

進(jìn)入FIFO的數(shù)據(jù)量:160個(gè) 消耗的時(shí)間:160 個(gè) 寫(xiě)時(shí)鐘

[2] 在輸入數(shù)據(jù)背靠背的時(shí)間內(nèi),輸出( output 端口輸出的數(shù)據(jù)量

(1)因?yàn)檩斎胼敵龆丝诘臅r(shí)鐘頻率不同,所以先把輸入數(shù)據(jù)背靠背的時(shí)間換算到輸出數(shù)據(jù)端口的時(shí)鐘個(gè)數(shù):(160 *(1/100MHZ) * / * (1/80MHZ)=128讀時(shí)鐘周期

(2)則輸出端口在背靠背輸入的時(shí)間**內(nèi)輸出的數(shù)據(jù):128 *1 = 128個(gè)讀數(shù)據(jù)

[3] 則FIFO的深度為:

160 (輸入) - 128 (這段時(shí)間內(nèi)的輸出) = 32 (內(nèi)部水池FIFO應(yīng)該存的)

(2)假設(shè)FIFO的寫(xiě)時(shí)鐘為wclk,讀時(shí)鐘為rclk,在FIFO輸入側(cè),每B個(gè)寫(xiě)時(shí)鐘,寫(xiě)入A個(gè)數(shù)據(jù),在讀數(shù)據(jù)側(cè),每Y個(gè)時(shí)鐘讀出X個(gè)數(shù)據(jù),問(wèn)FIFO設(shè)置為多少FIFO不會(huì)溢出??

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

進(jìn)入FIFO的數(shù)據(jù)量:2A , 消耗的時(shí)間:2A * (1 / wclk)

**[2] 在輸入數(shù)據(jù)背靠背的時(shí)間內(nèi),輸出( output )端口輸出的數(shù)據(jù)量:

** (1)因?yàn)檩斎胼敵龆丝诘臅r(shí)鐘頻率不同,所以先把輸入數(shù)據(jù)背靠背的時(shí)間換算到輸出數(shù)據(jù)端口的時(shí)鐘個(gè)數(shù):**

讀時(shí)鐘周期個(gè)數(shù) :(2A * (1 / wclk))* / (1 / rclk)
(2)則輸出端口在背靠背輸入的時(shí)間內(nèi)輸出的數(shù)據(jù):

讀的數(shù)據(jù)個(gè)數(shù): (2A* (1 / wclk) / (1 / rclk) ** * (X / Y)

[3] 則FIFO的深度為:

輸入數(shù)據(jù)背靠背時(shí)間內(nèi)的輸入數(shù)據(jù) 減去輸入數(shù)據(jù)背靠背時(shí)間內(nèi)的輸出數(shù)據(jù)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IC設(shè)計(jì)
    +關(guān)注

    關(guān)注

    37

    文章

    1288

    瀏覽量

    103608
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    384

    瀏覽量

    43461
  • 時(shí)鐘源
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    15908
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    求助,F(xiàn)PGA fifo深度不夠怎么辦?

    圖像壓縮之后的數(shù)據(jù)存入fifo,然后經(jīng)過(guò)nrf2401發(fā)送。。但是由于圖片尺寸比較大,導(dǎo)致fifo深度不夠,受限于FPGA芯片尺寸的限制,fifo
    發(fā)表于 05-22 14:34

    談一談大家新穎的思路

    長(zhǎng)期玩電子,腦子都僵化了,大家來(lái)談一談自己有什么新穎有創(chuàng)意的想法。
    發(fā)表于 02-25 16:28

    FIFO深度怎么設(shè)計(jì)

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

    【教程】“最惡劣”的FIFO深度計(jì)算

    FIFO內(nèi)緩存數(shù)據(jù)最多。計(jì)算此時(shí)寫(xiě)入數(shù)據(jù)-該階段讀出數(shù)據(jù)即為FIFO的最小深度?! ?Nwr = 120x = Nwr - Nrd = 120 - 96 = 24.二.為保證數(shù)據(jù)連續(xù)輸出,求讀取前
    發(fā)表于 02-22 20:37

    談一談 MPU6050 姿態(tài)融合

    談一談 MPU6050 姿態(tài)融合
    發(fā)表于 05-05 09:28

    談一談對(duì)FOC的些理解

    FOC入門(mén)談一談我對(duì)FOC的些理解注:其中有些圖片是網(wǎng)上找的,有些是自己做的,作圖水平般,勿噴這是我第
    發(fā)表于 09-01 07:10

    談一談對(duì)穿越頻率的理解

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

    談一談對(duì)穿越頻率的理解

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

    談一談嵌入式開(kāi)發(fā)怎么入門(mén)的

    想要從事嵌入式開(kāi)發(fā),但又不知道怎么入門(mén)的,可以看下,下面我結(jié)合自身實(shí)際來(lái)談一談。前提基礎(chǔ):簡(jiǎn)單的電路、模電、數(shù)電知識(shí),C語(yǔ)言、從51單片機(jī)入手如果有些前提的基礎(chǔ)知識(shí),要上手51單片機(jī)不算難。首先
    發(fā)表于 12-17 08:12

    談一談嵌入式操作系統(tǒng)些需要注意的點(diǎn)

    計(jì)算機(jī)學(xué)院的嵌入式系統(tǒng)實(shí)驗(yàn)不是特別難,首先,連代碼都不需要寫(xiě),主要是需要操作些新的設(shè)備和軟件,但是這些軟件的安裝,設(shè)備的使用上有較多的坑,需要注意。接下來(lái),我就來(lái)談一談些需要注意的點(diǎn)。...
    發(fā)表于 12-23 08:27

    談一談DALI的具體應(yīng)用

    今天我們來(lái)談一談 DALI 的具體應(yīng)用, 最主要的是 DALI 控制裝置中的調(diào)光驅(qū)動(dòng)電源的使用場(chǎng)景, 比如 DT6 和 DT8 產(chǎn)品(參考文章 大力哥 DALI - D...
    發(fā)表于 12-27 08:32

    LabVIEW FPGA模塊實(shí)現(xiàn)FIFO深度設(shè)定

    為了解決基于LabVIEWFPGA模塊的DMAFIFO深度設(shè)定不當(dāng)帶來(lái)的數(shù)據(jù)不連續(xù)問(wèn)題,結(jié)合LabVIEWFPGA的編程特點(diǎn)和DMA FIFO的工作原理,提出了種設(shè)定 FIFO
    發(fā)表于 09-26 13:45 ?7287次閱讀
    LabVIEW FPGA模塊實(shí)現(xiàn)<b class='flag-5'>FIFO</b><b class='flag-5'>深度</b>設(shè)定

    基于LabVIEW FPGA模塊程序設(shè)計(jì)特點(diǎn)的FIFO深度設(shè)定詳解

    為了解決基于LabVIEWFPGA模塊的DMAFIFO深度設(shè)定不當(dāng)帶來(lái)的數(shù)據(jù)不連續(xù)問(wèn)題,結(jié)合LabVIEWFPGA的編程特點(diǎn)和DMA FIFO的工作原理,提出了種設(shè)定FIFO
    發(fā)表于 01-04 14:25 ?4640次閱讀
    基于LabVIEW FPGA模塊程序設(shè)計(jì)特點(diǎn)的<b class='flag-5'>FIFO</b><b class='flag-5'>深度</b>設(shè)定詳解

    FIFO最小深度計(jì)算的方法

    由于平時(shí)我們工作中,FIFO都是直接調(diào)用IP核,對(duì)于FIFO深度選擇并沒(méi)有很在意,而在筆試面試過(guò)程中,經(jīng)常被問(wèn)及的問(wèn)題之就是如何計(jì)算FIFO
    的頭像 發(fā)表于 07-03 17:25 ?2655次閱讀

    談一談PCB翹曲度的標(biāo)準(zhǔn)以及如何測(cè)量

    談一談PCB翹曲度的標(biāo)準(zhǔn)以及如何測(cè)量
    的頭像 發(fā)表于 11-27 17:28 ?4496次閱讀
    <b class='flag-5'>談一談</b>PCB翹曲度的標(biāo)準(zhǔn)以及如何測(cè)量