提高FPGA復(fù)位的可靠性 你知道多少
電源電路設(shè)計中,對FPGA設(shè)計中常用的復(fù)位設(shè)計方法進(jìn)行了分類、分析和比較。針對FPGA在復(fù)位過程中存在不 可靠復(fù)位的現(xiàn)象,本文例舉了提高復(fù)位設(shè)計可靠性的幾種方法,也就是采用清除復(fù)位信號上的毛刺、異步復(fù)位同步釋放、專用全局異步復(fù)位/置位資源和采用內(nèi)部復(fù) 位等方法來提高FPGA復(fù)位的可靠性。
對FPGA芯片而言,在給芯片加電工作前,芯片內(nèi)部各個節(jié)點(diǎn)電位的變化情況均不確定、不可控,而這種 不確定且不可控的情況會使芯片在上電后的工作狀態(tài)出現(xiàn)錯誤。因此,在FPGA的設(shè)計中,為保證系統(tǒng)能可靠進(jìn)進(jìn)入工作狀態(tài),以及避免對FPGA輸出關(guān)聯(lián)的系 統(tǒng)產(chǎn)生不良影響,F(xiàn)PGA上電后要進(jìn)行復(fù)位,且為了消除電源開關(guān)過程中引起的抖動影響,復(fù)位信號需在電源穩(wěn)定后經(jīng)過一定的延時才能撤銷,F(xiàn)PGA的復(fù)位信 號需保證正確、穩(wěn)定、可靠。
復(fù)位設(shè)計方法分類
復(fù)位的目的是在仿真時將設(shè)計強(qiáng)制定位在一 個可知狀態(tài),合理選擇復(fù)位方式是電路設(shè)計的關(guān)鍵。根據(jù)與系統(tǒng)時鐘域的關(guān)系,復(fù)位電路可分為同步復(fù)位和異步復(fù)位。同步復(fù)位是指復(fù)位信號只在時鐘沿到來時,才 有效。否則,無法完成對系統(tǒng)的復(fù)位工作。異步復(fù)位是指無論時鐘沿是否到來,只要復(fù)位信號有效,使對系統(tǒng)進(jìn)行復(fù)位。
根據(jù)是否存在外部復(fù)位端口,復(fù)位電路又可分為外部復(fù)位和內(nèi)部復(fù)位。外部復(fù)位是指復(fù)位信號主要來自外部引腳的輸入,如復(fù)位按鈕、電源模塊輸出等。內(nèi)部復(fù)位信號則是主要由FPGA內(nèi)部電路產(chǎn)生。
復(fù)位設(shè)計方法的比較
(1)同步復(fù)位
指 定同步復(fù)位時,always的敏感表中僅有一個時鐘沿信號,只有當(dāng)時鐘沿采集到同步復(fù)位的有效電平時,才會在時鐘沿到達(dá)時刻進(jìn)行復(fù)位操作。若目標(biāo)器件或可 用庫中的觸發(fā)器本身包含同步復(fù)位端口,則在實(shí)現(xiàn)同步復(fù)位電路時可直接調(diào)用同步復(fù)位端。然而多數(shù)目標(biāo)器件的觸發(fā)器本身并不包含同步復(fù)位端口,需使復(fù)位信號與 輸入信號組成某種組合邏輯,然后將其輸入到寄存器的輸入端。為了提高復(fù)位電路的優(yōu)先級,通常在電路描述時使用帶有優(yōu)先級的if…else結(jié)構(gòu),復(fù)位電路在 第一個if下描述,其他電路在else或else…if分支中描述。復(fù)位電路綜合后的RTL圖如圖1所示。
圖1 同步復(fù)位電路圖
根 據(jù)同步電路的特點(diǎn),其電路優(yōu)點(diǎn)有:同步復(fù)位有利于基于周期機(jī)制的仿真器進(jìn)行仿真;使用同步復(fù)位可設(shè)計100%的同步時序電路,有利于時序分析,其綜合結(jié)果 的頻率較高;(3)同步復(fù)位僅在時鐘的有效沿生效,可有效避免因毛刺造成的亞穩(wěn)態(tài)和錯誤。毛刺信號是由FPGA內(nèi)部結(jié)構(gòu)特征決定的,同步復(fù)位在進(jìn)行復(fù)位和 釋放復(fù)位信號時,僅當(dāng)時鐘沿采到復(fù)位信號電平變化時進(jìn)行相關(guān)操作,若復(fù)位信號樹的組合邏輯出現(xiàn)了某種毛刺,此時時鐘沿采到毛刺的概率較低,由此通過時鐘沿 采樣,可有效過波復(fù)位電路組合邏輯產(chǎn)生的毛刺,增強(qiáng)了電路穩(wěn)定性。
同步復(fù)位的缺點(diǎn)有:多數(shù)目標(biāo)器件庫的觸發(fā)器本身并不包含同步復(fù)位端口,使 用同步復(fù)位會增加更多邏輯資源;同步復(fù)位的最大問題在于必須保證復(fù)位信號的有效時間,需要一個脈寬延展器以確保復(fù)位信號有一定脈沖寬度,由此才能保證所有 觸發(fā)器均能有效復(fù)位。由于同步復(fù)位僅當(dāng)時鐘沿采到復(fù)位信號時才會進(jìn)行復(fù)位操作,所以其信號的持續(xù)時間要大于設(shè)計的最長時鐘周期,以保證所有時鐘的有效沿都 能采樣到同步復(fù)位信號。事實(shí)上,僅保證同步復(fù)位信號的持續(xù)時間大于最慢的時鐘周期是不夠的,設(shè)計中還需考慮到同步復(fù)位信號樹通過所有相關(guān)組合邏輯路徑時的 延時,以及由于時鐘布線產(chǎn)生的偏斜。只有同步復(fù)位大于時鐘最大周期,加上同步信號穿過的組合邏輯路徑延時和時鐘偏斜延時,才能確保同步復(fù)位的可靠。
(2)異步復(fù)位
指 定異步復(fù)位時,只需在always的敏感表中加人復(fù)位信號的有效沿即可,當(dāng)復(fù)位信號有效沿到達(dá)時,無論時鐘沿是否有效,復(fù)位均會立即發(fā)揮其功能。大多數(shù)目 標(biāo)器件和ASIC庫的觸發(fā)器均包含異步復(fù)位端口,異步復(fù)位會直接接人觸發(fā)器的異步復(fù)位端口,綜合后的RTL圖如圖2所示。
圖2 異步復(fù)位電路圖
根據(jù)異步電路的特點(diǎn),異步復(fù)位的優(yōu)點(diǎn)有:由于多數(shù)目標(biāo)器件庫的觸發(fā)器都包含異步復(fù)位端口,異步復(fù)位會節(jié)約邏輯資源;異步復(fù)位設(shè)計簡單;對于多數(shù)FPGA,均有專用的全局異步復(fù)位/置位資源(GSR,GlobalSetReset),還可使用GSR資源,異步復(fù)位到達(dá)所有寄存器的偏斜最小。
異 步復(fù)位的缺點(diǎn)如下:異步復(fù)位的作用和釋放與時鐘沿并無直接關(guān)系,異步復(fù)位生效時問題并不明顯;但當(dāng)釋放異步復(fù)位時,若異步復(fù)位信號釋放時間和時鐘的有效沿 到達(dá)時間幾乎一致,則容易造成觸發(fā)器輸出為亞穩(wěn)態(tài),形成邏輯錯誤;若異步復(fù)位邏輯樹的組合邏輯產(chǎn)生了毛刺,則毛刺的有效沿會使觸發(fā)器誤復(fù)位,造成邏輯錯 誤。
外部復(fù)位,復(fù)位信號主要來自外部引腳的輸人。復(fù)位信號在電路板上可能會受到來自其他線路的串?dāng)_,因此可能產(chǎn)生毛刺,在無需復(fù)位系統(tǒng)時, 毛刺信號可能導(dǎo)致系統(tǒng)誤復(fù)位。而內(nèi)部復(fù)位,F(xiàn)PGA上電配置完成后,由FPGA內(nèi)部電路產(chǎn)生復(fù)位信號,復(fù)位信號與時鐘同步。通常內(nèi)部復(fù)位的設(shè)計方法是:設(shè) 計一個初始值為0X0000的SRL16,將其輸人接高電平,輸出作為復(fù)位信號。復(fù)位可靠性設(shè)計方法
(1)消除復(fù)位信號上的毛刺
在系統(tǒng)設(shè)計中,若采用低有效復(fù)位信號,可按照圖3所示方法對復(fù)位信號中的毛刺進(jìn)行消除。延時器件對數(shù)據(jù)進(jìn)行延時的長度決定復(fù)位毛刺消除電路所能避免的毛刺長度,而延時器件的延時長度也決定需要提供有效復(fù)位信號的最短時間。
如 果復(fù)位信號高有效,則將圖3中的或門改為與門使用。為更好地消除毛刺,可在復(fù)位毛刺消除電路后再加上寄存器對復(fù)位信號進(jìn)行時鐘同步。在通常復(fù)位電路的設(shè)計 中,毛刺的長度一般情況下》1個時鐘周期,《16個時鐘周期。為節(jié)省資源,延時器件通常選用SRL16。SRL16可設(shè)置初始值,但不帶復(fù)位功能 16bit移位寄存器,能夠通過A0~A3的4根地在線選擇從第幾個寄存器輸出。通常將其作為一個普通的16bit移位寄存器使用。
(2)異步復(fù)位同步釋放
在 有些應(yīng)用中,復(fù)位信號需要在時鐘尚未給出或不穩(wěn)定的情況下傳到后級,在時鐘穩(wěn)定之后,再撤去復(fù)位信號。此時需使用異步復(fù)位來實(shí)現(xiàn)。由于異步復(fù)位時,時鐘和 復(fù)位關(guān)系的不確定性,易造成觸發(fā)器輸出亞穩(wěn)態(tài),引起邏輯錯誤。為確保其復(fù)位的可靠性,通常采用異步復(fù)位,同步釋放的方式。
所謂異步復(fù)位,同步釋放就是在復(fù)位信號到達(dá)時不受時鐘信號的同步,而是在該信號釋放時受時鐘信號的同步。通過一個復(fù)位信號綜合器便可實(shí)現(xiàn)異步復(fù)位,同步釋放。綜合后的RTL圖如圖3所示,其仿真結(jié)果表明該電路能有效的實(shí)現(xiàn)復(fù)位及脫離復(fù)位。
圖3 異步復(fù)位、同步釋放電路圖
(3)采用專用全局異步復(fù)位/置位資源
全局異步復(fù)位/置位資源的主要作用是對系統(tǒng)中存在的所有觸發(fā)器、鎖存器、查找表單元的輸出寄存器進(jìn)行復(fù)位,不會占有額外的布線資源。使用GSR資源,異步復(fù)位到達(dá)所有寄存器的偏斜最小。
(4)采用內(nèi)部復(fù)位的設(shè)計方法
在無需復(fù)位信號先于時鐘信號產(chǎn)生的應(yīng)用中,為避免外部復(fù)位毛刺的影響、異步復(fù)位電路可能引起的亞穩(wěn)態(tài)以及減少資源的使用率,可通過FPGA產(chǎn)生內(nèi)部復(fù)位,然后采用異步的方式對其的內(nèi)寄存器進(jìn)行復(fù)位。由于該復(fù)位信號由FPGA內(nèi)部產(chǎn)生,不會因外部干擾而產(chǎn)生毛刺,同時又與時鐘同步,不存在因異步復(fù)位導(dǎo)致的亞穩(wěn)態(tài)現(xiàn)象,因此可確保系統(tǒng)可靠復(fù)位。