<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                在實際的工程中選擇復位策略之前必須考慮許多設計方面的問題,如使用同步復位或者異步復位或者異步復位同步釋放(Asynchronous Reset Synchronous Release或者Synchronized Asynchronous Reset),以及是否每一個觸發器都需要進行復位。復位的基本目的是使器件進入到可以穩定工作的確定狀態,這避免了器件在上電后進入到隨機狀態導致跑飛了。在實際設計過程中,設計者必須選擇最適合于設計本身的復位方式。 ## 同步復位 同步復位就是指復位信號只有在時鐘上升沿到來時,才能有效。同步復位RTL代碼: ![](https://img.kancloud.cn/96/ff/96ff69354e3abef68961e0a2075435ce_463x355.png) 綜合后的RTL圖如下: ![](https://img.kancloud.cn/bf/94/bf94b56817a757e0dd4a15d10bb7f1d2_342x120.png) ## 異步復位 異步復位是指無論時鐘沿是否到來,只要復位信號有效,就對系統進行復位。異步復位RTL代碼: ![](https://img.kancloud.cn/a9/fe/a9fefee2c85000412673fe8dc974965c_540x353.png) 綜合后的RTL圖如下: ![](https://img.kancloud.cn/92/4c/924c790c91837ef8767f4bfa68c1b2cb_272x136.png) 對比兩者綜合后的RTL視圖,發現同步復位會多使用一些邏輯單元,這是因為Altera的元件庫中的觸發器帶有異步復位端。 ## 同步復位與異步復位的優缺點 同步復位的優點: * 一般能夠確保電路是百分之百同步的。 * 確保復位只發生在有效時鐘沿,可以作為過濾掉毛刺的手段。 同步復位的缺點: * 復位信號的有效時長必須大于時鐘周期,才能真正被系統識別并完成復位。同時還要考慮如:時鐘偏移、組合邏輯路徑延時、復位延時等因素。 * 由于大多數的廠商目標庫內的觸發器都只有異步復位端口,采用同步復位的話,就會耗費較多的邏輯資源。 異步復位優點: * 異步復位信號識別方便,而且可以很方便的使用全局復位。 * 由于大多數的廠商目標庫內的觸發器都有異步復位端口,可以節約邏輯資源。 異步復位缺點: * 復位信號容易受到毛刺的影響。 * 復位結束時刻恰在亞穩態窗口內時,無法決定現在的復位狀態是1還是0,會導致亞穩態。 ## 異步復位同步釋放 使用異步復位同步釋放就可以消除上述缺點。所謂異步復位,同步釋放就是在復位信號到來的時候不受時鐘信號的同步,而是在復位信號釋放的時候受到時鐘信號的同步。異步復位同步釋放的原理圖和代碼如下: ![](images/screenshot_1643276556145.png) ``` //Synchronized Asynchronous Reset module sync_async_reset ( input clock, input reset_n, input data_a, input data_b, output out_a, output out_b); reg reg1, reg2; reg reg3, reg4; assign out_a = reg1; assign out_b = reg2; assign rst_n = reg4; always @ (posedge clock, negedge reset_n) begin if (!reset_n) begin reg3 <= 1'b0; reg4 <= 1'b0; end else begin reg3 <= 1'b1; reg4 <= reg3; end end always @ (posedge clock, negedge rst_n) begin if (!rst_n) begin reg1 <= 1'b0; reg2 <= 1'b0; end else begin reg1 <= data_a; reg2 <= data_b; end end endmodule // sync_async_reset ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看