吴忠躺衫网络科技有限公司

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

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

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

異步fifo詳解

h1654155355.6033 ? 來源:未知 ? 作者:朱常 ? 2022-12-12 14:17 ? 次閱讀

異步fifo詳解

一. 什么是異步FIFO

FIFO即First in First out的英文簡稱,是一種先進(jìn)先出的數(shù)據(jù)緩存器,與普通存儲器的區(qū)別在于沒有外部讀寫的地址線,缺點是只能順序的讀取和寫入數(shù)據(jù)(對于大型數(shù)據(jù)存儲,在性能上必然緩慢),其數(shù)據(jù)地址是由內(nèi)部讀寫指針自動加一完成的,不能像普通的存儲器一樣,由地址線決定讀取或者寫入某個特定地址的數(shù)據(jù),按讀寫是否為相同時鐘域分為同步和異步FIFO,這里主要介紹異步FIFO,主要用于跨時鐘域傳輸數(shù)據(jù)。

FIFO是一種數(shù)據(jù)緩沖器,用來實現(xiàn)數(shù)據(jù)先入先出的讀/寫方式。FIFO有一個寫端口和一個讀端口,外部無需使用者控制地址,使用方便。FIFO與普通的Block RAM有一個很明顯的區(qū)別就是使用Block RAM來做數(shù)據(jù)緩存處理,使用者必須自己控制讀和寫地址的管理,必須保證寫的數(shù)據(jù)不把Block RAM中未被讀出的內(nèi)容覆蓋掉從而造成數(shù)據(jù)錯誤,同時保證讀的時候要讀出未被寫入的地址。而采用FIFO時,只需要關(guān)注FIFO控制器給出的空滿狀態(tài)信號即可知道當(dāng)前有沒有錯誤的操作了FIFO,使FIFO的數(shù)據(jù)寫溢出或讀空。

異步FIFO讀寫分別采用相互異步的不同時鐘,使用異步FIFO可以在兩個不同時鐘系統(tǒng)之間快速而方便地傳輸實時數(shù)據(jù)

FIFO的常見參數(shù)

FIFO的寬度:即FIFO一次讀寫操作的數(shù)據(jù)位;

FIFO的深度:指的是FIFO可以存儲多少個N位的數(shù)據(jù)(如果寬度為N)。

滿標(biāo)志:FIFO已滿或?qū)⒁獫M時由FIFO的狀態(tài)電路送出的一個信號,以阻止FIFO的寫操作繼續(xù)向FIFO中寫數(shù)據(jù)而造成溢出(overflow)。

空標(biāo)志:FIFO已空或?qū)⒁諘r由FIFO的狀態(tài)電路送出的一個信號,以阻止FIFO的讀操作繼續(xù)從FIFO中讀出數(shù)據(jù)而造成無效數(shù)據(jù)的讀出(underflow)。

讀時鐘:讀操作所遵循的時鐘,在每個時鐘沿來臨時讀數(shù)據(jù)。

寫時鐘:寫操作所遵循的時鐘,在每個時鐘沿來臨時寫數(shù)據(jù)。

二、設(shè)計原理

2.1結(jié)構(gòu)框圖

如上圖所示的同步模塊synchronize to write clk,其作用是把讀時鐘域的讀指針rd_ptr采集到寫時鐘(wr_clk)域,然后和寫指針wr_ptr進(jìn)行比較從而產(chǎn)生或撤消寫滿標(biāo)志位wr_full;類似地,同步模塊synchronize to read clk的作用是把寫時鐘域的寫指針wr_ptr采集到讀時鐘域,然后和讀指針rd_ptr進(jìn)行比較從而產(chǎn)生或撤消讀空標(biāo)志位rd_empty。

另外還有寫指針wr_ptr和寫滿標(biāo)志位wr_full產(chǎn)生模塊,讀指針rd_ptr和讀空標(biāo)志位rd_empty產(chǎn)生模塊,以及雙端口存儲RAM模塊。

2.2 二進(jìn)制計數(shù)器存在的問題

異步FIFO讀寫指針需要在數(shù)學(xué)上的操作和比較才能產(chǎn)生準(zhǔn)確的空滿標(biāo)志位,但由于讀寫指針屬于不同的時鐘域及讀寫時鐘相位關(guān)系的不確定性,同步模塊采集另一時鐘域的指針時,此指針有可能正處在跳變的過程中,如下圖所示,那么采集到的值很有可能是不期望的值,當(dāng)然,不期望的錯誤結(jié)果也會隨之發(fā)生。

