衡阳派盒市场营销有限公司

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

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

3天內不再提示

異步FIFO設計方案詳解 異步FIFO設計的難點在哪里

電子設計 ? 作者:工程師飛燕 ? 2018-09-10 10:06 ? 次閱讀

無論是數據通訊或者SOC(包括FPGA或者ASIC設計)設計,跨時鐘域(clock domain crossing)處理都是一件讓人很頭疼的事情,無論是在設計的前端或者步入設計的后端,都沒有很好的工具去做保證,只能靠設計人員的經驗進行最大的保證,然而這個問題如果處理不好,你的整個設計可能就完全報廢,而最怕的是你的設計時好時壞,有時穩定,有時出錯,這個時候你甚至很難進行定位(尤其是上了FPGA開發板或者芯片已經tapout了)。

一般而言,處理跨時鐘域的方法有這么幾種(大家在網上也都能找到資料,這些資料大都來自幾篇經典的論文,中文方面的資料大都是翻譯過著理解這幾篇論文而來):少量的數據用邊沿檢測電路,或者脈沖檢測電路,或者電平檢測電路,或者兩級觸發器;比較多的數據時用異步FIFO。

本文側重講解本人對異步FIFO的深入理解,講解兩種經典的異步FIFO的設計方案,這兩種方案來自一篇文章《simulation and synthesis techniques for asynchronous FIFO design》,大家可自行下載,設計思路這篇文章里面介紹的很詳細,解釋的也很出色,我更多的是談談我的部分理解。

1、異步FIFO設計的難點在哪里

1)寫地址和讀地址處于不同的時鐘域,如何比對寫地址和讀地址才能正確的產生空滿信號

2)當讀寫地址相同時,究竟是讀空了還是寫滿了(因為存在你追我趕的情況,類似于一個圓環)。

2、處理思路

1)對于難點1大家自然想到采用同步處理的方式,具體為將寫地址或者讀地址同步(例如利用兩級觸發器)到對方的時鐘域中,在相同的時鐘域中進行地址的比對,但是由于寫地址和讀地址很多時候并不止1bit,同時進行同步處理會增大錯誤的概率(如地址按0111->1000跳變,此時4bit都在變化,DFF進行同步時就很容易出錯),因而可以先將地址(二進制的)轉換為格雷碼(相鄰數據之間只有一個bit在變化),然后再進行同步,最后進行對比,這樣會大大減少錯誤的概率。

2)對于難點2可以在地址前面添加1bit用于標志位進行區分,例如復位時,讀寫地址的標志位都是0,如果寫完1輪而開始新的一輪時就將寫地址的標志位換為1(讀也同樣道理變換),這樣可以通過判斷標志位加上對比地址判斷是空還是滿,具體為當讀寫地址的標志位相同讀寫地址相同時為讀空,具體為當讀寫地址的標志位不同讀寫地址相同時為寫滿;另外也可以利用格雷碼的最高兩位00->01->10->11進行相位的區分,具體參考我給出的文章或者網絡資料,其實本質上和上面的是一個道理。

3、經典FIFO設計方案的解讀

1)同步讀寫地址(經格雷碼轉換后)到對方的時鐘域

相比于直接同步二信號進制地址(先用握手,然后同步二進制地址)好處是格雷碼相鄰數據之間只有一個bit在變化,而二進制由于寫地址和讀地址很多時候并不止1bit,同時進行同步處理會增大錯誤的概率(如地址按0111->1000跳變,此時4bit都在變化,DFF進行同步時就很容易出錯);利用格雷碼進行同步,即使發生同步的時出錯也不會造成overrun和underrun的情況(因為同步后的數據必定小于等于同步前的數據,即只可能1被同步為0,而不可能0被同步為1),例如當前的讀地址到了6,寫地址到了8,地址8經過同步后出錯而變成了6,這時會出現地址相同而判斷為讀空,不過沒關系,讀空則不讀,至少不會出現underrun的情況,隨著時間的推移地址8總會被采樣到;然而格雷碼也有缺點,只能連續變化遞增或者遞減(如果間隔變化就不符合格雷碼的特點了),所以設計的深度必須是2的n次冪,如果不是的話,需要重新產生編碼格雷碼,否則也會出現間隔變化不符合相鄰之間只有1bit變化的特點。

