一、概念
恢復時間:異步復位信號釋放與緊跟其后的第一個時鍾有效沿之間最小的時間間隔,如果不滿足恢復時間,則輸出觸發器的輸出可能會產生亞穩態。
去除時間:時鍾有效沿與異步復位信號釋放之間所需的最小時間,如果不滿足去除時間,則輸出可能產生亞穩態。
二、解決方法
異步復位同步釋放:所謂的異步復位是指復位信號和clock無關,復位信號是異步的,同步釋放是指經過兩級觸發器同步后的reset的值在clk時鍾有效沿下是一個穩定的值。
這樣結構的好處是system部分所采的reset的值基本上都是一個確定的值,不會是一個亞穩態。
三、RTL代碼
always_ff @(posedge clk_i or negedge async_rst_i) begin
if(!async_rst_i) begin
rst_s1_r <= 1'b0;
rst_s2_r <= 1'b0;
end
else begin
rst_s1_r <= 1'b1;
rst_s2_r <= rst_s1_r;
end
end
assign sync_rst_o = rst_s2_r;