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

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

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

跨時鐘域電路設(shè)計—單比特信號傳輸

冬至子 ? 來源:數(shù)字IC小站 ? 作者:Eternity233 ? 2023-06-27 14:25 ? 次閱讀
  • 亞穩(wěn)態(tài)

時鐘域(CDC)的應(yīng)從對亞穩(wěn)定性和同步性的基本了解開始。用普通的話來說,亞穩(wěn)定性是指不穩(wěn)定的中間狀態(tài),但是在此狀態(tài)下,任何微小的擾動將導(dǎo)致最終狀態(tài)變?yōu)榉€(wěn)定狀態(tài),但是并不能保證最終的狀態(tài)就是設(shè)計所期待的狀態(tài),換句話就是可能發(fā)生傳輸錯誤。當(dāng)應(yīng)用于數(shù)字電路中的觸發(fā)器時,它表示觸發(fā)器的輸出可能尚未穩(wěn)定,不確定是否能到最終期望值的狀態(tài)。

觸發(fā)器進入亞穩(wěn)態(tài)的一種方法是違反了其建立或保持時間。在異步時鐘域跨越(CDC)中,其中源時鐘和目標(biāo)時鐘沒有頻率關(guān)系,來自源域的信號在驅(qū)動目的域的觸發(fā)器時,無法保證目的域的觸發(fā)器能夠滿足建立時間和保持時間。當(dāng)目的域的觸發(fā)器的輸出變?yōu)閬喎€(wěn)態(tài)并且在必須再次對其輸出進行采樣(由目標(biāo)域中的第二個觸發(fā)器完成)時尚未收斂,則將發(fā)生同步失敗。更糟糕的是,下一個觸發(fā)器也可能變?yōu)閬喎€(wěn)態(tài),從而導(dǎo)致亞穩(wěn)定性在設(shè)計中傳播!

  • 跨時鐘域同步器

同步器是跨時鐘域中設(shè)計的一種常用電路,其目的是把同步失敗的可能性降到最低。我們希望亞穩(wěn)態(tài)在一個同步周期(目標(biāo)時鐘域的時鐘周期)內(nèi)解決,以便我們可以在目標(biāo)時鐘域中使得觸發(fā)器的輸出是安全采樣值。在此我們把同步器的兩次采樣出現(xiàn)問題之間的時間間隔,稱為平均故障間隔時間(MTBF)。

在跨時鐘域(CDC)中出現(xiàn)亞穩(wěn)態(tài)的概率與以下因素成正比:

  1. 目標(biāo)時鐘域的時鐘頻率
  2. 跨時鐘邊界的數(shù)據(jù)傳輸速率

根據(jù)上述因素,我們常用的同步器電路如下:

  • 兩個觸發(fā)器同步器

圖片

最基本的同步器是兩個串聯(lián)的觸發(fā)器,均由目的時鐘域提供時鐘。這個電路稱為兩個觸發(fā)器同步器。如果輸入數(shù)據(jù)的變化非常接近接收時鐘邊沿(在建立/保持時間內(nèi)),則同步器中的第一個觸發(fā)器可能會變?yōu)閬喎€(wěn)態(tài),但是在信號被采樣之前,仍然有一個完整的時鐘使信號變得穩(wěn)定--第二觸發(fā)器。然后,目標(biāo)時鐘域的邏輯使用的是第二個觸發(fā)器的輸出。

兩級觸發(fā)器可防止亞穩(wěn)態(tài)傳播的原理:假設(shè)第一級觸發(fā)器的輸入不滿足其建立/保持時間,它在第一個脈沖沿到來后輸出的數(shù)據(jù)就為亞穩(wěn)態(tài),那么在下一個脈沖沿到來之前,其輸出的亞穩(wěn)態(tài)數(shù)據(jù)在一段恢復(fù)時間后必須穩(wěn)定下來,而且穩(wěn)定的數(shù)據(jù)必須滿足第二級觸發(fā)器的建立時間,如果都滿足了,在下一個脈沖沿到來時,第二級觸發(fā)器將不會出現(xiàn)亞穩(wěn)態(tài),因為其輸入端的數(shù)據(jù)滿足其建立保持時間。同步器有效的條件:第一級觸發(fā)器進入亞穩(wěn)態(tài)后的恢復(fù)時間 + 第二級觸發(fā)器的建立時間 <= 時鐘周期。如果不滿足上述表達式,那么到第二個觸發(fā)器開始,信號仍然可能是亞穩(wěn)態(tài)的。在這種情況下,將發(fā)生同步錯誤,并且設(shè)計可能會發(fā)生故障,但是這種情況是很罕見的。

兩個觸發(fā)器同步器足以滿足很大部分應(yīng)用的需求了。為了進一步提高MTBF,有時會使用具有更好的建立/保持時間特性的庫單元(其具有低閾值電壓)構(gòu)建兩個觸發(fā)器同步器。

圖片

