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

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

3天內不再提示

揭秘FPGA跨時鐘域處理的三大方法

454398 ? 來源:alpha007 ? 作者:alpha007 ? 2022-12-05 16:41 ? 次閱讀

時鐘域處理是 FPGA 設計中經常遇到的問題,而如何處理好跨時鐘域間的數據,可以說是每個 FPGA 初學者的必修課。如果是還在校生,跨時鐘域處理也是面試中經常常被問到的一個問題。

這里主要介紹三種跨時鐘域處理的方法,這三種方法可以說是 FPGA 界最常用也最實用的方法,這三種方法包含了單 bit 和多 bit 數據的跨時鐘域處理,學會這三招之后,對于 FPGA 相關的跨時鐘域數據處理便可以手到擒來。

這里介紹的三種方法跨時鐘域處理方法如下:

打兩拍;

異步雙口 RAM;

格雷碼轉換。

01

方法一:打兩拍

大家很清楚,處理跨時鐘域的數據有單 bit 和多 bit 之分,而打兩拍的方式常見于處理單 bit 數據的跨時鐘域問題。

打兩拍的方式,其實說白了,就是定義兩級寄存器,對輸入的數據進行延拍。

應該很多人都會問,為什么是打兩拍呢,打一拍、打三拍行不行呢?

先簡單說下兩級寄存器的原理:兩級寄存是一級寄存的平方,兩級并不能完全消除亞穩態危害,但是提高了可靠性減少其發生概率??偟膩碇v,就是一級概率很大,三級改善不大。

data 是時鐘域 1 的數據,需要傳到時鐘域 2(clk)進行處理,寄存器 1 和寄存器 2 使用的時鐘都為 clk。假設在 clk 的上升沿正好采到 data 的跳變沿(從 0 變 1 的上升沿,實際上的數據跳變不可能是瞬時的,所以有短暫的跳變時間),那這時作為寄存器 1 的輸入到底應該是 0 還是 1 呢?這是一個不確定的問題。所以 Q1 的值也不能確定,但至少可以保證,在 clk 的下一個上升沿,Q1 基本可以滿足第二級寄存器的保持時間和建立時間要求,出現亞穩態的概率得到了很大的改善。

如果再加上第三級寄存器,由于第二級寄存器對于亞穩態的處理已經起到了很大的改善作用,第三級寄存器在很大程度上可以說只是對于第二級寄存器的延拍,所以意義是不大的。

02

方法二:異步雙口 RAM

處理多 bit 數據的跨時鐘域,一般采用異步雙口 RAM。假設我們現在有一個信號采集平臺,ADC 芯片提供源同步時鐘 60MHz,ADC 芯片輸出的數據在 60MHz 的時鐘上升沿變化,而 FPGA 內部需要使用 100MHz 的時鐘來處理 ADC 采集到的數據(多 bit)。在這種類似的場景中,我們便可以使用異步雙口 RAM 來做跨時鐘域處理。

先利用 ADC 芯片提供的 60MHz 時鐘將 ADC 輸出的數據寫入異步雙口 RAM,然后使用 100MHz 的時鐘從 RAM 中讀出。對于使用異步雙口 RAM 來處理多 bit 數據的跨時鐘域,相信大家還是可以理解的。當然,在能使用異步雙口 RAM 來處理跨時鐘域的場景中,也可以使用異步 FIFO 來達到同樣的目的。

03

方法三:格雷碼轉換

我們依然繼續使用介紹第二種方法中用到的 ADC 例子,將 ADC 采樣的數據寫入 RAM 時,需要產生 RAM 的寫地址,但我們讀出 RAM 中的數據時,肯定不是一上電就直接讀取,而是要等 RAM 中有 ADC 的數據之后才去讀 RAM。這就需要 100MHz 的時鐘對 RAM 的寫地址進行判斷,當寫地址大于某個值之后再去讀取 RAM。

在這個場景中,其實很多人都是使用直接用 100MHz 的時鐘與 RAM 的寫地址進行打兩拍的方式,但 RAM 的寫地址屬于多 bit,如果單純只是打兩拍,那不一定能確保寫地址數據的每一個 bit 在 100MHz 的時鐘域變化都是同步的,肯定有一個先后順序。如果在低速的環境中不一定會出錯,在高速的環境下就不一定能保證了。所以更為妥當的一種處理方法就是使用格雷碼轉換。

對于格雷碼,相鄰的兩個數間只有一個 bit 是不一樣的(格雷碼,在本文中不作詳細介紹),如果先將 RAM 的寫地址轉為格雷碼,然后再將寫地址的格雷碼進行打兩拍,之后再在 RAM 的讀時鐘域將格雷碼恢復成 10 進制。這種處理就相當于對單 bit 數據的跨時鐘域處理了。

對于格雷碼與十進制互換的代碼,僅提供給大家作參考:

代碼使用的是函數的形式,方便調用,op 表示編碼或者譯碼,WADDRWIDTH 和 RADDRWIDTH 表示位寬。

審核編輯黃昊宇

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

    關注

    1608

    文章

    21358

    瀏覽量

    594354
  • 時鐘域
    +關注

    關注

    0

    文章

    50

    瀏覽量

    9458
