前言:
最近看到群里面有些萌新在進行討論數字電路中的復位邏輯,所以專門寫一篇討論復位的文章,希望能幫助大家理解復位。
引言:
在IC設計中,把復位和時鐘電路稱為最重要的兩個電路一點也不為過。前者復位電路把IC設計的電路引導到一個已知的狀態,后者時鐘電路給IC設計的電路提供澎湃的心跳動力。同時,這兩者主要作用于電路中的時序元件。對于時序元件,不可避免地會有一些信號時間上額外的要求。
正文:
復位電路的作用:
(1)在仿真時:使仿真的電路進入規定的初始化狀態或者其他預知的狀態,基于此狀態下,電路進行狀態變換。如果仿真中時序元件沒有復位電路,從波形圖上只能看到時序單元周圍邏輯都是X標紅的狀態。
(2)在IC設計中:復位信號可以讓設計的硬件電路進入一個穩定且狀態確定的狀態,避免因為上電后電路進入到隨機的狀態而硬件死機。如果用示波器捕捉內部時序單元的信號狀態,信號為高低電平之一,只是高低電平的信號可能不符合設計的預期。
PS:對于仿真時候的信號未知X狀態和IC設計中的高低電平。可以得出結論:在Verilog語法中,用仿真X狀態表示物理時序單元電路當前狀態未知,信號可能為高或低電平。
PS:由上,是否電路中所有的單元都需要復位信號?
答:不是,首先組合邏輯電路是不需要復位信號的。其次不需要立刻進入明確狀態的電路:數據流水線寄存器、數據移位寄存器等也不需要復位信號。
復位電路的分類:
對于電路中的時序元件,把復位信號受到時鐘的控制和復位信號不受時鐘的控制兩種電路分別稱為同步復位電路和異步復位電路。如下圖:
同步復位:
在同步復位的電路中,只有當時鐘到來時才會把復位或者數據信息傳輸到寄存器內部,影響寄存器內部的狀態變換。如上圖所示,在同步復位電路中,復位信號本質上其實就是一組數據信號。復位和數據信號都需要在時鐘的驅動下進行傳輸。所以此處的同步復位電路默認就有了優先級(時鐘>復位>數據)。
同步復位的優點:
(1)在同步復位電路下,復位和數據信號都受到時鐘信號的控制,所以同步復位一般可以確保電路是一個同步電路(漫談IC亞穩態)。
(2)在ASIC設計中,同步電路一般可以綜合為更小的同步觸發器(因為觸發器沒有包含復位邏輯),但是在FPGA設計中并不如此,一般FPGA的時序元件為帶異步復位的觸發器(也有同步觸發器,視廠家而定)。如果在FPGA設計中使用同步復位,其消耗的資源相對較多。
(3)由于觸發器的跳轉只在時鐘的邊沿,所以觸發器可以在一定程度上過濾電路毛刺。進而如果復位由電路內部的邏輯控制,在這種情況下可以在設計中使用同步復位:通過可以在一定程度上過濾電路毛刺的特性,過濾掉內部電路邏輯產生的毛刺,使設計更魯棒。
同步復位的缺點:
(1)同步復位需要較長的保持復位狀態時間(最小也要大于時鐘周期),保證同步復位信號可以到達每一個寄存器并且要在有效時鐘沿之前到達(在真正設計使用的時候還需要考慮時鐘偏斜、組合邏輯延時、復位延時等,即:同步復位信號時長> 時鐘周期 + 時鐘偏斜 + 組合邏輯延時)。
(2)在低功耗設計中,同步復位一般不能用于門控時鐘控制的電路。因為同步復位電路中,主要靠時鐘驅動復位和數據。當復位發出時,有可能時序電路此時并沒有時鐘驅動,那么此時的復位就不能完成。
異步復位:
擁有異步復位的寄存器在設計的時候就已經多了一個復位引腳。通過觸發該引腳的狀態可以在任何時候進行異步復位電路中寄存器。此時異步復位電路的默認優先級為:(復位>時鐘>數據)(如上上圖)。
異步復位的優點:
(1)異步復位的復位邏輯和數據邏輯沒有任何關系,所以相比同步復位,能夠使數據路徑更好地收斂。(上上圖對比)
(2)不用在時鐘的控制下進行復位,所以對于剛才所提到的低功耗設計中,可以達到無時鐘復位的效果[注意:寄存器復位后的正常狀態恢復需要時鐘參與]。
異步復位的缺點:
(1)因為異步復位不受時鐘的控制,所以當電路復位引腳有毛刺的時候,會引起電路的異常復位。
(2)在異步復位的時候,如果釋放復位信號在時鐘有效邊沿周圍。那么可能會引起時序單元的輸出出現亞穩態,導致電路亞穩態傳播。如下圖:
如圖所示:
復位信號在時鐘有效沿之前Recovery Time時間內釋放可能會引起觸發器輸出亞穩態。
復位信號在時鐘有效沿之后RemovalTime時間內釋放也可能會引起觸發器輸出亞穩態。
對比set up time&hold time和此處的Recovery time &Removaltime,可以發現對于觸發器來說,輸入信號(Data 和 RST_n)都需要對于時鐘信號沿保持穩定的一個時間窗口,否則觸發器可能會導致亞穩態的輸出。為了避免觸發器的亞穩態,就需要保證不要在觸發器的這幾個時間窗內信號有變化。(漫談STA-setup/hold time)
結合同步復位和異步復位的優點可以得到:
異步復位同步釋放電路:如下圖
RST_n信號同時復位這兩個觸發器,這一對觸發器的輸出信號傳輸并驅動電路中的其他時序元件完成復位,最后使整個相連接的設計進行復位。
很明顯可以看出這兩個觸發器就是所謂的同步器邏輯。在進行數據跨時鐘處理的時候可以通過該同步器邏輯將一個時鐘域的信號傳輸到另一個時鐘域。
如上圖所示:
當復位信號被撤銷時:RST_n [0->1],此時數據VCC將在時鐘的控制下進入主觸發器。如果此時復位信號被撤銷時候恰好碰到時鐘的有效沿引起主觸發器的亞穩態。但是此時從觸發器在時鐘控制下,輸入的是主觸發器輸出的復位穩定值。
如下圖:雖然主觸發器在T2時刻違背了復位時間窗口,輸出了Q1亞穩態的搖擺電平。但是從觸發器此時的數據輸入接收的還是主觸發器輸出的Q1穩態的復位狀態0。所以從觸發器Q2的輸出是穩定的復位狀態0。在T3時刻主觸發器已經從亞穩態狀態恢復,輸出的是穩定的工作狀態電平了(Q1=1)。T3時刻從觸發器采樣的是穩定的工作狀態電平,輸出也是穩定的工作狀態電平,復位完成。
PS:有同學可能會問,RST_n既然對主觸發器違反復位時間窗口,對從觸發器來說,也一樣違反了時間窗口。那從觸發器為什么就沒有進入亞穩態呢?
答:對于從觸發器來說,RST_n跳變在其復位時鐘窗口內,所以違反了從觸發器的復位時間窗口,但是從上圖可以觀察到,從觸發器在T2時刻時鐘沿的輸入為Q1=0,在T1時刻時鐘沿的輸出為Q2=0,對于從觸發器來說,復位前的狀態和復位后的狀態是一樣的。寄存器內部的鎖存器不需要跳變來更新自己的狀態。所以也就不會因為內部鎖存器的電平跳變從而導致亞穩態的發生。
一般來說,完整的一顆SOC芯片內部不止有一個時鐘,一般會有多個時鐘。所以此時對每一個時鐘域下的Reset_n信號都有一套異步復位同步釋放邏輯。來保證在自己的時鐘域下,復位釋放和時鐘具有同步的關系,來驅動該時鐘域下相關的邏輯和狀態的變換等操作。如下圖:
結論:
為了避免在復位釋放的時候引起電路亞穩態,通常采用異步復位同步釋放的電路。有效的復位信號可以快速復位相關聯的邏輯且不用等待時鐘的驅動。同時復位信號經過異步復位同步釋放的電路之后,復位信號受到時鐘信號的控制(復位信號釋放不會在時鐘沿的任意點),有效避免了因異步復位信號的移除而引起的電路亞穩態情況的出現。
審核編輯:劉清
-
IC設計
+關注
關注
38文章
1343瀏覽量
104973 -
時序電路
+關注
關注
1文章
114瀏覽量
21825 -
移位寄存器
+關注
關注
3文章
285瀏覽量
22576 -
觸發器
+關注
關注
14文章
2029瀏覽量
61725 -
時鐘電路
+關注
關注
10文章
240瀏覽量
51108
原文標題:漫談--復位reset
文章出處:【微信號:Rocker-IC,微信公眾號:路科驗證】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
HT66Fx0系列MCU的Reset復位電路應用介紹
復位穩定放大器:The Reset Stabilized A

上電復位和按鍵復位區別

上電時實現延時系統復位的IC,reset IC
STM32下載后無法自動復位,需手動復位 下載程序時,勾選reset and run后仍不可自動復位

評論