在跨時鐘域(CDC)發(fā)送信號到同步器之前,通常先在源時鐘域中使用寄存器保存信號。這也是為什么上圖中介紹為什么在兩個時域的觸發(fā)器之間需要沒有組合邏輯的原因,只有這樣才可以首先消除了組合電路產(chǎn)生的毛刺。如下圖所示:

圖片

因為在組合邏輯電路中常常因為各個輸入信號的不一致性以及各路徑延遲的不一樣,可能導(dǎo)致輸出結(jié)果存在毛刺。

而在跨時鐘域時,又不確定目的時鐘域時鐘上升沿什么時候到來,因此目的時鐘域時鐘的采樣就更加無法保證。

因此必須保證兩個時域的觸發(fā)器之間沒有組合邏輯。

  • 慢時鐘域到快時鐘域

最簡單的情況是將信號從慢速時鐘域傳遞到快速時鐘域。只要快時鐘的頻率大于慢時鐘頻率的1.5-2倍,通常就不會有問題。快速目標(biāo)時鐘將簡單地對慢速信號進行多次采樣。在這些情況下,一個簡單的兩級串聯(lián)觸發(fā)器同步就足夠了。

目的時鐘域如果不采取任何操作,那么就會多次采樣同一個值,這會導(dǎo)致一個問題--電路誤以為這是多個操作。因此為了避免這種錯誤的發(fā)生,通常添加一些簡單的邏輯使得同步后的采樣值出現(xiàn)周期和原時鐘域的一樣。具體操作,在soc設(shè)計方法與實現(xiàn)書上有講。

如果快時鐘的頻率小于慢時鐘頻率的1.5倍,也就是稍微快點,這個歡迎各位討論,我覺得使用。

  • 快時鐘域到慢時鐘域

困難的情況是將快速信號傳遞到慢速時鐘域。明顯的問題是,如果快速信號上的脈沖短于慢速時鐘的周期,則該脈沖可能會在被慢速時鐘采樣之前消失。下面的波形顯示了這種情況。

圖片

還有一個考慮較少的問題是,即使脈沖只是比慢時鐘的周期稍寬,信號也會在目標(biāo)觸發(fā)器的建立/保持時間內(nèi)(在慢時鐘上)變化,這會違反時序并導(dǎo)致亞穩(wěn)性。

在處理上述問題時,首先應(yīng)該確認是否需要源信號中的每個值,如果可以不需要,那么采樣在上文異步fifo中設(shè)計的格雷碼就可以異步FIFO設(shè)計。當(dāng)然如果需要在目的域中使用每個值,那么就得想辦法設(shè)計新方法。

  • 還是使用兩級觸發(fā)器

一個簡單的兩個觸發(fā)器同步器是跨時鐘域交叉?zhèn)鬏斝盘柕淖羁旆椒?。只要在快速時鐘域中生成的信號比慢速時鐘的周期時間寬,在許多應(yīng)用中就足夠了。例如,如果只需要同步緩慢變化的狀態(tài)信號,則可能會起作用。一個安全的經(jīng)驗法則是信號必須大于目標(biāo)時鐘周期寬度的1.5倍。這保證了信號將被目標(biāo)時鐘的至少一個(但可能更多)時鐘沿采樣。可以使用SystemVerilog斷言(SVA)輕松檢查需求。

當(dāng)源和目標(biāo)的相對時鐘頻率固定時,很容易實現(xiàn)1.5x的周期寬度。但是在現(xiàn)實世界中,情況并非如此。目標(biāo)時鐘可以采用多種不同的頻率,它們可以與源時鐘更快/更低/相同。在那種情況下,設(shè)計時鐘域交叉信號來滿足最慢目標(biāo)時鐘的1.5倍周期寬度并不容易。

  • 采用具有反饋信號的同步器

圖片

上圖中,源域通過兩個觸發(fā)器同步器將信號發(fā)送到目的時鐘域,然后通過另一個兩個觸發(fā)器同步器將同步信號傳遞回源時鐘域,作為反饋確認。下圖顯示了同步器的波形。

圖片

該解決方案非常安全,但是由于在允許再次更改信號之前需要在兩個方向上進行同步,因此確實存在增加延遲的代價。

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

    關(guān)注

    1

    文章

    148

    瀏覽量

    18753
  • MTBF
    +關(guān)注

    關(guān)注

    1

    文章

    29

    瀏覽量

    13556
  • CDC
    CDC
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    17747
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1995

    瀏覽量

    61012
  • 同步器
    +關(guān)注

    關(guān)注

    1

    文章

    92

    瀏覽量

    14597
