天天看點

對異步複位同步釋放的了解前言一、Removal Timing Check與Recovery Timing Check的定義二、異步複位同步釋放的原理總結

對異步複位同步釋放的了解

  • 前言
  • 一、Removal Timing Check與Recovery Timing Check的定義
    • 1.Removal Timing Check
    • 2.Recovery Timing Check
  • 二、異步複位同步釋放的原理
    • 1.Verilog代碼實作
    • 2.邏輯電路圖
  • 總結

前言

有關同步複位、異步複位以及異步複位同步釋放的差別和verilog實作,這篇部落格連結: link.介紹的非常詳細了,有需要的可以參考下,這裡着重講解對于異步複位同步釋放的了解。

一、Removal Timing Check與Recovery Timing Check的定義

在了解異步複位同步釋放原理之前,先明确兩個概念:

1.Removal Timing Check

Removal Timing指在時鐘有效沿來臨之後,異步複位信号需要繼續保持有效的最短時間。滿足這個最短時間才能確定對寄存器進行正常的複位。Removal time check的波形圖如下圖所示,與hold time check類似。

對異步複位同步釋放的了解前言一、Removal Timing Check與Recovery Timing Check的定義二、異步複位同步釋放的原理總結

2.Recovery Timing Check

Recovery Time指在時鐘有效沿到來之前,複位信号保持高電平的最短時間。即複位信号變到非複位狀态的電平必須在clk之前一定的時間到達,并滿足這個Recovery Time,可以確定在時鐘有效沿來臨時,異步複位信号處于無效狀态,確定正常的資料采樣。

對異步複位同步釋放的了解前言一、Removal Timing Check與Recovery Timing Check的定義二、異步複位同步釋放的原理總結

從Removal 和Recovery time的定義知道,隻要複位信号不在時鐘有效沿附近變化(即複位信号遠離時鐘有效沿),可以保證電路的正常複位和撤銷。

二、異步複位同步釋放的原理

異步複位指無論時鐘沿是否到來,隻要複位信号有效就進行複位,而同步釋放是在時鐘沿到來時釋放複位信号。

1.Verilog代碼實作

always @ (posedge clk, negedge rst_async_n)
    if (!rst_async_n) begin
        rst_s1 <= 1'b0;
        rst_s2 <= 1'b0;
    end
    else begin
        rst_s1 <= 1'b1;
        rst_s2 <= rst_s1;
    end
    assign rst_sync_n = rst_s2;
endmodule
           

2.邏輯電路圖

對異步複位同步釋放的了解前言一、Removal Timing Check與Recovery Timing Check的定義二、異步複位同步釋放的原理總結

方框1中的電路圖是實作異步複位同步釋放的關鍵

(1)異步複位操作

當rst_async_n有效時,第一個D觸發器的輸出是低電平,第二個D觸發器的輸出rst_sync_n也是低電平,方框2中的異步複位端口有效,輸出被複位。

(2)同步釋放操作

假設rst_async_n釋放發生在clk上升沿時,如果不加方框1的電路,則可能發生亞穩态事件。但是加上此電路以後,假設第一級D觸發器clk上升沿時rst_async_n正好釋放,則D觸發器1可能輸出高電平“1”,也可能輸出亞穩态“x”。但此時第二級觸發器不會立刻更新輸出,第二級觸發器輸出值為前一級觸發器Q1的輸出狀态。顯然Q1之前為低電平,故第二級觸發器輸出保持複位低電平。直到下一個時鐘有效沿到來之後,才随着變為高電平,即實作同步釋放。

總結

在實際的設計中,比如有的子產品是先複位再給子產品供應時鐘,即保證了複位信号與時鐘在時間上是錯開的,這種流程可以保證不會出現Recovery和Removal的問題,因為複位置起撤銷時都沒有時鐘。即使操作流程保證不了,出現Recovery和Removal違例,由于子產品此時都不會工作,也沒什麼問題。并且在數字後端實作時,如果發現第一級寄存器的異步複位端存在Removal和Recovery的Timing violation,我們可以不用管。因為這一級隻是作為過渡。

繼續閱讀