上思維導圖:
如果要問“芯片中怎么復位才對?”
很多人都會回答“異步復位同步釋放”。
為什么要用異步復位同步釋放,是不是所有的芯片都必須采用這種方式,估計很少人能回答上來。那么讓我們從為什么要復位開始。
1. 復位的目的
復位信號在數字電路里面的重要性僅次于時鐘信號。對一個芯片來說,復位的主要目的是使芯片電路進入一個已知的,確定的狀態。主要是觸發器進入確定的狀態。在一般情況下,芯片中的每個觸發器都應該是可復位的。在某些情況下,當在高速應用程序中使用流水線觸發器(移位寄存器觸發器)時,為了實現更高的性能設計,可能會從某些觸發器中消除復位。這種類型設計需要在復位期間,運行預先確定數量的時鐘周期,以使ASIC處于已知的狀態。
1.1 為什么需要復位呢?
1)復位可以使電路從確定的初始狀態開始運行:
上電復位:上電的時候,為了避免上電后進入隨機狀態而使電路紊亂,這個時候就需要上電復位。
中間復位:有時候,要求電路從初始狀態開始執行電路的功能,要對電路進行復位,讓它從初的狀態開始運行。
2) 復位可以使電路從錯誤狀態回到可以控制的確定狀態:
如果電路發生了異常,比如狀態不正常,中斷異常,firmware程序跑飛,這個時候就可以對電路進行復位,讓它從錯誤的狀態回到一個正常的狀態。
3) 電路仿真時需要電路具有已知的初始值
在仿真的時候,信號在初始狀態是未知狀態(也就是所謂的x,對信號初始化之后的這種情況除外,因為仿真的時候對信號初始化就使信號有了初始值,這就不是x了)。
對于數據通路(數字系統一般分為數據通路和控制通路,數據通路一般是對輸入的數據進行處理,控制通路則是對運行的情況進行操作),在實際電路中,只要輸入是有效數據(開始的時候可能不是有效的),輸出后的狀態也是確定的;在仿真的時候,也是輸入數據有效了,輸出也就確定了。也就是說,初始不定態對數據通路的影響不明顯。
對于控制通路,在實際電路中,只要控制通路完備(比如說控制通路的狀態機是完備的),初始狀態是不定態,在經過一定的循環后,還是能回到正確的狀態上;在仿真的時候就不行了,仿真的時候由于初始狀態為未知態,控制電路一開始就陷入了未知態;仿真跟實際電路不同,仿真是“串行”的,仿真時控制信號的初始不定態會導致后續的控制信號結果都是不定態,也就是說,初始的不定態對控制通道是致命的。

