色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

異步FIFO設計原理及應用需要分析

FPGA之家 ? 來源:EETOP ? 作者:EETOP ? 2022-03-09 16:29 ? 次閱讀

一、概述

在大規模ASICFPGA設計中,多時鐘系統往往是不可避免的,這樣就產生了不同時鐘域數據傳輸的問題,其中一個比較好的解決方案就是使用異步FIFO來作不同時鐘域數據傳輸的緩沖區,這樣既可以使相異時鐘域數據傳輸的時序要求變得寬松,也提高了它們之間的傳輸效率。此文內容就是闡述異步FIFO的設計。

二、設計原理

2.1結構框圖

c17db27e-9b7e-11ec-952b-dac502259ad0.jpg

Fig. 2.1.1

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

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

2.2二進制計數器存在的問題

異步FIFO讀寫指針需要在數學上的操作和比較才能產生準確的空滿標志位,但由于讀寫指針屬于不同的時鐘域及讀寫時鐘相位關系的不確定性,同步模塊采集另一時鐘域的指針時,此指針有可能正處在跳變的過程中,如圖Fig.2.2.1所示,那么采集到的值很有可能是不期望的值,當然,不期望的錯誤結果也會隨之發生。

c18f4822-9b7e-11ec-952b-dac502259ad0.png

Fig. 2.2.1

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

c1a3c6f8-9b7e-11ec-952b-dac502259ad0.jpg

Fig.2.2.2

上圖是Fig.2.2.1的電路原型以及局部波形的放大。由于rd_clk上升沿到達三寄存器的時間各不相同,這就導致了rd_ptr2sync的值從3’b011跳變3’b100的過程中經歷了3’b111和3’b101,直到最后一個時鐘(rd_clk0)沿的到來后rd_ptr2sync才跳變到正確結果3’b100。中間結果的持續的時間雖然相對短暫,但是這些不正確的中間結果完全有可能被其它時鐘域的同步模塊采集到而產生錯誤的動作,見上圖。

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

2.3格雷碼計數器的實現

2.3.1格雷碼的表現形式

格雷碼一個最大的特點就是在遞增或遞減的過程中,每次只變化一位,這是它最大的優點。同時它也有自己的局限性,那就是循環計數深度必須是2的n次冪,否則就失去了每次只變化一位的特性。深度為16的二進制及格雷碼遞變表如下:

Binary Gray

0 0000 0000

1 0001 0001

2 0010 0011

3 0011 0010

4 0100 0110

5 0101 0111

6 0110 0101

7 0111 0100

8 1000 1100

9 1001 1101

10 1010 1111

11 1011 1110

12 1100 1010

13 1101 1011

14 1110 1001

15 1111 1000

0 0000 0000

2.3.2二進制和格雷碼的相互轉換

1、二進制到格雷碼:

c1b81c16-9b7e-11ec-952b-dac502259ad0.png

2.3.3格雷碼計數器的實現

如下圖fig.2.3.1所示,指向存儲器的地址指針由二進制計數器產生,而用于跨時鐘域傳播的格雷碼指針是對二進制指針的實時轉換并用寄存器采集獲得的。這里要注意的是,計數器的位寬比實際所需的位寬要多出一位,這樣做的目的是方便判斷FIFO的空或滿,這一點下文中將會介紹。

c1ca2d7a-9b7e-11ec-952b-dac502259ad0.png

Fig.2.3.1格雷碼計數器結構圖

2.4空滿標志位的產生

異步FIFO最核心的部分就是精確產生空滿標志位,這直接關系到設計的成敗。本文采用比較讀寫指針來判斷FIFO的空滿,如果FIFO的深度是n-1位線所能訪問到的地址空間,那么此設計所要用的指針位寬就比實際多出一位,也就是n位,這樣做有助于判斷FIFO是空還是滿。

2.4.1讀空標志位的產生

當讀地址rd_ptr趕上寫地址wr_ptr,也就是rd_ptr完全等于wr_ptr時,可以斷定,FIFO里的數據已被讀空,而且只有在兩種情況下,FIFO才會為空:第一種是系統復位,讀寫指針全部清零;另一種情況是在FIFO不為空時,數據讀出的速率快于數據寫入的速率,讀地址趕上寫地址時FIFO為空。空標志位的產生需要在讀時鐘域里完成,這樣不至于發生FIFO已經為空了而空標志位還沒有產生的情況,但是可能會發生FIFO里已經有數據了而空標志位還沒有撤消的情況,不過就算是在最壞情況下,空標志位撤消的滯后也只有三個時鐘周期,這個問題不會引起傳輸錯誤;還有一種情況就是空標志比較邏輯檢測到讀地址和寫地址相同后緊接著系統產生了寫操作,寫地址增加,FIFO內有了新數據,由于同步模塊的滯后性,用于比較的寫地址不能及時更新,這樣,一個本不應該有的空標志信號就產生了,不過這種情況也不會導致錯誤的發生,像這種FIFO非空而產生空標志信號的情況稱為“虛空”。

