非同期および同期リセット解除回路の詳細な説明

:より転載
http://blog.csdn.net/gtatcs/article/details/8931123
https://www.cnblogs.com/qidaiymm/p/4959445.html
http://www.xue5.com/Developer/Software /665219.html

図1に示すように、その理由は、最初の非同期リセット信号メタステーブルを与えられます。

  端をリセットクロックの立ち上がりエッジとの間のセットアップ及びホールド時間は、現在リセット状態が準安定状態となる、1または0であるときに解除の瞬間を正確に決定することができません。

  以下は、詳細な説明です:

  そうQ端子「非同期」が「1」または「0」に設定されているリセット端子、リセット信号「リセット」がアクティブであるとき、それは直接駆動することができ、最終段のNANDゲートと、Dフリップフロップです。これは、非同期リセットされます。このリセット信号の解除は、Qは前に内部出力の出力によって決定します。
しかし、リセット信号ので、最終的なドアではなく、前段回路の入力信号として直接的な役割ではないので、以前のステージの出力は、内部にもリセット信号によって影響を受けます。内部回路実際に「ホールド」機能を実装する前に、クロックエッジ遷移、すなわち、クロックがハイになると、入力信号が影響することはもはや対象でないように、入力値の近傍にロック。クロック・エッジの近くに「メンテナンス」回路の変更のための「リセット」信号がアクティブである場合、それは「リセット」値をラッチする。リセット信号が解除される場合は、「メンテナンス」、回路は、にロックしますデータD入力。リセット信号が「リリース」は、クロックエッジ近くに時間の時点で起こる場合は、「メンテナンス」回路は、いずれかの「メンテナンス」ライブリセット値に十分な時間がないかもしれないこのように、「メンテナンス」のライブD入力に十分な時間がありません値は、従ってNANDゲートのQ端子を介して準安定を引き起こし、そして最終的に出力する通過します。「リリース」は、後の時点リセット信号を来ることができるならば、それは「メンテナンス」回路は、「リセット」の値をロックするのに十分な時間を持っている、そして我々は必ず安定した出力「リセット」状態であることが可能にするために、あります。所要時間のこの短いロック「リセット」値が除去時間に必要なレジスタです。

2.上記そして以下がより明確に説明し、理解していない場合。

最初の内部ブロックは、非同期リセットと同期図解除回路です。2つのDフリップフロップがあります。VCCは、第二段目のフリップフロップの出力が非同期でリセットされる初段のDフリップフロップの入力、同期リセット信号を放出します。


1)目的回路は:準安定イベントリセット信号が解除される防ぎます。

手段非同期リセット信号がリセットされ、CLKの発生を、すなわちかかわらず、アクティブである:2)非同期および同期リセットが解除される何です。単語「同期放出」は、リセット信号を除去することを意味した後も、CLKとは無関係であるが、次の到来CLK効果(放出)にリセット信号を出力します。

以下は、非同期および同期リセット解除を実装する方法について説明します。

非同期リセット:明らかrst_async_n非同期リセット後、rst_sync_nが低くなる、すなわち、非同期リセット。

同期リリース:これは、放出を同期リセット信号rst_async_n起因ダブルバッファ回路(二重レジスタ)に、取り外したとき、すなわち、rst_sync_nリセット信号がrst_async_nの除去により除去されていないかを確認するためのキーです。

しかし、この回路では、次に、回路は準安定イベントが発生することではない場合の除去は、CLKのrst_async_nの立ち上がりエッジで発生すると仮定すると、CLKのrst_async_nの立ち上がりエッジだけを除去するとき初段のDフリップフロップと仮定すると、Dフリップフロップ1出力はハイレベル「1」、第2段目のフリップフロップの出力は、更新されますが、出力Q1前の状態は、CLKのフリップフロップの正面出力されます。Q1がローになる前に、明らかに、二段目のフリップフロップ出力区はハイレベルとしてのみに次のCLK後までリセット低いままです。その同期リリース。

コード:

module reset_gen ( output rst_sync_n, input clk, rst_async_n);
reg rst_s1, rst_s2;
wire rst_sync_n ;

always @ (posedge clk, posedge 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; //注意这里的rst_sync_n才是我们真正对系统输出的复位信号

endmodule

おすすめ

転載: www.cnblogs.com/lyc-seu/p/12419839.html