<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天內不再提示

處理跨時鐘域(CDC)信號同步的最常見方法

冬至子 ? 來源:IC設計er ? 作者:Fantasy ? 2023-09-20 11:24 ? 次閱讀

時鐘域( Clock Domain Crossing,CDC )通俗地講,就是 模塊之間數據交互時用的不是同一個時鐘進行驅動 ,如下圖所示:左邊的模塊FA由C1驅動,屬于C1時鐘域;右邊的模塊FB由C2驅動,屬于C2時鐘域。

圖片

跨時鐘域信號處理問題,首先要考慮的就是亞穩態問題。

為了使觸發器正常工作,輸入信號和時鐘必須滿足觸發器的建立和保持時間要求。在上面的圖2中,信號A與目標時鐘域C2是異步的,因為C1和C2屬于不同時鐘域。一旦遇到異步信號進入時鐘域,就不太可能滿足建立和保持時序約束,因此觸發器可能以進入亞穩態。在下圖中,FA的輸出信號A變化非常接近C2的時鐘邊緣,因此違反了FB的建立時間要求, 它可能導致目標觸發器FB違反setup或hold時間。輸出信號B可能會振蕩不確定時長。因此輸出是不穩定的,也可能會在C2的下一個時鐘邊緣到達之前穩定到某個值,這種現象被稱為亞穩態。

圖片

如果輸入信號A變化非常接近時鐘C2的上升沿,那么目標觸發器的輸出是亞穩態的。因此,可能最終穩定到信號B1和B2所描述的1或0。

處理跨時鐘域**(CDC)信號同步**的最常見方法之一是使用同步器電路。同步器電路的目的是通過最小化亞穩態的可能性和增加MTBF來保護下游邏輯。其中一個基本的同步器電路是 兩級觸發器同步器 (也稱為2-FF同步器)。

圖片

2-** FF同步器處理跨時鐘域信號同步**

兩級觸發器同步器是一種電路,其中兩個觸發器在目標時鐘域中背靠背連接。如果第一個觸發器由于建立/保持沖突而進入亞穩態,則第二個觸發器會提供足夠的時間讓第一個觸發器脫離亞穩態。從理論上講,當第二個FF對值進行采樣時,第一個FF可能仍處于亞穩態,因此可以對不正確的值進行采樣,使用超過2級FF作為同步器(3或4級FF),可以增加MTBF。

2-FF同步器電路非常適合單比特控制信號的同步 ,其中輸入切換速率小于目標時鐘頻率,換句話說,如果目標時鐘頻率超過源時鐘頻率的1.5倍,則不會丟失數據 。但是,如果源和目標時鐘頻率幾乎相同或目標時鐘頻率較慢,則源必須保持其值穩定,以便目標捕獲它,然后再更改為下一個值。這可以通過 握手時鐘域交叉 (CDC)技術來處理。

圖片

手機制處理跨時鐘域信號同步

在握手技術中,源時鐘域將**“請求”信號**發送到使用 2-FF同步器的目標域。一旦目標域收到請求,它就會向源域發送“ack”信號,該源域使用 2-FF 同步器進行同步。ack 信號向源時鐘域指示目標已收到該值,源時鐘域可以更新其值。握手機制有許多實現版本,但原理保持不變: 同步request和ack信號 。request信號將在總線上指示一個新值即將發送,ack信號將指示可以更新數據總線。

上述機制在接口的帶寬使用方面確實有一個缺點。對于握手機制,數據總線在接收ack信號時無法更新,存在瓶頸,可以使用雙時鐘異步FIFO來解決這個問題。正確設計的FIFO可以增加整個接口的帶寬,同時仍然保持跨時鐘域的可靠通信。

異步FIFO可以被視為數據容器,其中發送方以源時鐘速率將數據寫入,接收器以目標時鐘速率彈出數據。FIFO的深度應該足夠,以便它不能溢出或下溢數據。

圖片

異步FIFO處理跨時鐘域信號同步

