大家好,我是數字小熊餅干,一個練習時長兩年半的ic打工人。我在兩年前通過自學跨行社招加入了IC行業。現在我打算將這兩年的工作經驗和當初面試時最常問的一些問題進行總結,并通過匯總成文章的形式進行輸出,相信無論你是在職的還是已經還準備入行,看過之后都會有有一些收獲,如果看完后喜歡的話就請關注我吧~謝謝~
世界是混沌的,每一個人在出生之時都有著無數的未來可能性,并在環境,家人,朋友和自身等多種因素的影響之下會逐漸向著某種方向發展。而對于芯片來說,其中分布著相當多的觸發器,當我們給芯片供電時,每個觸發器中存儲的是1還是0是不確定的,因此芯片的后續運行也有無數種可能,但是這顯然不是我們想要的,芯片工程師并不是神,無法窮究每一種可能性下的發展方向,我們只需要芯片在上電初期有一個確定的初始狀態,這樣我們才能使得芯片按照我們設定的軌跡運行下去,這就可以通過芯片中的復位系統實現。在芯片設計中,復位系統是一個很重要的部分,我們隨時可以通過復位來將數字電路中的觸發器設置到一個確定的初始值上,從而使得狀態機和其他的控制電路可以從一個已知的初始狀態開始工作。
ic基礎|復位篇∶關于同步復位和異步復位你不得不知道的二三事!
在我們前面的文章中(即上述藍色連接的那篇文章)已經提過了復位可以分為同步復位和異步復位兩種。在這兩種復位中,由于同步復位會帶來更多的資源消耗,以及擠占數據路徑會導致更多的延時,從而對時序的滿足造成負面影響等缺陷,我們的芯片中使用更多的還是異步復位。
在本期文章,我們將給出一個基礎的時鐘和復位產生模塊中的復位系統,并會將其和時鐘系統的配合進行簡要描述。
一、復位系統
下圖是一個簡單的復位系統,下面我們將對其進行介紹:
1.1 復位的源頭
對于芯片來說,其中的復位信號也有一個源頭,那就是上電復位(POR)電路,POR的作用是在芯片上電時,由POR產生的復位信號始終有效,使得芯片內部的電路保持靜態,當給芯片施加的電源電壓達到了一個能保證芯片正常工作的電壓之后,POR才會釋放其內部復位信號,芯片內部才能夠開始正常工作。
在上圖中的por就是這個復位系統的上電復位模塊,其中的rst_n_ext為外部輸入的復位信號。外部的電路可以使用該信號對芯片的復位進行控制。
1.2 復位的同步
對于復位信號來說,其釋放需要滿足恢復時間(recovery time)和撤銷時間(removal time),因此在我們的復位系統設計之中,需要對每個異步時鐘區域獨立地同步復位。如上圖所示,其中對每個獨立的時鐘區域都使用了一個獨立的復位同步器。
在這里我們還加入了兩個信號rst_bypass_sel和rst_bypass_n,這兩個信號是用于可測性設計(dft,design for test)的,由于芯片中的部分復位信號是受寄存器控制的,在scan shift過程中寄存器的值并不確定,因此可能導致復位錯誤觸發,因此為了避免這種情況的發生,我們可以通過加入一個mux,通過rst_bypass_sel選擇在scan shift過程中選擇rst_bypass_n。
1.3 復位和時鐘的配合
由于鎖相環pll的輸出穩定需要一定的時間,在pll沒有鎖定之前,應該保持復位信號始終有效,以避免由于時鐘的不穩定導致芯片的運行出現問題,因此在上圖中,我們首先將por釋放的原始復位信號輸入至pll,等待其穩定之后,即產生了pll的鎖定信號pll_locked,后續邏輯部分的復位信號pll_rst_n才能被釋放。
1.4 寄存器復位信號
和通過寄存器配置時鐘使能信號類似,我們也可以通過寄存器配置模塊的復位信號(如圖中的reg_rst_n),以便需要的時候,我們能夠通過軟件控制的模塊復位,將其變為一個確定的初始狀態。
二、上電流程
下面結合一個實例來說明復位系統的使用:
先說明一下圖上的各個信號:
- VDDIO和VANA是上電管腳;
- XSHUTDOWN是管腳輸入的外部復位信號;
- EXTCLK是管腳輸入的外部參考鐘;
-SDA和SCL為I2C信號;
在了解了各個信號的內容后,我們進一步對該芯片的上電時序進行說明:
- 第一步先在VDDIO和VANA處給電,兩個管腳給電順序可變,只需要滿足一定的時間要求即可;
- 在VDDIO和VANA兩個管腳給電時,根據XSHUTDOWN的電平有以下兩種情況:
-電源VDDA和VDDIO接通時,如果XSHUTDOWN為低電平或關閉,則該芯片進入硬件待機模式(此時不能通過軟件配置寄存器)。
-如果電源接通(超過電壓電平的90%, 即達到電壓閾值)后將XSHUTDOWN變為高電平,則該芯片進入軟件待機模式(即可通過軟件配置寄存器)。
-在這兩種情況下,通過POR在合適的時機釋放其內部復位信號,確保寄存器值正確初始化為其默認值。 - 在釋放外部復位后,給入參考鐘;
- 還需要等待一段時間(即圖中的t4),以確保pll穩定,并進行一系列初始化操作等等;
- 等待了t4后,此時可以響應i2c命令,對芯片進行配置,例如釋放各個模塊的軟件復位,進行正常工作下的初始化配置等等;
- 芯片進入正常工作模式。
三、總結
以上就是我們本篇文章的全部內容了,希望大家看了能有所收獲吧~
最后,還提一個關于復位的小知識,由于帶有復位引腳的觸發器所占用的芯片面積比沒有復位引腳的觸發器略微大一些,因此,如果用于保存數據信號的觸發器的初始值無關緊要(即該數據信號不會用于做控制邏輯驅動后續的電路,且在后續工作過程中會有正確的數據對其進行覆蓋),那么,我們可以使用不帶復位引腳的觸發器,以降低芯片的面積。
如果你喜歡這篇文章的話,請關注我的公眾號-熊熊的ic車間,里面還有ic設計和ic驗證的學習資料和書籍等著你呢~歡迎您的關注!