那曲檬骨新材料有限公司

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

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

3天內不再提示

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

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

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

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

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

打兩拍;

異步雙口 RAM

格雷碼轉換。

01

方法一:打兩拍

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

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

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

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

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
    +關注

    關注

    1630

    文章

    21796

    瀏覽量

    605987
  • 時鐘域
    +關注

    關注

    0

    文章

    52

    瀏覽量

    9573
收藏 人收藏

    評論

    相關推薦

    探索對抗訓練的概率分布偏差:DPA雙概率對齊的通用自適的目標檢測方法

    檢測) 目標檢測作為計算機視覺領域的核心任務,在閉集場景中已經取得了顯著的進展。然而,現有的方法通常假設類別集合是固定的,并依賴于大量的標注數據,這導致它們在處理數據時,特別是在源
    的頭像 發表于 01-15 13:45 ?139次閱讀
    探索對抗訓練的概率分布偏差:DPA雙概率對齊的通用<b class='flag-5'>域</b>自適的目標檢測<b class='flag-5'>方法</b>

    FPGA頻率測量的三種方法

    1、FPGA頻率測量? 頻率測量在電子設計和測量領域中經常用到,因此對頻率測量方法的研究在實際工程應用中具有重要意義。 通常的頻率測量方法種:直接測量法,間接測量法,等精度測量法。
    的頭像 發表于 01-09 09:37 ?185次閱讀
    <b class='flag-5'>FPGA</b>頻率測量的<b class='flag-5'>三種方法</b>

    請問ADC32xx的時鐘FPGA直接輸出嗎?

    大家好,我的ADC32XX 采樣率為125M,將轉換后的數據發送給FPGA,請問ADC32xx的時鐘FPGA直接輸出嗎?FPGA IO口是3.3V的,如果是這樣的話是不是得電平轉換
    發表于 01-02 08:30

    一文解析時鐘傳輸

    采樣到的信號質量!最常用的同步方法是雙級觸發器緩存法,俗稱延遲打拍法。信號從一個時鐘進入另一個時鐘之前,將該信號用兩級觸發器連續緩存兩次
    的頭像 發表于 11-16 11:55 ?721次閱讀
    一文解析<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>傳輸

    一種簡單高效配置FPGA方法

    本文描述了一種簡單高效配置FPGA方法,該方法利用微處理器從串行外圍接口(SPI)閃存配置FPGA設備。這種
    的頭像 發表于 10-24 14:57 ?806次閱讀
    一種簡單高效配置<b class='flag-5'>FPGA</b>的<b class='flag-5'>方法</b>

    FPGA Verilog HDL有什么奇技巧?

    模塊的時序風險:在進行 design partition(設計劃分)時,如果前后兩個模塊時鐘不同,采用 register in(寄存器輸入)可能會引入時鐘
    發表于 09-12 19:10

    FPGA如何消除時鐘抖動

    FPGA(現場可編程門陣列)設計中,消除時鐘抖動是一個關鍵任務,因為時鐘抖動會直接影響系統的時序性能、穩定性和可靠性。以下將詳細闡述FPGA中消除
    的頭像 發表于 08-19 17:58 ?1627次閱讀

    LMH32404 TIA阻輸入信號過大輸出信號畸變怎么解決?

    電流值限制光電二極管電流進入TIA幅值,此方法沒找到合適的器件; 2、在TIA阻輸入端對地加入一個極管或MOS,此極管基極受控阻輸出
    發表于 08-05 06:58

    極限失控的大模型使電力系統面臨的攻擊風險及應對措施

    分析大規模生成式預訓練模型(以下簡稱為大模型)發生極限失控、使電力系統面臨的攻擊風險及相關的應對措施,以期引起業內對這一風險的重視、討論與行動。基于大模型的現狀、發展趨勢以及它與人工智能反叛之間
    發表于 07-22 12:09 ?0次下載

    FPGA異步信號處理方法

    FPGA(現場可編程門陣列)在處理異步信號時,需要特別關注信號的同步化、穩定性以及潛在的亞穩態問題。由于異步信號可能來自不同的時鐘或外部設備,其到達時間和頻率可能不受
    的頭像 發表于 07-17 11:10 ?1277次閱讀

    電路板檢查故障的六大方法有哪些

    在這篇文章中,我們將詳細介紹檢查電路板故障的六大方法。這些方法將幫助大家更有效地診斷和修復電路板問題。以下是電路板檢查故障的六大方法: 視覺檢查 測量電壓和電流 電阻測試 電容測試 信號追蹤
    的頭像 發表于 05-29 14:54 ?7202次閱讀

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

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

    單芯片運行六個操作系統,芯馳科技交卷融合

    關于智能汽車的整車架構如何發展,行業內已經達成了步走的共識。過去汽車行業采用的是分布式的計算架構,目前正邁入更加集成化的融合階段,而對于未來的設想則是實現中央計算。
    的頭像 發表于 05-09 15:17 ?587次閱讀

    FPGA時鐘電路結構原理

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

    介紹一個IC設計錯誤案例:可讀debug寄存器錯誤時鐘

    本文將介紹一個時鐘錯誤的案例如圖所示,phy_status作為一個多bit的phy_clk時鐘的信號,需要輸入csr模塊作為一個可讀狀態寄存器
    的頭像 發表于 03-11 15:56 ?597次閱讀
    介紹一個IC設計錯誤案例:可讀debug寄存器錯誤<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b>
    百家乐官网技术辅助软件| 八大胜百家乐官网的玩法技巧和规则| 百家乐如何投注技巧| 大发888娱乐城 真钱bt| 大发888注册步骤| 百家乐官网发牌的介绍| 百家乐有没有攻略| 棋牌游戏赚钱| 金花百家乐官网的玩法技巧和规则| 發中發百家乐的玩法技巧和规则| 网上百家乐官网赌钱| 百家乐分析下载| 斗地主百家乐的玩法技巧和规则| 豪杰百家乐官网游戏| 百家乐真钱路怎么看| 搏天堂| 百家乐官网线路图分析| 娱乐城官方网| 新葡京百家乐官网的玩法技巧和规则| 永利高娱乐城| 百家乐官网娱乐优惠| 老虎机的规律| 百家乐官网澳门赌| 大发888注册送58网站| 百家乐官网反缆公式| 大发888的微博| 澳门百家乐官网规则| 旧金山百家乐的玩法技巧和规则| 百家乐官网游戏规则玩法| 淘金百家乐的玩法技巧和规则| 信誉百家乐官网博彩网| 澳门百家乐765118118| 圣安娜百家乐官网代理| 百家乐棋牌游| 视频百家乐官网试玩| 大发888真钱下载| 百家乐官网微笑打| 网上现金赌场| AG百家乐大转轮| 百家乐官网食杂店| 大发888真人体育|