關於非同步複位同步釋放原理的詳細解答

  • 2019 年 10 月 3 日
  • 筆記

首先,本人查找了非同步複位同步釋放原理網路相關資料。大都沒有講清楚相關原理性的東西,令人困惱。

 

現花時間進行原理性的解答:理解為什麼非同步複位、同步釋放能夠實現?

 

首先要知道複位D觸發器的工作原理,複位訊號作用於最後埠也作用於觸發器邏輯中間。

當複位端有效時(一般為1),複位訊號直接作用於最後一級的SR鎖存器(需要知道鎖存器的原理以及觸發器的原理,這個是電子的基礎),此時觸發器直接輸出q為0。

當複位訊號無效時(為0時),複位訊號為0,不能驅動最後一級SR鎖存器,此時輸出q=輸入的d,其中由時鐘訊號與複位訊號共同進行控制數據的變化,使q=d。

該圖為set,clr都為複位端的圖,我們理解時,使用單獨set進行理解。

非同步複位、同步釋放。

module code ( clk,rst_n,rst_n_out);  input clk;  input rst_n;  output rst_n_out;    //wire rst_n_out_n;   //輸入輸出沒定義類型,默認是wire型  reg rst_n1;  reg rst_n2;    always @(posedge clk or negedge rst_n)  begin      if(!rst_n)         begin       rst_n1 <= 1'b0;       rst_n2 <= 1'b0;         end       else         begin         rst_n1 <= 1'b1;         rst_n2 <= rst_n1;          end  end    assign rst_n_out = rst_n2;    endmodule

 

先以rst_n為0,複位端即為1(將此時為複位狀態作起點),此時q1與q2同時由複位訊號rst_n控制,直接輸出為0。

當rst_n從0變為1過程中時,此時複位端變為0,將無法直接作用與觸發器的輸出端。此時的狀態,q1由d1決定,q2由d2確定。此時由於q1有時鐘上升沿與複位訊號共同作用與第一觸發器

,由於d1為1,q1輸出將根據clk來決定,而此時由於時鐘與複位訊號已經作用與第二觸發器,此時d2為之前q1=0的狀態,由於d2為0,根據D觸發器的原理,無論clk為什麼,q2=0,於是q2繼續輸出為0。

 

當第一觸發器不滿足複位訊號與時鐘訊號的恢復時間時,即不滿足第一級觸發器內部延時,這個時候,第一級觸發器將發生亞穩態狀態,而此時第二級觸發器已經上升沿完畢,

需要等下一個上升沿才能繼續改變q2數據。

當亞穩態時間過去之後(亞穩態時間不會超過一個周期,超過一個周期仍然會影響到第二級觸發器),下一個周期時鐘來臨時,此時第一觸發器已經能夠正常的輸出為1,而第二觸發器也能夠直接等於d2,這時輸出rst_n_out = 1,完成複位。

 

也就是說非同步複位、同步釋放的本質就是,將原本由非同步複位訊號在有效時能直接作用於輸出端,改為延後一個周期通過在複位訊號無效時進行時鐘控制,即同步釋放。