c1ddea72-9b7e-11ec-952b-dac502259ad0.png

Fig. 2.4.1.1空標志產生邏輯

如圖Fig. 2.4.1.1空標志產生邏輯,寫時鐘域的寫指針通過兩級寄存被同步到讀時鐘域之后與讀指針進行比較,如果完全相等,則會產生空標志信號;同步模塊用兩級寄存器來實現是為了消除可能的亞穩態,正如前面所述,因為wr_ptr_gray是用格雷碼實現的,即使同步模塊是在wr_ptr_gray跳變的時刻進行采集,其采集到的所有可能值也只有兩個,一個是跳變之前的值,一個是跳變之后的值,它們只相差1,最壞情況也只是產生了“虛空”信號,而這不會引起錯誤傳輸。

c1f02b92-9b7e-11ec-952b-dac502259ad0.jpg

Fig. 2.4.1.2空標志產生時序

2.4.2寫滿標志位的產生

和讀空標志位產生機制一樣,寫滿標志位也是通過比較讀寫地址產生的。讀寫指針的關系就好比A,B兩個田徑運動員在一環形跑道上賽跑一樣,當B運動員領先A并整整超前一圈時,A,B兩人的地點相同,此種情況對應于讀寫指針指向了同一地址,但寫指針超前整整一圈,FIFO被寫滿。和讀空標志產生一樣,寫滿標志也是讀寫指針相同時產生。但是如果地址的寬度和FIFO實際深度所需的寬度相等,某一時刻讀寫地址相同了,那FIFO是空還是滿就難以判斷了。所以讀寫指針需要增加一位來標記寫地址是否超前讀地址(在系統正確工作的前提下,讀地址不可能超前于寫地址),比如FIFO的深度為8,我們需要用寬度為4的指針。

c20a0ca6-9b7e-11ec-952b-dac502259ad0.png

Fig. 2.4.2.1格雷碼指針和存儲空間的映射關系

如果讀指針的最高位為0,而寫指針的最高位為1,說明寫指針超前于讀指針,這時如果讀寫指針指向同一存儲空間,參照Fig. 2.4.2.1 , 則可判斷為FIFO被寫滿。寫滿標志位產生邏輯只需關心格雷碼指針最高位不同(寫超前于讀)且它們指向同一存儲空間的情況,那么怎么通過比較兩格雷碼指針來判斷這種情況的發生呢?首先,最高位相異(因為讀指針不可能超前于寫指針,所以只可能是寫指針超前于讀指針);其次,如果把最高位為1的所有格雷碼指針的次高位均取反后,除去最高位不看,則指向同一存儲空間的兩指針相同,從而得出第二個條件是:次高也相異。

c218dbdc-9b7e-11ec-952b-dac502259ad0.png

Fig. 2.4.2.2寫滿標志位產生邏輯

三、總結

前文講述了異步FIFO的應用需要、實現原理,并重點闡述了空滿標志信號的產生方法以及可能會發生的“虛空”和“虛滿”現象。理解了這些關鍵信號的產生原理,設計一個異步FIFO也就不難了。


審核編輯:郭婷

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

    關注

    1643

    文章

    21944

    瀏覽量

    613369
  • asic
    +關注

    關注

    34

    文章

    1242

    瀏覽量

    121906
  • fifo
    +關注

    關注

    3

    文章

    400

    瀏覽量

    44566

