數(shù)字電路設(shè)計(jì)——異步復(fù)位同步釋放

在數(shù)字邏輯電路中,復(fù)位信號的設(shè)計(jì)是首要解決的基本問題。在進(jìn)行復(fù)位信號設(shè)計(jì)之前,需要明確的是,復(fù)位信號只對時(shí)序電路有效,因?yàn)闀r(shí)序電路屬于雙穩(wěn)態(tài)電路,在上電后需要保證電路處于已知的初始態(tài),才能保證正常運(yùn)行。而對于組合邏輯電路來說,組合邏輯本身不具有存儲(chǔ)的功能,因此不需要復(fù)位信號。
復(fù)位信號可以分為同步復(fù)位和異步復(fù)位兩大類。
同步復(fù)位指的是當(dāng)復(fù)位信號發(fā)生變化時(shí),并不立即生效,而是等到有效時(shí)鐘沿采集到復(fù)位信號的變化后,才會(huì)對寄存器進(jìn)行復(fù)位操作。從同步復(fù)位的描述中,就可發(fā)現(xiàn)同步復(fù)位的過程是依賴于時(shí)鐘信號的,所以稱之為同步。而異步復(fù)位則不依賴于系統(tǒng)時(shí)鐘,一旦信號發(fā)生變化,就會(huì)立即對寄存器進(jìn)行復(fù)位操作。
由于在現(xiàn)有的大多數(shù)邏輯器件庫中,觸發(fā)器DFF都是只包含有異步復(fù)位端口,所以同步復(fù)位的使用會(huì)造成冗余組合邏輯的使用,浪費(fèi)資源。因此,大多數(shù)數(shù)字設(shè)計(jì)中都采用的是異步復(fù)位信號。
雖然異步復(fù)位信號更加方便使用,但是因?yàn)閺?fù)位信號與系統(tǒng)時(shí)鐘異步的關(guān)系,很容易出現(xiàn)復(fù)位信號釋放位置恰恰出現(xiàn)在時(shí)鐘有效沿附近,導(dǎo)致亞穩(wěn)態(tài)的出現(xiàn)。對于異步復(fù)位,有類似于寄存器建立時(shí)間和保持時(shí)間的說法,分別是recovery time 和temoval time。如下面兩張圖所示:


T_recovery.png

recovery time是異步復(fù)位的恢復(fù)時(shí)間,指的是復(fù)位釋放與下一個(gè)時(shí)鐘有效邊沿之間需要間隔的最小時(shí)間。


t_removal.png

removal time是異步復(fù)位的去除時(shí)間,指的是復(fù)位釋放與上一個(gè)時(shí)鐘有效邊沿之間需要間隔的最小時(shí)間。
如果異步復(fù)位的釋放時(shí)間不滿足以上這兩個(gè)條件,寄存器很可能進(jìn)入亞穩(wěn)態(tài),導(dǎo)致電路運(yùn)行失常。為了保證解決這個(gè)問題,可以采用異步復(fù)位同步釋放的復(fù)位信號設(shè)計(jì)方法。顧名思義,異步復(fù)位同步釋放就是對復(fù)位信號的釋放過程做同步處理,使得釋放的過程能夠與系統(tǒng)時(shí)鐘同步。
異步復(fù)位,同步釋放本質(zhì)就是引入兩個(gè)觸發(fā)器,其電路圖和時(shí)序處理如下圖所示:
電路.png

timing.png

觀察上述電路圖和時(shí)序圖就知道,其實(shí)異步復(fù)位同步釋放和兩級打拍的跨時(shí)鐘域信號處理很相似,本質(zhì)上都是對信號進(jìn)行同步處理。上述電路的代碼如下,很簡單:
module rst_n_sync(
    input   clk        , // 輸入時(shí)鐘
    input   rst_n      , // 輸入異步復(fù)位信號
    output  rst_n_sync   // 輸出同步釋放后的復(fù)位信號
    );

reg          rst_n_r1 ; // 第1級寄存器
reg          rst_n_r2 ; // 第2級寄存器

assign rst_n_sync = rst_n_r2 ;

always @ (posedge clk or negedge rst_n) begin
    if (~rst_n) begin
        rst_n_r1 <= 1'b0 ; 
        rst_n_r2 <= 1'b0 ; // 復(fù)位信號有效時(shí)拉低
    end // 
    else begin
        rst_n_r1 <= 1'b1    ; 
        rst_n_r2 <= rst_n_r1; // 復(fù)位信號無效后,通過兩級打拍,實(shí)現(xiàn)釋放同步
    end // 
end // 
endmodule

上述代碼在vivado軟件中生成的RTL電路如下:


rtl_sync.png

可以看到,代碼生成的電路與之前的電路原理圖完全一致。
異步復(fù)位同步釋放的復(fù)位信號設(shè)計(jì)方法能夠有效地實(shí)現(xiàn)系統(tǒng)的復(fù)位,且因?yàn)檫M(jìn)行了信號的同步釋放處理,使得復(fù)位信號在撤離時(shí)能夠滿足恢復(fù)和去除時(shí)間的要求,從而避免了亞穩(wěn)態(tài)的產(chǎn)生。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容