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

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

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

如何解決異步FIFO跨時鐘域亞穩(wěn)態(tài)問題?

DIri_ALIFPGA ? 來源:未知 ? 作者:胡薇 ? 2018-09-05 14:29 ? 次閱讀

時鐘域的問題:前一篇已經(jīng)提到要通過比較讀寫指針來判斷產(chǎn)生讀空和寫滿信號,但是讀指針是屬于讀時鐘域的,寫指針是屬于寫時鐘域的,而異步FIFO的讀寫時鐘域不同,是異步的,要是將讀時鐘域的讀指針與寫時鐘域的寫指針不做任何處理直接比較肯定是錯誤的,因此我們需要進行同步處理以后進行比較。

解決方法:兩級寄存器同步 + 格雷碼

同步的過程有兩個:

(1)將寫時鐘域的寫指針同步到讀時鐘域,將同步后的寫指針與讀時鐘域的讀指針進行比較產(chǎn)生讀空信號;

(2)將讀時鐘域的讀指針同步到寫時鐘域,將同步后的讀指針與寫時鐘域的寫指針進行比較產(chǎn)生寫滿信號;

異步FIFO的寫指針和讀指針分屬不同時鐘域,這樣指針在進行同步過程中很容易出錯,比如寫指針在從0111到1000跳變時4位同時改變,這樣讀時鐘在進行寫指針同步后得到的寫指針可能是0000-1111的某個值,一共有2^4個可能的情況,而這些都是不可控制的,你并不能確定會出現(xiàn)哪個值,那出錯的概率非常大,怎么辦呢?到了格雷碼發(fā)揮作用的時候了,而格雷碼的編碼特點是相鄰位每次只有 1 位發(fā)生變化, 這樣在進行指針同步的時候,只有兩種可能出現(xiàn)的情況:

指針同步正確,正是我們所要的;

指針同步出錯,舉例假設(shè)格雷碼寫指針從000->001,將寫指針同步到讀時鐘域同步出錯,出錯的結(jié)果只可能是000->000,因為相鄰位的格雷碼每次只有一位變化,這個出錯結(jié)果實際上也就是寫指針沒有跳變保持不變,我們所關(guān)心的就是這個錯誤會不會導(dǎo)致讀空判斷出錯?答案是不會,最多是讓空標(biāo)志在FIFO不是真正空的時候產(chǎn)生,而不會出現(xiàn)空讀的情形。所以gray碼保證的是同步后的讀寫指針即使在出錯的情形下依然能夠保證FIFO功能的正確性。在同步過程中的亞穩(wěn)態(tài)不可能消除,但是我們只要保證它不會影響我們的正常工作即可。

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

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119193
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    382

    瀏覽量

    43400

原文標(biāo)題:異步FIFO跨時鐘域亞穩(wěn)態(tài)如何解決?