上圖中,rd_ptr2sync 3和4以及4和5之間的中間態(tài)是由于到各寄存器的時鐘rd_clk存在偏差而引起的。二進(jìn)制的遞增操作,在大多數(shù)情況下都會有兩位或者兩以上的bit位在同一個遞增操作內(nèi)發(fā)生變化,但由于實際電路中會存在時鐘偏差和不同的路徑延時,二進(jìn)制計數(shù)器在自增時會不可避免地產(chǎn)生錯誤的中間結(jié)果,如下圖。

由于rd_clk上升沿到達(dá)三寄存器的時間各不相同,這就導(dǎo)致了rd_ptr2sync的值從3’b011跳變3’b100的過程中經(jīng)歷了3’b111和3’b101,直到最后一個時鐘(rd_clk0)沿的到來后rd_ptr2sync才跳變到正確結(jié)果3’b100。中間結(jié)果的持續(xù)的時間雖然相對短暫,但是這些不正確的中間結(jié)果完全有可能被其它時鐘域的同步模塊采集到而產(chǎn)生錯誤的動作,見上圖。

由此可見,要避免中間結(jié)果的產(chǎn)生,其中一個可行的方案就是使被同步模塊采集的數(shù)據(jù)遞變時,每次只有一個bit位發(fā)生改變格雷碼計數(shù)器就是一個不錯的選擇。

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

    關(guān)注

    3

    文章

    389

    瀏覽量

    43855