原文標題:異步FIFO設計(非常詳細,圖文并茂,值得一看!)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    基于FPGA的異步FIFO的實現

    大家好,又到了每日學習的時間了,今天我們來聊一聊基于FPGA的異步FIFO的實現。 一、FIFO簡介 FIFO是英文First In First Out 的縮寫,是一種先進先出的數據緩
    的頭像 發表于 06-21 11:15 ?6762次閱讀
    基于FPGA的<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的實現

    關于異步fifo的安全問題:

    異步fifo的報空過程,可以用火車票比喻。車站在還有幾張票的情況下,顯示票已經售空。這并不會發生混亂,但如果有緊急情況或領導需要,還有這幾張票緩沖。
    發表于 03-05 10:40

    異步FIFO結構及FPGA設計

    首先介紹異步FIFO 的概念、應用及其結構,然后分析實現異步FIFO的難點問題及其解決辦法; 在傳統設計的基礎上提出一種新穎的電路結構并對其
    發表于 04-16 09:25 ?46次下載

    高速異步FIFO的設計與實現

    本文主要研究了用FPGA 芯片內部的EBRSRAM 來實現異步FIFO 設計方案,重點闡述了異步FIFO 的標志信號——空/滿狀態的設計思路,并且用VHDL 語言實現,最后進行了仿真驗
    發表于 01-13 17:11 ?40次下載

    Camera Link接口的異步FIFO設計與實現

    介紹了異步FIFO在Camera Link接口中的應用,將Camera Link接口中的幀有效信號FVAL和行有效信號LVAL引入到異步FIFO的設計中。
    發表于 07-28 16:08 ?32次下載

    異步FIFO結構及FPGA設計

    摘要:首先介紹異步FIFO的概念、應用及其結構,然后分析實現異步FIFO的難點問題及其解決辦法;在傳統設計的基礎上提出一種新穎的電路結構并對
    發表于 06-20 12:46 ?3968次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>結構及FPGA設計

    異步FIFO結構及FPGA設計

    異步FIFO結構及FPGA設計,解決亞穩態的問題
    發表于 11-10 15:21 ?4次下載

    異步FIFO的設計分析及詳細代碼

    本文首先對異步 FIFO 設計的重點難點進行分析,最后給出詳細代碼。 一、FIFO簡單講解 FIFO的本質是RAM, 先進先出 重要參數:
    發表于 11-15 12:52 ?8879次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的設計<b class='flag-5'>分析</b>及詳細代碼

    基于FPGA的異步FIFO設計方法詳解

    在現代電路設計中,一個系統往往包含了多個時鐘,如何在異步時鐘間傳遞數據成為一個很重要的問題,而使用異步FIFO可以有效地解決這個問題。異步FIFO
    發表于 07-17 08:33 ?8592次閱讀
    基于FPGA的<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>設計方法詳解

    基于異步FIFO結構原理

    問題一種簡便、快捷的解決方案。使用異步FIFO可以在兩個不同時鐘系統之間快速而方便地傳輸實時數據。在網絡接口、圖像處理等方面,異步FIFO得到了廣泛的應用。
    發表于 02-07 14:22 ?0次下載
    基于<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>結構原理

    異步FIFO之Verilog代碼實現案例

    同步FIFO的意思是說FIFO的讀寫時鐘是同一個時鐘,不同于異步FIFO異步FIFO的讀寫時鐘
    發表于 11-01 09:58 ?1915次閱讀

    異步fifo詳解

    異步fifo詳解 一. 什么是異步FIFO FIFO即First in First out的英文簡稱,是一種先進先出的數據緩存器,與普通存儲
    的頭像 發表于 12-12 14:17 ?4686次閱讀

    FIFO設計—異步FIFO

    異步FIFO主要由五部分組成:寫控制端、讀控制端、FIFO Memory和兩個時鐘同步端
    發表于 05-26 16:17 ?1793次閱讀
    <b class='flag-5'>FIFO</b>設計—<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>

    同步FIFO異步FIFO的區別 同步FIFO異步FIFO各在什么情況下應用

    同步FIFO異步FIFO的區別 同步FIFO異步FIFO各在什么情況下應用? 1. 同步
    的頭像 發表于 10-18 15:23 ?2010次閱讀

    請問異步FIFO的溢出操作時怎么樣判斷的?

    。 當異步FIFO溢出時,通常是指FIFO寫滿了數據,但是接下來還有新的數據要寫入,此時就需要進行溢出操作了。判斷異步
    的頭像 發表于 10-18 15:28 ?2756次閱讀
    主站蜘蛛池模板: 狠狠色综合7777久夜色撩人 | 秋霞网站一级一片 | 伦理片在线线手机版韩国免费观看 | 人成午夜免费视频 | abp-146| 精品美女国产互换人妻 | 和尚轮流澡到高潮H | 嘟嘟嘟在线视频免费观看高清中文 | 国产普通话精品久久 | 在线观看黄色小说 | 午夜婷婷精品午夜无码A片影院 | 狠狠撸亚洲视频 | 狠狠狠的在啪线香蕉 | 老鸭窝毛片 | 三级成年网站在线观看 | 亚洲欧美日韩另类精品一区二区三区 | 云南14学生真实初次破初视频 | 色欲国产麻豆一精品一AV一免费 | 午夜dj影院视频观看 | 免费高清在线影片一区 | 国产成人教育视频在线观看 | 任你懆视频 这里只有精品 人与人特黄一级 | 久久午夜伦理 | 国产真实女人一级毛片 | 东京热一本无码av | 中文字幕亚洲无线码一区 | 色综合久久网女同蕾丝边 | 久久亚洲精品AV成人无码 | 精品国产乱码久久久人妻 | 精品国产5g影院天天爽 | 狠狠色狠狠色综合曰曰 | 69亞洲亂人倫AV精品發布 | 高挑人妻无奈张开腿 | 亚洲AV久久无码精品九号 | 国产在线精品一区二区在线看 | 国产网红主播精品福利大秀专区 | 在线播放免费人成视频 | 午夜伦理:伦理片 | 久久亚洲精品成人综合 | 天天综合网网欲色 | 欧美激情一区二区三区四区 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品