復位保護電路,是在系統進行復位的過程中對接口進行硬性邏輯保護,避免毛刺和錯誤對周圍系統產生影響的模塊。
通常而言,復位保護電路的開啟應該在復位之前,關閉應該在復位撤離之后。咱們針對握手接口來分類看下如何進行復位保護(使能接口也類似)。
對外輸出valid。
在復位期間由于復位信號到達不同寄存器的時間不同,加之組合邏輯路徑,可能會產生錯誤的valid信號對外輸出。
顯然在本系統單獨復位的場景下,是不應該有對外的valid輸出的,因此在復位前,需要將對外輸出的valid信號&&0操作,確保復位和解復位期間沒有valid誤觸發。
對內輸入的ready。
進入復位的階段,對內輸入的ready是可以不做處理的,因為即使復位時出現了對外valid的誤觸發,系統也馬上就會進入復位狀態了不會有任何影響。
在解復位階段,如果流程內能夠通過時鐘關斷或時鐘降頻等手段來保證系統內的寄存器同一拍解復位,在內部不產生valid誤觸,對內輸入的ready可以不經過邏輯處理。
如果沒有其他的手段保護,可以考慮對內的in_ready = out_ready || 1來保證在復位撤離階段將誤觸發的valid通過假握手丟棄掉。
對外輸出的ready。
系統復位期間,從業務需求上其他系統理應不對該系統有事務操作。
如果真的出現了極端異常場景,那么比較合理的情況是對外輸出的ready保證為1,將事務丟棄,不阻塞其他系統,如果為帶rsp的事務那就等待其他系統的超時中斷。
對內輸入的valid。
在復位和復位期間,一般而言輸入的valid是無需理會的。解復位時最好也是通過其他手段保證不出現內部的ready誤觸,且當本系統單獨復位期間其他系統理應不存在請求到來,因此對內輸入的valid也是不需要經過特殊處理的。
如果沒有其他的手段保護,可以考慮對內的in_valid = out_valid && 0,避免內部誤觸發的ready同in_valid進行了握手。
復位保護電路。
通常而言,復位保護的使能信號從寄存器輸出,作用于RTL,那么同樣存在一個異步路徑的問題。因為使能復位保護和撤銷復位保護時,RTL是沒有處于工作狀態的,且內部電路處于穩態。沒有工作處于穩態時,對外的valid必然為0,ready必然為1(如果不滿足這個條件,請單獨討論)。
對外out_valid = 0 && (~prot_en),此時prot_en由1跳變為0(或0跳變位1),輸出邏輯不會改變,也不存在亞穩態采樣的問題;對外輸出的out_ready = 1 || (prot_en),此時prot_en由1跳變為0(或0跳變位1),輸出邏輯不會改變,同樣不存在亞穩態采樣的問題。
因此個人認為, 由寄存器輸出的prot_en作用于內部邏輯時,無需經過跨異步處理 。
-
保護電路
+關注
關注
45文章
869瀏覽量
101410 -
寄存器
+關注
關注
31文章
5253瀏覽量
119206 -
RTL
+關注
關注
1文章
384瀏覽量
59518 -
軟中斷
+關注
關注
0文章
8瀏覽量
3010
發布評論請先 登錄
相關推薦
評論