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