天天看點

複位方式、時鐘複位流程一、複位方式:二、時鐘複位流程

一、複位方式:

  • 複位概念-宏觀,對于一個系統,其複位的方式一般包含硬體複位、軟體複位、上電複位:

    • 硬體複位
      • 顧名思義通過硬體給系統一個複位,比如在電路闆上設計一複位電路,通過按下按鍵就可以給系統實作一個複位,而無論系統在執行什麼樣的程式。
      • 複位啟動以後需要重新加載加載FPGA、DSP等,也有可能在這個操作之前初始化化CPU,加載系統檔案等操作,具體視需要而定,然後初始化一些配置晶片。
      • 硬體複位的作用區域一般是全局的。
    • 軟體複位
      • 是通過軟體給系統一個複位信号,如低電平或許是高電平(具體看系統設定)來實作複位操作。
      • 複位啟動不需要進行FPGA、DSP等的加載,隻是一些配置晶片的初始化。
      • 軟體複位一般是一些塊結構
    • 上電複位
      • 系統在上電的瞬間就執行複位操作, 上電複位裡面包括硬體複位和軟複位的操作,硬體複位和軟複位是從上電複位裡面的某點開始的啟動操作。
      • 複位需要初始化CPU系統,包括CPU和記憶體等,并加載系統,加載初始化作業系統以及FPGA、配置晶片的初始化,是一個完成的過程。
  • 複位方法-code實作,verilog中代碼實作方式往往有同步複位、異步複位、同步釋放:

    • 同步複位、異步複位:同步複位與異步複位的差別 - 格桑花FPGA - 部落格園。一般來說,都使用異步複位,這是因為同步複位比異步複位的電路實作,要浪費更多電路資源。
    • 同步釋放:異步複位中的clk和rst是異步的,這裡的異步是指rst和clk在不同的時鐘域(當然也有可能是在同一時鐘域下),在這裡做同步一方面是将rst信号同步到rst的時鐘域,另一方面是避免了rst在clk的上升沿釋放,這樣可以避免電路亞穩态的輸出。參考下連結:異步複位同步釋放---關于複位的問題 - 齊威王 - 部落格園
    • 綜上,最好的複位方法:異步複位同步釋放。
      • 同步複位:可能産生亞穩态,如下時序圖(右1),rst釋放在clk上升沿(T1時刻,此時是同時鐘域)。
      • 異步複位:可能産生亞穩态,如下時序圖(右1),如rst釋放在clk上升沿(T1時刻,此時可能是同時鐘域或不同時鐘域)。
        • 補充:因為異步複位的rst有可能和目前電路的clk不在同一個時鐘域,相比于同步複位,異步複位就會更加容易産生亞穩态。
      • 同步釋放實作(經驗之談):在電路中加入rsync同步器。如下兩圖,在異步複位中rst釋放的瞬間為T1時刻,和clk的時鐘沿完全對齊,可能導緻電路出現亞穩态;在加入rsync同步器後,rst被打一拍(也有可能是二拍、三拍...)輸出為rst',其實rsync實作的并不是真是一拍,rst'是在距T2之前的tmp就已經被拉起來了(tmp滿足建立時間),是以在 T2采集到的rst'是一個準确的時鐘,并不會産生亞穩态。
        • 這裡說的rsync同步電路就是實作的上述功能。
複位方式、時鐘複位流程一、複位方式:二、時鐘複位流程
複位方式、時鐘複位流程一、複位方式:二、時鐘複位流程

二、時鐘複位流程

        常見的時鐘複位流程:關鐘複位、開鐘複位。這兩種複位方式都屬于異步複位方式,使用目的都是為了保證電路滿足時序。

  • 關鐘複位:如下圖,也叫做先解rst再開鐘,必須rst先釋放,之後時鐘再産生(或者clk gten打開産生clk)。并且二次複位随時都可以進行,但也必須滿足圖中時序。
    • 例:rst釋放->clk gten打開(産生clk)->工作 ->clk gten關閉(關閉clk) ->rst拉低 ->rst釋放...​​​​​​​...
複位方式、時鐘複位流程一、複位方式:二、時鐘複位流程
  • 開鐘複位:如下圖,該複位的rst可以在clk任何時刻釋放,但應盡量避免在T2時刻的clk沿,因為此時有可能導緻第一拍采不到rst釋放,造成目前拍資料異常,也有可能導緻電路内部産生亞穩态。為了避免開鐘複位的rst釋放在clk的上升沿,在電路中加入了同步器(如本文上面提到的rsync同步器,即同步釋放),保證了rst的釋放不在時鐘沿,避免了電路中亞穩态的産生。
複位方式、時鐘複位流程一、複位方式:二、時鐘複位流程

繼續閱讀