收藏 人收藏

    評論

    相關(guān)推薦

    時鐘設(shè)計之控制信號傳輸工作原理

    時鐘通俗地講,就是模塊之間有數(shù)據(jù)交互,但是模塊用的不是同一個時鐘進行驅(qū)動。
    的頭像 發(fā)表于 10-08 17:00 ?2597次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>設(shè)計之控制<b class='flag-5'>信號</b><b class='flag-5'>傳輸</b>工作原理

    時鐘控制信號傳輸設(shè)計方案

    clk2的時鐘。當(dāng)clk1比clk2的頻率高時,則稱模塊1(相對于模塊2)為快時鐘,而模塊2位為慢時鐘
    發(fā)表于 10-16 15:47 ?1132次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>控制<b class='flag-5'>信號</b><b class='flag-5'>傳輸</b>設(shè)計方案

    關(guān)于時鐘信號的處理方法

    我在知乎看到了多bit信號時鐘的問題,于是整理了一下自己對于時鐘
    的頭像 發(fā)表于 10-09 10:44 ?5905次閱讀

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

    target,hit這種單比特信號時鐘交互來進行信息的交互?;谶@對信使,雙方各自定義了各自的行動規(guī)則作為
    發(fā)表于 07-07 17:25

    時鐘信號的幾種同步方法研究

    時鐘信號的同步方法應(yīng)根據(jù)源時鐘與目標(biāo)時鐘的相位關(guān)系、該
    發(fā)表于 05-09 15:21 ?63次下載
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>信號</b>的幾種同步方法研究

    電路的角度出發(fā),提出了一種新的SOC時鐘同步電路設(shè)計的方法

    針對當(dāng)前SOC內(nèi)部時鐘越來越復(fù)雜、接口越來越多以及亞穩(wěn)態(tài)、漏信號等常見的各種問題,分析了以往的優(yōu)化方法的優(yōu)缺點,然后從電路的角度出發(fā),提出了一種新的SOC
    的頭像 發(fā)表于 02-09 14:30 ?6648次閱讀
    從<b class='flag-5'>電路</b>的角度出發(fā),提出了一種新的SOC<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>同步<b class='flag-5'>電路設(shè)計</b>的方法

    單位寬信號如何時鐘

    單位寬(Single bit)信號即該信號的位寬為1,通??刂?b class='flag-5'>信號居多。對于此類信號,如需時鐘
    的頭像 發(fā)表于 04-13 09:11 ?1262次閱讀

    單bit信號時鐘傳輸可以使用兩級同步但后果呢?

    看的東西多了,發(fā)現(xiàn)有些并未領(lǐng)會到位。單bit信號時鐘傳輸,可以使用兩級同步,但后果呢?
    的頭像 發(fā)表于 05-10 10:08 ?804次閱讀
    單bit<b class='flag-5'>信號</b>的<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>傳輸</b>可以使用兩級同步但后果呢?

    時鐘電路設(shè)計:多位寬數(shù)據(jù)通過FIFO時鐘

    FIFO是實現(xiàn)多位寬數(shù)據(jù)的異步時鐘操作的常用方法,相比于握手方式,F(xiàn)IFO一方面允許發(fā)送端在每個時鐘周期都發(fā)送數(shù)據(jù),另一方面還可以對數(shù)據(jù)進行緩存。需要注意的是對FIFO控制
    的頭像 發(fā)表于 05-11 14:01 ?2878次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>電路設(shè)計</b>:多位寬數(shù)據(jù)通過FIFO<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>

    時鐘電路設(shè)計總結(jié)

    時鐘操作包括同步時鐘操作和異步
    的頭像 發(fā)表于 05-18 09:18 ?694次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>電路設(shè)計</b>總結(jié)

    從處理單bit時鐘信號同步問題來入手

    在數(shù)字電路中,時鐘處理是個很龐大的問題,因此將會作為一個專題來陸續(xù)分享。今天先來從處理單bit時鐘
    發(fā)表于 06-27 11:25 ?1551次閱讀
    從處理單bit<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>信號</b>同步問題來入手

    所有的單比特信號時鐘都可以用敲兩級DFF的辦法處理嗎?

    用敲兩級DFF的辦法(兩級DFF同步器)可以實現(xiàn)單比特信號時鐘處理。但你或許會有疑問,是所有的單比特
    的頭像 發(fā)表于 06-28 11:39 ?1040次閱讀
    所有的<b class='flag-5'>單比特</b><b class='flag-5'>信號</b><b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>都可以用敲兩級DFF的辦法處理嗎?

    時鐘電路設(shè)計:單位寬信號如何時鐘

    單位寬(Single bit)信號即該信號的位寬為1,通??刂?b class='flag-5'>信號居多。對于此類信號,如需時鐘
    的頭像 發(fā)表于 08-16 09:53 ?1190次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>電路設(shè)計</b>:單位寬<b class='flag-5'>信號</b>如何<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>

    fpga時鐘通信時,慢時鐘如何讀取快時鐘發(fā)送過來的數(shù)據(jù)?

    時,由于時鐘頻率不同,所以可能會產(chǎn)生元件的不穩(wěn)定情況,導(dǎo)致傳輸數(shù)據(jù)的錯誤。此時我們需要采取一些特殊的措施,來保證時鐘
    的頭像 發(fā)表于 10-18 15:23 ?978次閱讀

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

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