時鐘異步FIFO需要用到雙端口SRAM,一個控制寫入指針(數據應在SRAM中寫入的地址)的源代碼控制塊,一個生成讀取指針(應在SRAM中讀取數據的地址)的目標控制塊和二進制到格雷碼編碼器塊以及2-FF同步器電路。指針由各自的控制塊作為循環緩沖區進行管理。但是,要知道何時寫入(FIFO 未滿)和何時讀?。‵IFO 不為空),源時鐘、目標時鐘控制塊需要分別具有讀取和寫入指針信號。將指針傳輸到另一個時鐘域并非易事。由于指針是多位信號,因此直接使用2-FF同步器不是一個好的選擇。因此,兩個指針都通過二進制到格雷碼編碼塊傳遞。這確保了在傳輸值時,只有矢量的一個位從一個時鐘更新到另一個時鐘,從而消除了在時鐘邊沿上同步多位總線的問題。

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

    關注

    14

    文章

    1883

    瀏覽量

    60571
  • 同步器
    +關注

    關注

    1

    文章

    79

    瀏覽量

    14508
  • FIFO存儲
    +關注

    關注

    0

    文章

    103

    瀏覽量

    5904
  • 時鐘驅動器
    +關注

    關注

    0

    文章

    30

    瀏覽量

    13740
  • SRAM存儲器
    +關注

    關注

    0

    文章

    88

    瀏覽量

    13175
收藏 人收藏

    評論

    相關推薦

    FPGA設計中有多個時鐘時如何處理?

    FPGA設計中有多個時鐘時如何處理?時鐘的基本設計方法
    發表于 02-24 15:47

    時鐘為什么要雙寄存器同步

    出現了題目中的時鐘同步問題?怎么辦?十年不變的老難題。為了獲取穩定可靠的異步時鐘送來的
    發表于 08-20 11:32

    如何處理好FPGA設計中時鐘問題?

    第二級寄存器的延拍,所以意義是不大的。02方法二:異步雙口 RAM處理多 bit 數據的時鐘,一般采用異步雙口?RAM。假設我們現在有一
    發表于 09-22 10:24

    探尋FPGA中三種時鐘處理方法

    第二級寄存器的延拍,所以意義是不大的。02方法二:異步雙口 RAM處理多 bit 數據的時鐘,一般采用異步雙口 RAM。假設我們現在有一
    發表于 10-20 09:27

    三種時鐘處理方法

    ,所以意義是不大的?! ?b class='flag-5'>方法二:異步雙口RAM  處理多bit數據的時鐘,一般采用異步雙口RAM。假設我們現在有一個
    發表于 01-08 16:55

    三種FPGA界最常用的時鐘處理法式

    處理方法,這三種方法可以說是FPGA界最常用也最實用的方法,這三種方法包含了單bit和多bit
    發表于 02-21 07:00

    FPGA初學者的必修課:FPGA時鐘處理3大方法

    處理方法,這三種方法可以說是FPGA界最常用也最實用的方法,這三種方法包含了單bit和多bit
    發表于 03-04 09:22

    關于cdc時鐘處理的知識點,不看肯定后悔

    關于cdc時鐘處理的知識點,不看肯定后悔
    發表于 06-21 07:44

    如何處理好FPGA設計中時鐘間的數據

    介紹3種時鐘處理方法,這3種方法可以說是FPGA界最常
    發表于 07-29 06:19

    如何處理時鐘間的數據呢

    時鐘處理是什么意思?如何處理時鐘
    發表于 11-01 07:44

    兩級DFF同步時鐘處理簡析

    異步bus交互(一)— 兩級DFF同步時鐘處理 & 亞穩態處理1.問題產生現在的芯片(比如
    發表于 02-17 06:34

    FPGA時鐘處理簡介

    (10)FPGA時鐘處理1.1 目錄1)目錄2)FPGA簡介3)Verilog HDL簡介4)FPGA
    發表于 02-23 07:47

    IC設計中多時鐘處理的常用方法相關資料推薦

    組來定義策略。在多個時鐘之間傳遞控制信號時,嘗試使用同步器的策略。嘗試使用FIFO和緩存的數據路徑同步器來提高數據完整性?,F在討論重要的
    發表于 06-24 16:54

    看看Stream信號里是如何做時鐘握手的

    邏輯出身的農民工兄弟在面試時總難以避免“時鐘”的拷問,在諸多時鐘
    發表于 07-07 17:25

    光耦隔離的4種常見方法對比

    光耦隔離的4種常見方法對比
    發表于 05-31 11:06 ?13.1w次閱讀
    光耦隔離的4種<b class='flag-5'>常見方法</b>對比
    亚洲欧美日韩精品久久_久久精品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>