收藏 人收藏

    評論

    相關(guān)推薦

    FIFO IP核的使用教程

    在數(shù)字設(shè)計中,利用FIFO進(jìn)行數(shù)據(jù)處理是非常普遍的應(yīng)用,例如,實現(xiàn)時鐘域交叉、低延時存儲器緩存、總線位寬調(diào)整等。下圖給出了FIFO生成器支持的一種可能配置。
    的頭像 發(fā)表于 01-03 09:36 ?1528次閱讀
    <b class='flag-5'>FIFO</b> IP核的使用教程

    DAC3482內(nèi)部的FIFO作用是什么?

    我現(xiàn)在正在使用DAC3482芯片,想請教一下其內(nèi)部的FIFO作用是什么? FIFO讀寫指針分別由DATACLK和DACCLK(或其分頻)來驅(qū)動,用于“緩沖”的作用,我有兩種理解: 1.只能緩沖讀寫
    發(fā)表于 12-23 07:06

    FIFO Generator的Xilinx官方手冊

    FIFO作為FPGA崗位求職過程中最常被問到的基礎(chǔ)知識點,也是項目中最常被使用到的IP,其意義是非常重要的。本文基于對FIFO Generator的Xilinx官方手冊的閱讀與總結(jié),匯總主要知識點
    的頭像 發(fā)表于 11-12 10:46 ?710次閱讀
    <b class='flag-5'>FIFO</b> Generator的Xilinx官方手冊

    FIFO的深度應(yīng)該怎么計算

    FIFO是FPGA/IC設(shè)計中經(jīng)常使用到的模塊,它經(jīng)常被用在兩個模塊之間進(jìn)行數(shù)據(jù)的緩存,以避免數(shù)據(jù)在傳輸過程中丟失。同時FIFO也經(jīng)常被用在跨時鐘域處理中。
    的頭像 發(fā)表于 10-25 15:20 ?431次閱讀
    <b class='flag-5'>FIFO</b>的深度應(yīng)該怎么計算

    Efinity FIFO IP仿真問題 -v1

    Efinity目前不支持聯(lián)合仿真,只能通過調(diào)用源文件仿真。 我們生成一個fifo IP命名為fifo_sim 在Deliverables中保留Testbench的選項。 在IP的生成目錄下會有以下
    的頭像 發(fā)表于 10-21 11:41 ?1120次閱讀
    Efinity <b class='flag-5'>FIFO</b> IP仿真問題 -v1

    具有FIFO的雙異步通信元件TL16C552A數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有FIFO的雙異步通信元件TL16C552A數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 06-26 11:28 ?0次下載
    具有<b class='flag-5'>FIFO</b>的雙<b class='flag-5'>異步</b>通信元件TL16C552A數(shù)據(jù)表

    異步永磁電機(jī)工作原理 永磁電機(jī)有異步的嗎

    異步永磁電機(jī)是一種將永磁材料與異步電機(jī)技術(shù)相結(jié)合的新型電機(jī),它具有效率高、結(jié)構(gòu)簡單、體積小、重量輕、維護(hù)方便等優(yōu)點,在工業(yè)、農(nóng)業(yè)、交通運輸?shù)阮I(lǐng)域得到了廣泛應(yīng)用。本文將詳細(xì)介紹異步永磁電機(jī)的工作原理
    的頭像 發(fā)表于 06-13 10:03 ?1156次閱讀

    同步FIFO異步FIFO區(qū)別介紹

    ,并且間隔時間長,也就是突發(fā)寫入。那么通過設(shè)置一定深度的FIFO,可以起到數(shù)據(jù)暫存的功能,且使得后續(xù)處理流程平滑。 時鐘域的隔離:主要用異步FIFO。對于不同時鐘域的數(shù)據(jù)傳輸,可以通過FIFO
    的頭像 發(fā)表于 06-04 14:27 ?1805次閱讀
    同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>區(qū)別介紹

    DMA產(chǎn)生FIFO error interrupt錯誤的原因?

    DMA用于接收采集AD轉(zhuǎn)化數(shù)據(jù),而且AD每間隔50us采集一次,DMA配置成單次模式,并收數(shù)長度50次,未啟用FIFO模式,但是當(dāng)外部中斷非常頻繁時,DMA不知怎么回事,產(chǎn)生了FIFO 錯誤,按道理
    發(fā)表于 05-15 06:34

    關(guān)于同步FIFO異步FIFO的基礎(chǔ)知識總結(jié)

    FIFO是一種先進(jìn)先出數(shù)據(jù)緩存器,它與普通存儲器的區(qū)別是沒有外部讀寫地址線,使用起來非常簡單,缺點是只能順序讀寫,而不能隨機(jī)讀寫。
    的頭像 發(fā)表于 04-09 14:23 ?3434次閱讀
    關(guān)于同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的基礎(chǔ)知識總結(jié)

    FIFO漫談之異步FIFO空滿信號的產(chǎn)生位置

    格雷碼的事聊完了,后面順理成章的就是讀寫通路模塊的設(shè)計。不過在讀寫控制通路之前還要明確下另一個問題,就是空滿信號的產(chǎn)生位置的事情。
    的頭像 發(fā)表于 03-19 13:37 ?740次閱讀
    <b class='flag-5'>FIFO</b>漫談之<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>空滿信號的產(chǎn)生位置

    cy7c68013a slave fifo寫數(shù)據(jù)出現(xiàn)異常的原因有哪些?如何解決?

    我使用68013A和MCU采用Slave Fifo 異步方式進(jìn)行通訊,EP2為AUTOOUT,EP6為AUTOIN,16位?,F(xiàn)在有一個奇怪的現(xiàn)象出現(xiàn),當(dāng)通過mcu發(fā)送0x00 00 ff ff 00
    發(fā)表于 02-29 07:00

    如何清除SPI通信中的TX_FIFO和RX_FIFO?

    你好, 如何清除 SPI通信中的 TX_FIFO 和 RX_FIFO?是否有任何 API 可以清除接收數(shù)據(jù)緩沖區(qū)。
    發(fā)表于 02-27 07:16

    同步級聯(lián)和異步級聯(lián)的區(qū)別 異步級聯(lián)和同步級聯(lián)分別要注意什么

    指與同步級聯(lián)相對應(yīng)的,異步級聯(lián)是一種不同的級聯(lián)方式。在異步級聯(lián)中,級聯(lián)模塊之間不需要等待前一個模塊完全執(zhí)行完畢才能開始執(zhí)行下一個模塊。相反,每個模塊都可以獨立運行,并在完成之后通知下一個模塊開始執(zhí)行
    的頭像 發(fā)表于 02-22 13:40 ?2064次閱讀

    異步FIFO結(jié)構(gòu)設(shè)計

    電子發(fā)燒友網(wǎng)站提供《異步FIFO結(jié)構(gòu)設(shè)計.pdf》資料免費下載
    發(fā)表于 02-06 09:06 ?0次下載
    康乐县| 百家乐赌场国际| 网上百家乐能作弊吗| 威尼斯人娱乐场是真的吗| 色达县| 世嘉百家乐官网的玩法技巧和规则| 百家乐游戏网上投注| 体育博彩网| 百家乐官网网上娱乐场开户注册 | 百家乐庄闲多少| 大发888下载安装| 任我赢百家乐官网自动投注分析系统 | 百乐彩博彩| 三公百家乐官网在线哪里可以| 网上百家乐的玩法技巧和规则| 网络百家乐赌场| 金彩百家乐官网的玩法技巧和规则 | 百家乐官网电子路单破解| 百家乐官网赚水方| 威尼斯人娱乐城地址lm0| 百家乐官网连赢的策略| 百家乐怎么开户| 佛坪县| 百家乐变牌器批发| 平度市| 百家乐2号机器投注技巧| 天祝| 百家乐园云鼎娱乐网| 菲律宾百家乐官网的说法| 泰山百家乐的玩法技巧和规则| 百家乐官网娱乐城新闻| 百家乐输了100万| 百家乐官网轮盘怎么玩| 百家乐赌场技巧论坛| bet365 日博| 疯狂百家乐官网游戏| bet365体育开户| 挖掘百家乐赢钱秘籍| 漳浦县| 新东方百家乐娱乐城| 网络百家乐官网怎样出千|