文章出處:【微信號:ALIFPGA,微信公眾號:FPGA極客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA中復(fù)位電路的亞穩(wěn)態(tài)技術(shù)詳解

    只要系統(tǒng)中有異步元件,亞穩(wěn)態(tài)就是無法避免的,亞穩(wěn)態(tài)主要發(fā)生在異步信號檢測、時鐘
    的頭像 發(fā)表于 09-30 17:08 ?3672次閱讀
    FPGA中復(fù)位電路的<b class='flag-5'>亞穩(wěn)態(tài)</b>技術(shù)詳解

    時鐘的解決方案

    在很久之前便陸續(xù)談過亞穩(wěn)態(tài)FIFO,復(fù)位的設(shè)計。本次亦安做一個簡單的總結(jié),從宏觀上給大家展示時鐘的解決方案。
    的頭像 發(fā)表于 01-08 09:42 ?713次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>的解決方案

    FPGA中亞穩(wěn)態(tài)——讓你無處可逃

    異步信號檢測、時鐘信號傳輸以及復(fù)位電路等常用設(shè)計中。1.3亞穩(wěn)態(tài)危害由于產(chǎn)生亞穩(wěn)態(tài)后,寄存
    發(fā)表于 01-11 11:49

    FPGA中亞穩(wěn)態(tài)——讓你無處可逃

    產(chǎn)生,我們就要對亞穩(wěn)態(tài)進行消除,常用對亞穩(wěn)態(tài)消除有三種方式:(1) 對異步信號進行同步處理;(2) 采用FIFO
    發(fā)表于 04-25 15:29

    FPGA的亞穩(wěn)態(tài)現(xiàn)象是什么?

    說起亞穩(wěn)態(tài),首先我們先來了解一下什么叫做亞穩(wěn)態(tài)。亞穩(wěn)態(tài)現(xiàn)象:信號在無關(guān)信號或者異步時鐘之間傳輸
    發(fā)表于 09-11 11:52

    在FPGA復(fù)位電路中產(chǎn)生亞穩(wěn)態(tài)的原因

    元件,亞穩(wěn)態(tài)就是無法避免的,亞穩(wěn)態(tài)主要發(fā)生在異步信號檢測、時鐘信號傳輸以及復(fù)位電路等常用設(shè)計
    發(fā)表于 10-19 10:03

    FPGA--中復(fù)位電路產(chǎn)生亞穩(wěn)態(tài)的原因

    的,亞穩(wěn)態(tài)主要發(fā)生在異步信號檢測、時鐘信號傳輸以及復(fù)位電路等常用設(shè)計中。03 亞穩(wěn)態(tài)危害由于
    發(fā)表于 10-22 11:42

    在FPGA中,同步信號、異步信號和亞穩(wěn)態(tài)的理解

    為clk2時鐘異步信號,那么D4信號就有可能出現(xiàn)亞穩(wěn)態(tài)。假設(shè)D4信號出現(xiàn)亞穩(wěn)態(tài)后,恢復(fù)至穩(wěn)態(tài)
    發(fā)表于 02-28 16:38

    今日說“法”:讓FPGA設(shè)計中的亞穩(wěn)態(tài)“無處可逃”

    亞穩(wěn)態(tài)產(chǎn)生,我們就要對亞穩(wěn)態(tài)進行消除,常用對亞穩(wěn)態(tài)消除有三種方式:[tr][tr](1) 對異步信號進行同步處理;[tr][tr](2) 采用FIF
    發(fā)表于 04-27 17:31

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

    異步FIFO結(jié)構(gòu)及FPGA設(shè)計,解決亞穩(wěn)態(tài)的問題
    發(fā)表于 11-10 15:21 ?4次下載

    時序問題常見的時鐘亞穩(wěn)態(tài)問題

    今天寫一下時序問題常見的時鐘亞穩(wěn)態(tài)問題。 先說明一下亞穩(wěn)態(tài)問題: D觸發(fā)器有個明顯的特征就是建立時間(setup time)和保持時間
    的頭像 發(fā)表于 06-18 15:28 ?2908次閱讀

    Verilog電路設(shè)計之單bit時鐘同步和異步FIFO

    FIFO用于為匹配讀寫速度而設(shè)置的數(shù)據(jù)緩沖buffer,當(dāng)讀寫時鐘異步時,就是異步FIFO。多bit的數(shù)據(jù)信號,并不是直接從寫
    發(fā)表于 01-01 16:48 ?1197次閱讀

    時鐘類型介紹 同步FIFO異步FIFO的架構(gòu)設(shè)計

    在《時鐘與復(fù)位》一文中已經(jīng)解釋了亞穩(wěn)態(tài)的含義以及亞穩(wěn)態(tài)存在的危害。在單時鐘系統(tǒng)中,亞穩(wěn)態(tài)出現(xiàn)的概率非常低,采用同步設(shè)計基本可以規(guī)避風(fēng)險。但在
    的頭像 發(fā)表于 09-19 09:32 ?2308次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>類型介紹 同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的架構(gòu)設(shè)計

    FPGA設(shè)計中的亞穩(wěn)態(tài)解析

    說起亞穩(wěn)態(tài),首先我們先來了解一下什么叫做亞穩(wěn)態(tài)。亞穩(wěn)態(tài)現(xiàn)象:信號在無關(guān)信號或者異步時鐘之間傳輸
    的頭像 發(fā)表于 09-19 15:18 ?1680次閱讀
    FPGA設(shè)計中的<b class='flag-5'>亞穩(wěn)態(tài)</b>解析

    如何處理時鐘這些基礎(chǔ)問題

    對于數(shù)字設(shè)計人員來講,只要信號從一個時鐘跨越到另一個時鐘,那么就可能發(fā)生亞穩(wěn)態(tài)。我們稱為“
    發(fā)表于 01-08 09:39 ?430次閱讀
    如何處理<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>這些基礎(chǔ)問題