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

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

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

什么是復(fù)位同步電路 reset synchronizer?

要長高 ? 來源:eetop ? 作者:eetop ? 2024-02-19 09:21 ? 次閱讀

什么是復(fù)位同步電路reset synchronizer?

下圖是一個最簡單的復(fù)位同步電路。這個電路的輸出rstn_sync用作后續(xù)電路中D flip flop的復(fù)位信號。

1610588852447210.png

這個電路的工作原理是:

-PorZ低電平,復(fù)位同步電路里的兩個D flip flop都被復(fù)位。電路的輸出rstn_sync為0,后續(xù)電路被復(fù)位。

-PorZ由低變高。clk上升沿到來時,第一個D flip flop先變1。過一個周期,第二個D flip flop變1,rstn_sync變1,后續(xù)電路離開復(fù)位狀態(tài),開始正常工作。

-如果PorZ由低變高和clk上升沿離得很近,第一個D flip flop可能進(jìn)入亞穩(wěn)態(tài)(metastability)。不過沒關(guān)系,第二個D flip flop的輸出rstn_sync還是穩(wěn)定的。復(fù)位同步電路的主要功能就是保障rstn_sync是穩(wěn)定的0或1,在芯片的有生之年不發(fā)生亞穩(wěn)態(tài)(或亞穩(wěn)態(tài)的機(jī)率小到忽略不計)。同時,保障rstn_sync相對于clk有一個固定的時序關(guān)系。下面詳細(xì)討論。

為什么需要復(fù)位同步電路reset synchronizer?

這和D flip flop一個比較隱蔽的timing指標(biāo)有關(guān)– removal/recovery time。D flip flop對時鐘沿active edge和復(fù)位的release edge是有時序要求的。通常,D flip flop復(fù)位端的release edge必須要滯后時鐘active edge一段時間(removal time),而且還要超前下一個時鐘active edge一段時間(recovery time)。如果有違例,那這個D flip flop就會進(jìn)入亞穩(wěn)態(tài),在后仿中顯示為X。

復(fù)位同步電路reset synchronizer的輸出rstn_sync相對于時鐘clk有一個固定的時序關(guān)系。在PnR (place & route)中,工具構(gòu)造buffer tree去buffer rstn_sync,并算出buffer后rstn_sync到后續(xù)每個D flip flop復(fù)位端的時間,通過插入或調(diào)整buffer,保障后續(xù)電路中每一個D flip flop的復(fù)位端都滿足removal/recovery要求。反之,如果rstn_sync相對于時鐘clk沒有有一個固定的關(guān)系,那工具就無從下手了,也就無法保障removal/recovery要求了。

順便說一下,綜合工具是不查removal/recovery time的。如果復(fù)位電路上有錯,通常會在設(shè)計流程很后面才發(fā)現(xiàn),改起來代價也會高一些。所以一定要在一開始就重視復(fù)位電路。

為什么復(fù)位同步電路reset synchronizer自己不會進(jìn)入亞穩(wěn)態(tài)?

前面講了,第一級的D flip flop是有可能進(jìn)入亞穩(wěn)態(tài)。關(guān)鍵在于第二級。第二級的D輸入端在第一個clk到來的時刻仍是穩(wěn)定的低電平(第一級的輸出此時尚未變成亞穩(wěn)態(tài)X),第二級的的狀態(tài)不需要改變,仍舊保持原來復(fù)位后的0狀態(tài)。等到第二個clk到來的時候,如果第一級已經(jīng)不在亞穩(wěn)態(tài)了,第二級的D輸入就是一個穩(wěn)定的1,那第二級的輸出rstn_sync自然就變成穩(wěn)定的1了。即使第一級在第二個clk到來的時候沒有完全走出亞穩(wěn)態(tài),只要第一級的輸出不在中間值附近,第二級仍會把第一級的輸出當(dāng)成0或1,第二級的輸出rstn_sync也就因此為穩(wěn)定的0或1。這也就是為什么有時候復(fù)位同步電路reset synchronizer的latency是在1-3個時鐘之間。

有條件的同學(xué),不妨跑一下Spectre sim,觀察一下D flip flop內(nèi)部的信號,加深removal/recovery time的理解。眼見為實。