異步FIFO設計方案詳解 異步FIFO設計的難點在哪里

2)將讀寫地址(經格雷碼轉換后)同步到一個組合邏輯電路中(異步比較)直接比較空滿,然后將空滿信號同步到各自對應的模塊中

異步FIFO設計方案詳解 異步FIFO設計的難點在哪里

雖然這種電路會給fifo帶來不好的狀態,例如已經滿了wfull==1,但是這個時候讀走一個數據,由于同步的延時性,導致這一段時間內wfull==1一直不變(如果沒有同步帶來的延時應該變為0的),rempty也會遇到同樣的問題,但是這種電路不會出現underrun和overrun的情況。

3)2)相比1)可能會節省面積,因為1)同步wptr[n-1:0]和rptr[n-1:0],2)只需要同步afull_n,aempty_n;1)的速率可能較2)會快些,2)中存在異步且組合邏輯比較,不利于時序的優化。

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

    關注

    3

    文章

    389

    瀏覽量

    43857
  • 數據通訊
    +關注

    關注

    0

    文章

    45

    瀏覽量

    11909
收藏 人收藏

    評論

    相關推薦

    基于FPGA器件實現異步FIFO讀寫系統的設計

    是這個問題的一種簡便、快捷的解決方案,使用異步 FIFO 可以在兩個不同時鐘系統之間快速而方便地傳輸實時數據。
    發表于 07-16 17:41 ?1263次閱讀
    基于FPGA器件實現<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>讀寫系統的設計

    異步FIFO的設計難點是什么,怎么解決這些難點?

    異步FIFO介紹異步FIFO的設計難點是什么,怎么解決這些難點?
    發表于 04-08 06:08

    怎么解決異步FIFO設計的難點?

    FIFO的基本結構和工作原理異步FIFO設計中的問題與解決辦法FPGA內部軟異步FIFO設計
    發表于 04-08 07:07

    異步FIFO結構及FPGA設計

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

    高速異步FIFO的設計與實現

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

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

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

    異步FIFO結構及FPGA設計

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

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

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

    異步fifo詳解

    異步fifo詳解 一. 什么是異步FIFO FIFO即First in First out的英文
    的頭像 發表于 12-12 14:17 ?4288次閱讀

    FIFO設計—異步FIFO

    異步FIFO主要由五部分組成:寫控制端、讀控制端、FIFO Memory和兩個時鐘同步端
    發表于 05-26 16:17 ?1583次閱讀
    <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 ?1766次閱讀
    博彩公司评级| 百家乐官网龙虎台布| 百家乐代理博彩正网| 大发888赌场| 百家乐官网网上娱乐城| 百家乐游戏平台有哪些哪家的口碑最好 | 天博百家乐官网娱乐城| 大发888百家乐| 百家乐官网和的几率| 百家乐网上真钱娱乐| 真人百家乐官网皇冠网| 百家乐翻天qvod| 在线体育投注| 百家乐心态研究| 三宝娱乐| 百家乐怎么看门路| e世博官方网站| 百家乐赌博机原理| 金狮娱乐| 乐九百家乐现金网| 同乐城备用| 立博百家乐游戏| 百家乐翻天粤语| 百家乐的玩法视频| 湖北省| 百家乐永利娱乐平台| 百家乐官网娱乐城送分| 百家乐真人玩下载| 昆明百家乐官网装修装潢有限公司| 现场百家乐能赢吗| 百家乐官网游戏软件出售| 百家乐投注外围哪里好| 澳门百家乐官网怎么赢钱| 百家乐代理合作| 试玩百家乐官网的玩法技巧和规则| 大发888大发888m摩卡游戏博彩官方下载| 郑州百家乐官网的玩法技巧和规则| 香港六合彩报| 百家乐软件编辑原理| 真人百家乐官网开户须知| 威尼斯人娱乐城官方网|