收藏 人收藏

    評論

    相關推薦

    基于FPGA的實時邊緣檢測系統設計,Sobel圖像邊緣檢測,FPGA圖像處理

    的 EP4CE6F17C8 型號的 FPGA ,系統整體框圖如圖1所示,主要包括 FPGA 并行運算平臺、攝像頭采集模塊、存儲模塊和顯示模塊,設計時采用自頂向下的設計模式,使用全局復位和時鐘
    發表于 05-24 07:45

    FPGA時鐘電路結構原理

    FPGA 中包含一些全局時鐘資源。以AMD公司近年的主流FPGA為例,這些時鐘資源由CMT(時鐘管理器)產生,包括DCM、PLL和MMCM等
    發表于 04-25 12:58 ?298次閱讀
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>時鐘</b>電路結構原理

    異步電路中的時鐘同步處理方法

    異步電路中的時鐘同步處理方法? 時鐘同步在異步電路中是至關重要的,它確保了電路中的各個部件在正確的時間進行操作,從而使系統能夠正常工作。在本文中,我將介紹一些常見的
    的頭像 發表于 01-16 14:42 ?396次閱讀

    FPGA時鐘的用法

    生成時鐘包括自動生成時鐘(又稱為自動衍生時鐘)和用戶生成時鐘。自動生成時鐘通常由PLL或MMCM生成,也可以由具有分頻功能的
    的頭像 發表于 01-11 09:50 ?749次閱讀
    <b class='flag-5'>FPGA</b>中<b class='flag-5'>時鐘</b>的用法

    FPGA圖像處理方法

    圖像細節。 FPGA 圖像處理方法 1、圖像增強 兩大方法:空間域方法和時間域方法(以后再詳述)
    的頭像 發表于 12-02 13:15 ?682次閱讀

    Xilinx FPGA芯片內部時鐘和復位信號使用方法

    如果FPGA沒有外部時鐘源輸入,可以通過調用STARTUP原語,來使用FPGA芯片內部的時鐘和復位信號,Spartan-6系列內部時鐘源是5
    的頭像 發表于 10-27 11:26 ?1166次閱讀
    Xilinx <b class='flag-5'>FPGA</b>芯片內部<b class='flag-5'>時鐘</b>和復位信號使用<b class='flag-5'>方法</b>

    FPGA處理的優勢有哪些?如何去使用FPGA處理?

    ,但習慣于使用基于處理器的系統進行設計的團隊,仍會避免使用FPGA,因為他們缺乏必要的硬件技能,來將FPGA用作協處理器(圖1)。不熟悉像VHDL和Verilog這樣傳統的硬件設計
    的頭像 發表于 10-21 16:55 ?1603次閱讀
    <b class='flag-5'>FPGA</b>協<b class='flag-5'>處理</b>的優勢有哪些?如何去使用<b class='flag-5'>FPGA</b>協<b class='flag-5'>處理</b>?

    fpga時鐘域通信時,慢時鐘如何讀取快時鐘發送過來的數據?

    域時,由于時鐘頻率不同,所以可能會產生元件的不穩定情況,導致傳輸數據的錯誤。此時我們需要采取一些特殊的措施,來保證跨時鐘域傳輸的正確性。 FPGA時鐘域通信的基本實現
    的頭像 發表于 10-18 15:23 ?698次閱讀

    Xilinx FPGA的GTx的參考時鐘

    本文主要介紹Xilinx FPGA的GTx的參考時鐘。下面就從參考時鐘的模式、參考時鐘的選擇等方面進行介紹。
    發表于 09-15 09:14 ?2750次閱讀
    Xilinx <b class='flag-5'>FPGA</b>的GTx的參考<b class='flag-5'>時鐘</b>

    FPGA的鎖相環PLL給外圍芯片提供時鐘

    景下的時序要求。尤其對于需要高速數據傳輸、信號采集處理等場景的數字信號處理系統而言,FPGA PLL的應用更是至關重要。本文將介紹FPGA鎖相環PLL的基本原理、設計流程、常見問題及解
    的頭像 發表于 09-02 15:12 ?1697次閱讀

    Xilinx 7系列FPGA時鐘結構解析

    通過上一篇文章“時鐘管理技術”,我們了解Xilinx 7系列FPGA主要有全局時鐘、區域時鐘、時鐘管理塊(CMT)。 通過以上
    發表于 08-31 10:44 ?1468次閱讀
    Xilinx 7系列<b class='flag-5'>FPGA</b>的<b class='flag-5'>時鐘</b>結構解析

    關于FPGA設計中多時鐘域和異步信號處理有關的問題

    減少很多與多時鐘域有關的問題,但是由于FPGA外各種系統限制,只使用一個時鐘常常又不現實。FPGA時常需要在兩個不同時鐘頻率系統之間交換數據
    的頭像 發表于 08-23 16:10 ?398次閱讀

    #FPGA FPGA信號異步時鐘處理

    fpga圖像處理
    奔跑的小鑫
    發布于 :2023年07月27日 10:08:04

    FPGA設計中動態時鐘的使用方法

    時鐘是每個 FPGA 設計的核心。如果我們正確地設計時鐘架構、沒有 CDC 問題并正確進行約束設計,就可以減少與工具斗爭的時間。
    發表于 07-12 11:17 ?925次閱讀
    <b class='flag-5'>FPGA</b>設計中動態<b class='flag-5'>時鐘</b>的使用<b class='flag-5'>方法</b>

    高級FPGA設計技巧!多時鐘和異步信號處理解決方案

    減少很多與多時鐘有關的問題,但是由于FPGA外各種系統限制,只使用一個時鐘常常又不現實。FPGA時常需要在兩個不同
    發表于 06-02 14:26
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>