在FPGA開(kāi)發(fā)中盡量避免全局復位的使用?(1)
最近幾天讀了Xilinx網(wǎng)站上一個(gè)很有意思的白皮書(shū)(white paper,wp272.pdf),名字叫《Get Smart About Reset:Think Local, Not Global》,在此分享一下心得,包括以前設計中很少注意到的一些細節。
在數字系統設計中,我們傳統上都認為,應該對所有的觸發(fā)器設置一個(gè)主復位,這樣將大大方便后續的測試工作。所以,在所有的程序中,我往往都在端口定義中使用同一個(gè)reset信號(其實(shí)好多時(shí)候根本就沒(méi)有用到)。所以,當看到文檔中提到,“不建議在FPGA設計中使用全局復位,或者說(shuō)應該努力避免這種設計方式”時(shí),許多設計人員(包括我)都會(huì )覺(jué)得非常難以理解,這種設計思想跟我們通常的認識是相沖突的!
繼續讀下去,不知不覺(jué)發(fā)現這個(gè)白皮書(shū)講的還真是在理。接下來(lái)把我的個(gè)人理解講述一下。
1.全局復位是不是關(guān)鍵時(shí)序?
全局復位信號一般由以下三種途徑獲得:
1. 第一種,最常見(jiàn)的,就是用一個(gè)復位按鈕產(chǎn)生一個(gè)復位信號接到FPGA的全局復位管腳上。它的速度顯然是非常慢的(因為是機械結構),而且存在抖動(dòng)的問(wèn)題。
2. 第二種是上電的時(shí)候由電源芯片產(chǎn)生的,如TI的TPS76x系列的電源系統一般都可以產(chǎn)生復位信號,供主芯片上電復位使用。
3. 第三種是由控制芯片產(chǎn)生的復位脈沖,這個(gè)是我們設計人員可以方便使用程序控制的。
在這些情況下,復位信號的變化與FGPA芯片內部信號相比看起來(lái)是及其緩慢的,例如,復位按鈕產(chǎn)生的復位信號的周期至少是在毫秒級別的,而我們FPGA內部信號往往是納米或者微秒級別的。復位信號的頻率是如此之低,以至于我們任務(wù)它不屬于關(guān)鍵時(shí)序(not TIming-criTIcal)。即使是對此類(lèi)信號進(jìn)行時(shí)序約束,約束的周期也是非常長(cháng)的。全局復位脈沖的周期遠大于時(shí)鐘周期,所以傳統意義上假設FPGA芯片中所有的觸發(fā)器都能夠得到有效的復位。
然而,隨著(zhù)FPGA性能和工作頻率的快速提高,這種假設開(kāi)始不再成立。此時(shí),全局復位信號的產(chǎn)生開(kāi)始成為時(shí)序關(guān)鍵的問(wèn)題。
評論