復(fù)位電路概述
復(fù)位信號在數(shù)字電路里面的重要性僅次于時(shí)鐘信號。對電路的復(fù)位往往是指對觸發(fā)器的復(fù)位,也就是說電路的復(fù)位中的這個(gè)“電路”,往往是指觸發(fā)器,這是需要注意的。
有的電路需要復(fù)位信號,就像是有的電路需要時(shí)鐘信號那樣,而有的電路是不需要復(fù)位信號的。
復(fù)位又分為同步復(fù)位和異步復(fù)位,這兩種各有優(yōu)缺點(diǎn)。
下面我們主要來說說復(fù)位信號的用途和不需要復(fù)位信號的情況。
(1)復(fù)位的目的
復(fù)位最基本的目的就是使電路(主要是觸發(fā)器)進(jìn)入一個(gè)能穩(wěn)定操作的確定狀態(tài)(主要是觸發(fā)器在在某個(gè)確定的狀態(tài)),主要表現(xiàn)為下面兩點(diǎn):
①使電路在復(fù)位后從確定的初始狀態(tài)運(yùn)行:
● 上電的時(shí)候,為了避免上電后進(jìn)入隨機(jī)狀態(tài)而使電路紊亂,這個(gè)時(shí)候你就需要上電復(fù)位了。
● 有時(shí)候,電路在某個(gè)狀態(tài)下,你想或者別人要求你從電路的初始狀態(tài)開始進(jìn)行延時(shí)你的電路功能,這個(gè)時(shí)候你就要對你的電路進(jìn)行復(fù)位,讓它從最初的狀態(tài)開始運(yùn)行。
②使電路從錯(cuò)誤狀態(tài)回到可以控制的確定狀態(tài):
有的時(shí)候,你的電路發(fā)生了異常,比如說狀態(tài)機(jī)跑飛了、系統(tǒng)供電炸了之類的,總之就是電路運(yùn)行得不正常了,這個(gè)時(shí)候你就要對電路進(jìn)行復(fù)位,讓它從錯(cuò)誤的狀態(tài)回到一個(gè)正常的狀態(tài)。
上面說的都是和實(shí)際電路有關(guān)的,下面我們就從電路仿真的角度看一下復(fù)位信號的重要性。
● 仿真的要求
復(fù)位信號在仿真里面主要是使電路仿真時(shí)具有可知的初始值:
在仿真的時(shí)候,信號在初始狀態(tài)是未知狀態(tài)(也就是所謂的x,不過對信號初始化之后的這種情況除外,因?yàn)榉抡娴臅r(shí)候?qū)π盘柍跏蓟褪剐盘栍辛顺跏贾担@就不是x了)。
對于數(shù)據(jù)通路 (數(shù)字系統(tǒng)一般分為數(shù)據(jù)通路和控制通路,數(shù)據(jù)通路一般是對輸入的數(shù)據(jù)進(jìn)行處理,控制通路則是對運(yùn)行的情況進(jìn)行操作),在實(shí)際電路中,只要輸入是有效數(shù)據(jù)(開始的時(shí)候可能不是有效的),輸出后的狀態(tài)也是確定的;在仿真的時(shí)候,也是輸入數(shù)據(jù)有效了,輸出也就確定了。也就是說,初始不定態(tài)對數(shù)據(jù)通路的影響不明顯。
對于控制通路 ,在實(shí)際電路中,只要控制通路完備(比如說控制通路的狀態(tài)機(jī)是完備的),即使初始狀態(tài)即使是不定態(tài),在經(jīng)過一定的循環(huán)后,還是能回到正確的狀態(tài)上;然而在仿真的時(shí)候就不行了,仿真的時(shí)候由于初始狀態(tài)為未知態(tài),控制電路一開始就陷入了未知態(tài);仿真跟實(shí)際電路不同,仿真是“串行”的,仿真時(shí)控制信號的初始不定態(tài)會(huì)導(dǎo)致后續(xù)的控制信號結(jié)果都是不定態(tài),也就是說,初始的不定態(tài)對控制通道是致命的。
(2)不需要復(fù)位信號的一些情況
復(fù)位信號很重要,但是并不是每一部分的電路都需要復(fù)位電路,一方面是復(fù)位電路也消耗邏輯資源、占用芯片面積,另一方面是復(fù)位信號會(huì)增加電路設(shè)計(jì)的復(fù)雜性(比如要考慮復(fù)位的策略、復(fù)位的布局布線等等)。
當(dāng)某個(gè)電路的輸出在任何時(shí)刻都可以不受到復(fù)位信號的控制就有正確的值時(shí),比如說數(shù)據(jù)通路中的對數(shù)據(jù)進(jìn)行處理的部分。
在某些情況下,當(dāng)流水線的寄存器(移位寄存觸發(fā)器)在高速應(yīng)用中時(shí),應(yīng)該去掉某些寄存器的復(fù)位信號以使設(shè)計(jì)達(dá)到更高的性能,因?yàn)閹?fù)位的觸發(fā)器比不帶復(fù)位的觸發(fā)器更復(fù)雜,反應(yīng)也更慢。
對復(fù)位信號/電路有一定的概念后, 下面我們就來說說復(fù)位的方式,也就是同步電路和異步電路以及它們的優(yōu)缺點(diǎn) 。
同步復(fù)位
(1)同步復(fù)位電路
同步復(fù)位是指復(fù)位信號在時(shí)鐘有效沿到來時(shí)才復(fù)位電路(主要是復(fù)位觸發(fā)器)。
因此同步復(fù)位的復(fù)位信號受到時(shí)鐘信號的控制。同步復(fù)位的觸發(fā)器RTL代碼和電路如下所示:
上面的電路在FPGA中容易綜合得到;也有可能綜合得到下面這樣的電路:
(2)同步復(fù)位的優(yōu)點(diǎn)
①首先同步復(fù)位一般能確保電路是100%同步的,因?yàn)殡娐范际怯赏綍r(shí)鐘觸發(fā)。
②同步復(fù)位會(huì)綜合為更小的觸發(fā)器(更小??感覺有點(diǎn)不太對,可能FPGA跟ASIC不一樣吧?)。從前面電路中我們也可以看到,復(fù)位電路僅僅是由一個(gè)普通的觸發(fā)器和一個(gè)與門構(gòu)成。
③由于同步復(fù)位僅僅發(fā)生在時(shí)鐘的有效沿,當(dāng)外部的復(fù)位信號有毛刺時(shí),時(shí)鐘可以當(dāng)做過濾毛刺的手段,也就是說同步復(fù)位受到復(fù)位信號的毛刺影響小。
④當(dāng)復(fù)位信號是由內(nèi)部電路產(chǎn)生時(shí),此時(shí)復(fù)位信號就有可能有毛刺,時(shí)鐘就可以過濾毛刺。也就是說,可以在那些使用內(nèi)部信號當(dāng)做復(fù)位信號的設(shè)計(jì)中,使用同步復(fù)位。
(3)同步復(fù)位的缺點(diǎn)
①使用同步復(fù)位可能使綜合工具無法分辨分辨復(fù)位信號和其他控制信號,導(dǎo)致進(jìn)行復(fù)位的控制邏輯遠(yuǎn)離觸發(fā)器(也就是說,并不是所以的ASIC庫都有內(nèi)置的同步復(fù)位邏輯,綜合工具可能把符合邏輯綜合到觸發(fā)器自身之外)。
例如對于帶同步復(fù)位和加載使能的觸發(fā)器,代碼如下所示:
綜合得到的電路圖如下所示,左邊是理想的電路,右邊是可能綜合出的電路:
這兩個(gè)電路的功能完全一樣,只不過右邊電路的復(fù)位控制邏輯(即復(fù)位與門)在多路復(fù)用器之外,也就是遠(yuǎn)離了觸發(fā)器。
解決方法就是:一方面這個(gè)只是綜合工具的問題,一般綜合工具會(huì)自動(dòng)識(shí)別在敏感列表里面又在條件表達(dá)式信號中的第一個(gè)信號為復(fù)位信號;另一方面,可以在RTL代碼編寫的時(shí)候,加入相關(guān)的綜合指令,讓綜合的時(shí)候把復(fù)位邏輯靠近觸發(fā)器。
②由于同步復(fù)位需要在時(shí)鐘沿的觸發(fā)下才能起作用,復(fù)位信號是以短脈沖的方式出現(xiàn)時(shí),時(shí)鐘沿就有可能錯(cuò)失這個(gè)復(fù)位信號,導(dǎo)致復(fù)位脈沖丟失,同步復(fù)位電路沒有起到作用,時(shí)序圖如下所示:
解決辦法 :一方面,可以采用脈沖捕捉電路,這個(gè)電路在我的跨時(shí)鐘域控制信號傳輸中有講到。
另一方面,可以將復(fù)位信號進(jìn)行脈沖擴(kuò)展,維持足夠長的時(shí)間,這個(gè)可以通過一個(gè)小的計(jì)數(shù)器實(shí)現(xiàn),如下圖所示:
③同步復(fù)位可能有組合邏輯延時(shí),當(dāng)復(fù)位邏輯距離觸發(fā)器比較遠(yuǎn)時(shí),這個(gè)時(shí)候就不能把觸發(fā)器當(dāng)做即時(shí)響應(yīng)復(fù)位信號的觸發(fā)器,而是有一定延時(shí)的觸發(fā)器,這個(gè)時(shí)候就有了復(fù)位信號偏移的問題,關(guān)于復(fù)位信號偏移的描述,我們將在異步復(fù)位中進(jìn)行描述。
解決方法 :使用內(nèi)置的同步復(fù)位觸發(fā)器;綜合的時(shí)候加入相關(guān)的綜合指令,這個(gè)和①類似。
④我們前面說過,在由內(nèi)部組合邏輯的產(chǎn)生復(fù)位信號的設(shè)計(jì)中,推薦使用同步復(fù)位。其實(shí)這也是有缺點(diǎn)的,這是因?yàn)檫@樣產(chǎn)生復(fù)位信號的組合邏輯一方面在仿真的時(shí)候容易出現(xiàn)x態(tài),另一方面在實(shí)際電路中,這樣的復(fù)位信號容易被外部(多個(gè))信號影響。
解決方法 :不建議使用內(nèi)部產(chǎn)生的復(fù)位信號;使用異步復(fù)位。
⑤門控時(shí)鐘的同步復(fù)位可能無效:使用門控時(shí)鐘的時(shí)候,由于復(fù)位信號依賴于時(shí)鐘,在復(fù)位信號發(fā)出的時(shí)候,時(shí)鐘可能關(guān)閉了。
這個(gè)時(shí)候就會(huì)導(dǎo)致實(shí)際的電路沒有被復(fù)位,如下圖所示:
解決方法 :只能使用異步復(fù)位,并在時(shí)鐘恢復(fù)前移除異步復(fù)位。
⑥總線設(shè)計(jì)中的同步復(fù)位問題:
在總線控制中,系統(tǒng)上電復(fù)位的時(shí)候,我們要求不同芯片之間的總線工作在合理的狀態(tài)上(比如處于高阻態(tài)或者輸出);然而上電之后,由于系統(tǒng)時(shí)鐘可能仍未正常工作,上電(同步)復(fù)位就可能無效,這個(gè)時(shí)候各個(gè)模塊(芯片)就可能不會(huì)把總線接口設(shè)置為特定的狀態(tài),(當(dāng)多個(gè)模塊同時(shí)輸出數(shù)據(jù)到總線上時(shí))就可能導(dǎo)致電平?jīng)_突,嚴(yán)重的話會(huì)燒壞接口。
解決辦法 :為了防止芯片上電時(shí)內(nèi)部總線出現(xiàn)競爭,有兩種解決辦法,一種是采用異步上電復(fù)位,如下圖所示:
這個(gè)時(shí)候使用了異步復(fù)位,使能信號oe輸出0,也就是有了初始的狀態(tài)
另一種方法是使用復(fù)位信號能直接撤銷三態(tài)使能的電路,如下所示:
從電路圖中可以看到復(fù)位信號一方面控制了復(fù)位邏輯,另一方面控制了三態(tài)的使能端;這種技術(shù)簡化了復(fù)位-高阻這個(gè)條路徑的時(shí)序分析。
-
電路
+關(guān)注
關(guān)注
172文章
5936瀏覽量
172481 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61219 -
時(shí)鐘信號
+關(guān)注
關(guān)注
4文章
449瀏覽量
28590 -
復(fù)位信號
+關(guān)注
關(guān)注
0文章
54瀏覽量
6344
發(fā)布評論請先 登錄
相關(guān)推薦
評論