如果兩個D flip flop還不夠MTBF指標(biāo)(發(fā)生亞穩(wěn)態(tài)的概率仍不夠?。?,可以再加第三級。

有些標(biāo)準(zhǔn)元庫中有專門的同步電路,synchronizer cell。應(yīng)該盡量使用這種synchronizer cell,比自己用兩個D flip flop搭更可靠。專門的synchronizer第二級是高增益的,大大降低第二級進(jìn)入亞穩(wěn)態(tài)的可能性。

復(fù)位同步電路reset synchronizer能加到掃描鏈里嗎?

1610813938274129.png

這里加了兩個MUX,這樣可以讓工具把同步復(fù)位電路的兩個D flip flop連到scan chain里,增加test coverage。

使用復(fù)位同步電路reset synchronizer需要注意的地方

一個復(fù)位同步電路reset synchronizer只能用到一個時鐘域。如果有幾個不同步的時鐘域,就要考慮使用多個復(fù)位同步電路。同步的時鐘域可以考慮復(fù)用一個復(fù)位同步電路reset synchronizer,但要做得仔細(xì)一些。

復(fù)位同步電路reset synchronizer有什么弊病嗎

復(fù)位同步電路reset synchronizer其實只在復(fù)位信號release的時候派上用場。復(fù)位結(jié)束后,這個電路其實就沒用了。但這個電路的時鐘還在switch,這個電路還在耗電。如果是高速時鐘,這個耗電就可觀了。低功耗設(shè)計,就要考慮是否可以關(guān)掉時鐘。這個根據(jù)不同場景,就非常復(fù)雜了,需要非常小心。

復(fù)位同步電路reset synchronizer是必須的嗎?

很多人通常不加思索一上來就加上同步復(fù)位電路reset synchronizer。這種條件反射本身是好習(xí)慣。

如果精益求精,那就要多思考一下了。有些場景是不需要復(fù)位同步電路reset synchronizer的。

復(fù)位的目的是讓電路有個明確的起始狀態(tài)。如果不需要明確的初始狀態(tài),而且電路跑一段時間后能清除所有不確定狀態(tài),進(jìn)入正常狀態(tài),那就可以考慮不用復(fù)位同步電路。例如FIR。如果使用場景中可以容忍初始輸出為垃圾,異步復(fù)位是可以的。

還有一個被99%的設(shè)計者忽略的場景。如果復(fù)位信號release的時候,時鐘還沒有啟動,那就根本不需要復(fù)位同步電路reset synchronizer。很多時候,芯片是內(nèi)部oscillator, PLL提供時鐘的。而oscillator, PLL啟動都需要時間的。如果復(fù)位在這段時間內(nèi)release,那就不需要同步復(fù)位電路reset synchronizer了。在低功耗設(shè)計中,尤其是多個內(nèi)部時鐘域的場景,省下的功耗就可觀了。當(dāng)然,設(shè)計要做得非常仔細(xì)。

還有一個場景就是內(nèi)部產(chǎn)生的復(fù)位信號。做得精妙的設(shè)計,可以保證在內(nèi)部復(fù)位release的時候沒有時鐘,也就不需要什么復(fù)位同步電路reset synchronizer了。內(nèi)部產(chǎn)生復(fù)位信號是一個很有效的設(shè)計技巧。這個技巧復(fù)用現(xiàn)成的reset network同時將很多D flip flop清零,省去了在D flip flop的D輸入邏輯(D input logic cone)加上清零條件,可以節(jié)省很多門。

復(fù)位同步電路reset synchronizer在RTL里的實現(xiàn)

通常做成一個單獨(dú)的module,在主設(shè)計中例化這個module。

好了,希望復(fù)位同步講全面了。

審核編輯:黃飛

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

    關(guān)注

    6

    文章

    776

    瀏覽量

    135160
  • 復(fù)位電路
    +關(guān)注

    關(guān)注

    13

    文章

    322

    瀏覽量

    44594
  • 低電平
    +關(guān)注

    關(guān)注

    1

    文章

    115

    瀏覽量

    13275
  • 復(fù)位信號
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    6319
收藏 人收藏

    評論

    相關(guān)推薦

    Xilinx FPGA異步復(fù)位同步釋放—同步后的復(fù)位該當(dāng)作同步復(fù)位還是異步復(fù)位?

    針對異步復(fù)位、同步釋放,一直沒搞明白在使用同步化以后的復(fù)位信號時,到底是使用同步復(fù)位還是異步
    發(fā)表于 06-21 09:59 ?1484次閱讀
    Xilinx FPGA異步<b class='flag-5'>復(fù)位</b><b class='flag-5'>同步</b>釋放—<b class='flag-5'>同步</b>后的<b class='flag-5'>復(fù)位</b>該當(dāng)作<b class='flag-5'>同步</b><b class='flag-5'>復(fù)位</b>還是異步<b class='flag-5'>復(fù)位</b>?

    為什么需要復(fù)位電路?漫談復(fù)位reset

    在IC設(shè)計中,把復(fù)位和時鐘電路稱為最重要的兩個電路一點(diǎn)也不為過。前者復(fù)位電路把IC設(shè)計的電路引導(dǎo)
    的頭像 發(fā)表于 01-19 16:41 ?2353次閱讀
    為什么需要<b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>?漫談<b class='flag-5'>復(fù)位</b><b class='flag-5'>reset</b>

    同步復(fù)位sync和異步復(fù)位async

    )。其實做起來也并不難,我推薦一種我經(jīng)常使用的方式吧:那就是在異步復(fù)位鍵后加上一個所謂的“reset synchronizer”,這樣就可以使異步復(fù)位信號
    發(fā)表于 11-14 16:03

    同步復(fù)位和異步復(fù)位的比較(轉(zhuǎn)載)

    。具體方式是:在異步復(fù)位后加上一個所謂的“reset synchronizer”,這樣就可以使異步復(fù)位信號同步化,然后,再用經(jīng)過處理的
    發(fā)表于 05-05 23:11

    請問一下Reset信號如何實現(xiàn)同步

    首先來復(fù)習(xí)一個更加基礎(chǔ)的概念:同步reset和異步reset。同步reset(synchronous r
    發(fā)表于 11-09 15:04

    HT66Fx0系列MCU的Reset復(fù)位電路應(yīng)用介紹

    HT66Fx0系列MCU的Reset復(fù)位電路應(yīng)用介紹HT66Fx0 系列MCU 的Reset 復(fù)位電路
    發(fā)表于 03-27 08:38 ?36次下載

    復(fù)位穩(wěn)定放大器:The Reset Stabilized A

    復(fù)位穩(wěn)定放大器:The Reset Stabilized Amplifier The reset stabilized amplifier is a form of chopper-stabilized amplifier a
    發(fā)表于 05-16 16:12 ?1275次閱讀
    <b class='flag-5'>復(fù)位</b>穩(wěn)定放大器:The <b class='flag-5'>Reset</b> Stabilized A

    如何區(qū)分同步復(fù)位和異步復(fù)位

    問:如何區(qū)分同步復(fù)位和異步復(fù)位?可以理解為同步復(fù)位是作用于狀態(tài),然后通過狀態(tài)來驅(qū)動電路
    的頭像 發(fā)表于 06-11 15:15 ?6847次閱讀

    同步復(fù)位和異步復(fù)位電路簡介

    同步復(fù)位和異步復(fù)位都是狀態(tài)機(jī)的常用復(fù)位機(jī)制,圖1中的復(fù)位電路結(jié)合了各自的優(yōu)點(diǎn)。
    的頭像 發(fā)表于 08-12 15:20 ?7429次閱讀
    <b class='flag-5'>同步</b><b class='flag-5'>復(fù)位</b>和異步<b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>簡介

    詳細(xì)講解同步后的復(fù)位同步復(fù)位還是異步復(fù)位?

    針對異步復(fù)位、同步釋放,一直沒搞明白在使用同步化以后的復(fù)位信號時,到底是使用同步復(fù)位還是異步
    的頭像 發(fā)表于 04-27 18:12 ?4768次閱讀
    詳細(xì)講解<b class='flag-5'>同步</b>后的<b class='flag-5'>復(fù)位</b>是<b class='flag-5'>同步</b><b class='flag-5'>復(fù)位</b>還是異步<b class='flag-5'>復(fù)位</b>?

    Reset復(fù)位電路的PCB布局布線要求

    Reset復(fù)位電路的PCB布局布線要求 —來源:瑞芯微RK3588 PCB設(shè)計白皮書 Reset復(fù)位電路
    的頭像 發(fā)表于 08-03 07:45 ?1136次閱讀
    <b class='flag-5'>Reset</b><b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>的PCB布局布線要求

    同步復(fù)位與異步復(fù)位的區(qū)別

    請簡述同步復(fù)位與異步復(fù)位的區(qū)別,說明兩種復(fù)位方式的優(yōu)缺點(diǎn),并解釋“異步復(fù)位,同步釋放”。
    的頭像 發(fā)表于 08-14 11:49 ?7259次閱讀

    淺析異步復(fù)位同步釋放與同步復(fù)位打拍模塊

    異步復(fù)位同步釋放:rst_synchronizer.v
    的頭像 發(fā)表于 08-21 09:27 ?1000次閱讀
    淺析異步<b class='flag-5'>復(fù)位</b><b class='flag-5'>同步</b>釋放與<b class='flag-5'>同步</b><b class='flag-5'>復(fù)位</b>打拍模塊

    Linux的reset復(fù)位API說明

    入的reset資源進(jìn)行解復(fù)位操作 參數(shù) : rstc:指向申請reset資源的設(shè)備句柄 返回 : 成功:返回0 失敗:返回錯誤碼 reset_control_assert int re
    的頭像 發(fā)表于 09-27 14:14 ?1182次閱讀

    復(fù)位電路的電容多大的 復(fù)位電路設(shè)計類型有哪幾種

    復(fù)位電路是電子系統(tǒng)中的一個關(guān)鍵部分,它確保系統(tǒng)在啟動或發(fā)生故障時能夠正確地初始化。復(fù)位電路的設(shè)計取決于多種因素,包括系統(tǒng)的復(fù)雜性、所需的復(fù)位
    的頭像 發(fā)表于 10-21 10:24 ?313次閱讀