portant;">首先上思維導圖:
portant;">
portant;">如果要問“芯片中怎么復位才對?”
portant;">很多人都會回答“異步復位同步釋放”。
portant;">但是為什么要用異步復位同步釋放,是不是所有的芯片都必須采用這種方式,估計很少人能回答上來。那么讓我們從為什么要復位開始。
1. 復位的目的
portant;">復位信號在數(shù)字電路里面的重要性僅次于時鐘信號。對一個芯片來說,復位的主要目的是使芯片電路進入一個已知的,確定的狀態(tài)。主要是觸發(fā)器進入確定的狀態(tài)。在一般情況下,芯片中的每個觸發(fā)器都應(yīng)該是可復位的。在某些情況下,當在高速應(yīng)用程序中使用流水線觸發(fā)器(移位寄存器觸發(fā)器)時,為了實現(xiàn)更高的性能設(shè)計,可能會從某些觸發(fā)器中消除復位。這種類型設(shè)計需要在復位期間,運行預先確定數(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,不過對信號初始化之后的這種情況除外,因為仿真的時候?qū)π盘柍跏蓟褪剐盘栍辛顺跏贾?,這就不是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ù)的控制信號結(jié)果都是不定態(tài),也就是說,初始的不定態(tài)對控制通道是致命的。
portant;">