《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種具有自修復(fù)功能的容錯(cuò)數(shù)字電路
一種具有自修復(fù)功能的容錯(cuò)數(shù)字電路
來源:電子技術(shù)應(yīng)用2010年第10期
廖樂根,陳曉東
電子科技大學(xué) 機(jī)械電子工程學(xué)院,四川 成都611731
摘要: 提出了一種針對數(shù)字電路的自修復(fù)容錯(cuò)方法。該方法基于胚胎細(xì)胞的可重構(gòu)特性理論,用休眠細(xì)胞代替故障細(xì)胞的功能達(dá)到容錯(cuò)的目的。對應(yīng)用實(shí)例的分析表明:在相同系統(tǒng)資源的情況下,所提出的方法在容錯(cuò)單元數(shù)上能達(dá)到整列排除法的4倍。
中圖分類號: TP302.8
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號: 0258-7998(2010)10-0040-04
A fault-tolerant digital circuit with self-repairing
LIAO Le Gen,CHEN Xiao Dong
School of Mechatronics Engineering , University of Electronic Science and Technology of China, Chengdu 611731,China
Abstract: A self-repairing and fault-tolerant method for digital circuit is presented. This method is based on the embryonic cells’ reconstructed theory that resting cells replace function failure cells to achieve the purpose of fault-tolerant. The analysis of application example shows: in the same system resources, compared with entire column exclusion method, the fault-tolerant performance is more effective according to method proposed in this paper.
Key words : self-repairing;fault-tolerant;digital circuit

    高集成度、高質(zhì)量、高可靠性在數(shù)字電路設(shè)計(jì)中十分重要,數(shù)字電路出現(xiàn)故障的幾率隨著其規(guī)模和復(fù)雜度的增加而增大,對數(shù)字電路的容錯(cuò)研究有著重要意義[1-2]。自診斷和自修復(fù)對數(shù)字電路容錯(cuò)技術(shù)發(fā)展有著深遠(yuǎn)影響[3]。自診斷使電路能自動(dòng)探測到故障,而自修復(fù)使電路用較少的硬件資源將故障修復(fù)。
    由于多細(xì)胞器官具有高可靠性和高容錯(cuò)能力,這為數(shù)字電路的容錯(cuò)研究提供了重要的思想,許多研究者一直致力于在數(shù)字電路設(shè)計(jì)中找到一種新的自修復(fù)機(jī)理和有效的容錯(cuò)方法[4-5]。目前,在數(shù)字電路設(shè)計(jì)中存在兩種自修復(fù)機(jī)制:基于進(jìn)化思想和基于重構(gòu)思想。胚胎細(xì)胞就是基于重構(gòu)思想的自修復(fù)機(jī)制。
    為了提高數(shù)字電路的容錯(cuò)能力,本文提出一種自修復(fù)機(jī)制,并對基本結(jié)構(gòu)單元進(jìn)行設(shè)計(jì)研究,通過實(shí)例說明在基本結(jié)構(gòu)單元故障時(shí)自修復(fù)機(jī)制如何實(shí)現(xiàn)。
1 具有自修復(fù)功能的數(shù)字電路結(jié)構(gòu)
    基于胚胎細(xì)胞的重構(gòu)思想,針對數(shù)字電路提出了一種自修復(fù)機(jī)制,對應(yīng)具有自修復(fù)功能的數(shù)字電路結(jié)構(gòu)如圖1所示。

    自修復(fù)機(jī)制的主要思想:每個(gè)細(xì)胞對各自的功能模塊進(jìn)行檢測,當(dāng)出現(xiàn)功能故障時(shí),故障細(xì)胞被屏蔽,然后分兩種情況進(jìn)行處理:(1)故障細(xì)胞所在行的右側(cè)沒有休眠細(xì)胞:采取整列休眠屏蔽的方法,整列細(xì)胞的功能由其右邊列細(xì)胞取代實(shí)現(xiàn),故障細(xì)胞輸出err_out信號有效。由圖1可知,這列所有細(xì)胞的休眠信號err_in被置位,這將使得這列的其他功能細(xì)胞轉(zhuǎn)變?yōu)樾菝呒?xì)胞;(2)故障細(xì)胞所在行的右側(cè)有休眠細(xì)胞:通過傳遞休眠細(xì)胞地址的方法將休眠細(xì)胞激活為功能細(xì)胞,它將間接取代故障細(xì)胞的功能。通過這兩種情況的處理實(shí)現(xiàn)故障細(xì)胞的自修復(fù)功能。
    為了實(shí)現(xiàn)這種自修復(fù)機(jī)制,本文對細(xì)胞的結(jié)構(gòu)進(jìn)行設(shè)計(jì),每個(gè)細(xì)胞具有相同的硬件結(jié)構(gòu),其結(jié)構(gòu)如圖2所示。每個(gè)細(xì)胞包括地址產(chǎn)生模塊(AG)、Memory模塊、細(xì)胞功能模塊(FUN)、屏蔽信號產(chǎn)生模塊(SSG)、激發(fā)休眠細(xì)胞模塊(ARC)、休眠地址傳遞模塊(RAT)和I/O block。

    整個(gè)細(xì)胞除了能實(shí)現(xiàn)特定細(xì)胞功能,還能實(shí)現(xiàn)自修復(fù)機(jī)制。實(shí)現(xiàn)的特定功能主要包括AG模塊、Memory模塊、FUN模塊和I/O block模塊。Memory模塊根據(jù)AG模塊產(chǎn)生的地址讀取相應(yīng)的配置信息對FUN模塊進(jìn)行配置,實(shí)現(xiàn)細(xì)胞功能。實(shí)現(xiàn)自修復(fù)機(jī)制主要包括SSG模塊、RAT模塊和ARC模塊,SSG模塊產(chǎn)生屏蔽信號,對細(xì)胞實(shí)現(xiàn)的特定功能進(jìn)行屏蔽,RAT模塊傳遞正在休眠細(xì)胞的地址,ARC模塊主要用于激活休眠細(xì)胞。
1.1 AG模塊
    系統(tǒng)功能由多個(gè)細(xì)胞共同實(shí)現(xiàn),對同一行細(xì)胞來說,每個(gè)細(xì)胞需要實(shí)現(xiàn)的功能由它的地址決定,AG(Address Generator)模塊主要用來確定功能細(xì)胞的地址,使細(xì)胞實(shí)現(xiàn)相應(yīng)的功能。同一行每個(gè)細(xì)胞的地址addr由左邊細(xì)胞的輸出地址addr_in加“1”得到,AG模塊結(jié)構(gòu)如圖3所示。

其中N為細(xì)胞所在行必需的功能細(xì)胞數(shù),addr_out為此細(xì)胞的輸出地址,其輸出值與細(xì)胞類型有關(guān)。
    (1)功能細(xì)胞:addr_out=addr,輸出本細(xì)胞地址。
    (2)備用細(xì)胞:addr_out=addr_in,通過比較器Cmp1輸出的備用信號spare來判斷此細(xì)胞是否為備用細(xì)胞。當(dāng)addr_in與N相等時(shí),表示左邊細(xì)胞是本行必需的最后一個(gè)功能細(xì)胞,則此細(xì)胞就為備用細(xì)胞,輸出spare有效。
    (3)故障細(xì)胞或休眠細(xì)胞:addr_out=addr_in,當(dāng)功能細(xì)胞變?yōu)楣收霞?xì)胞或休眠細(xì)胞時(shí),其輸出地址等于左邊細(xì)胞的輸出地址,此細(xì)胞需實(shí)現(xiàn)的功能由右邊功能細(xì)胞完成,從而實(shí)現(xiàn)自修復(fù)功能。
1.2 FUN模塊
      FUN(Function unit)模塊主要實(shí)現(xiàn)細(xì)胞的邏輯和時(shí)序功能,是完成細(xì)胞特定功能的主要模塊,F(xiàn)UN模塊結(jié)構(gòu)如圖4所示。其中exist信號反映細(xì)胞右側(cè)是否存在休眠細(xì)胞,其值由休眠細(xì)胞地址restaddr(RAT模塊產(chǎn)生)各位相或所得,exist為“0”表示右側(cè)沒有休眠細(xì)胞,exist為“1”表示右側(cè)有休眠細(xì)胞。RAM1由Memory模塊進(jìn)行配置,儲(chǔ)存細(xì)胞要實(shí)現(xiàn)的功能信息,通過查找表方式將功能結(jié)果輸出,R0用于控制輸出結(jié)果是否被寄存。RAM2是RAM1的冗余存儲(chǔ)單元,RAM2與RAM1相同地址的比特信息剛好相反,它們的輸出值經(jīng)過同或門后可以判斷細(xì)胞是否出現(xiàn)功能故障。當(dāng)RAM1或RAM2出錯(cuò)時(shí),故障信號err變?yōu)橛行?,F(xiàn)UN模塊的輸出信號fun_out為高阻態(tài),若此細(xì)胞右側(cè)沒有休眠細(xì)胞,輸出err_out信號有效,本列的其他功能細(xì)胞轉(zhuǎn)變?yōu)樾菝呒?xì)胞。

1.3 SSG模塊
    SSG(Shield Signal Generator)模塊主要是在滿足條件時(shí)產(chǎn)生屏蔽信號shield。故障細(xì)胞或休眠細(xì)胞需要被屏蔽,當(dāng)休眠細(xì)胞需要被激活時(shí),屏蔽信號shield應(yīng)該無效,使休眠細(xì)胞轉(zhuǎn)變?yōu)楣δ芗?xì)胞。
    SSG模塊的真值表如表1所示。其中active為激活休眠細(xì)胞信號,由激發(fā)休眠細(xì)胞模塊ARC(Activate Resting Cell)產(chǎn)生。

    由表1可知,故障細(xì)胞和休眠細(xì)胞的屏蔽信號shield有效,當(dāng)休眠細(xì)胞的激活信號active有效時(shí),屏蔽信號shield無效。
1.4 RAT模塊
    RAT(Resting Address Transfer)模塊主要是向左傳遞休眠細(xì)胞的地址,同時(shí)如果細(xì)胞被轉(zhuǎn)變?yōu)樾菝呒?xì)胞,則將此細(xì)胞的地址向左側(cè)傳遞。細(xì)胞輸出的休眠細(xì)胞地址restaddr_out與細(xì)胞類型有關(guān)。
    (1)休眠細(xì)胞:restaddr_out=addr,休眠細(xì)胞將自己的地址addr作為休眠細(xì)胞地址輸出。
    (2)其他類型細(xì)胞:restaddr_out= restaddr_in,其他類型細(xì)胞對于輸入的休眠細(xì)胞地址restaddr_in起傳遞作用。
1.5 ARC模塊
    當(dāng)細(xì)胞發(fā)生故障且右側(cè)有休眠細(xì)胞時(shí),不需要將整列功能細(xì)胞屏蔽,只需將故障細(xì)胞屏蔽,同時(shí)ARC模塊向右傳遞需要激活的休眠細(xì)胞的地址,讓休眠細(xì)胞變?yōu)楣δ芗?xì)胞,實(shí)現(xiàn)自修復(fù)功能。ARC模塊在不同情況下的作用不同。
    (1)故障細(xì)胞且右側(cè)有休眠細(xì)胞:ARC模塊將暫存的休眠細(xì)胞的地址restaddr作為激活地址activaddr_out輸出,即activaddr_out=restaddr。
    (2)休眠細(xì)胞:在休眠期間,激活信號active為比較器Cmp2的輸出,當(dāng)輸入的激活地址activaddr_in為本細(xì)胞地址時(shí),激活信號active有效。由表1可知,屏蔽信號shield變?yōu)闊o效,休眠細(xì)胞被激活為功能細(xì)胞。
    (3)其他情況:activaddr_out=activaddr_in,ARC模塊起傳遞激活地址作用。
1.6 I/O Block
    I/O Block主要實(shí)現(xiàn)與其他細(xì)胞通信以及是否選擇細(xì)胞功能模塊FUN的結(jié)果作為輸出,是實(shí)現(xiàn)細(xì)胞功能屏蔽的控制模塊。細(xì)胞的輸入輸出數(shù)據(jù)流程如圖5所示。


2 實(shí)例分析
  設(shè)系統(tǒng)由4×6細(xì)胞陣列構(gòu)成,包括功能細(xì)胞和備用細(xì)胞s,如圖6所示。功能細(xì)胞所標(biāo)識(shí)的具體數(shù)字表示其AG模塊產(chǎn)生的地址,這個(gè)地址決定了細(xì)胞要具體實(shí)現(xiàn)的功能。此系統(tǒng)需要的功能細(xì)胞數(shù)每一行為4,所以各個(gè)細(xì)胞的N均為4。下面分析系統(tǒng)從正常工作到單個(gè)細(xì)胞故障,再到多個(gè)細(xì)胞故障時(shí)各階段如何實(shí)現(xiàn)故障自修復(fù)功能。

2.1 細(xì)胞無故障階段
    每個(gè)功能細(xì)胞的地址由AG模塊產(chǎn)生,其地址從左向右從1開始依次遞增,如圖6所示。細(xì)胞根據(jù)其地址從Memory模塊中讀取相應(yīng)的功能配置信息到FUN模塊的RAM1和RAM2中實(shí)現(xiàn)相應(yīng)的功能。第五列和第六列的細(xì)胞根據(jù)其AG模塊輸出備用信號spare有效,判定為備用細(xì)胞s,I/O Block將備用細(xì)胞屏蔽。在這個(gè)階段,所有細(xì)胞的RAT模塊和ARC模塊只起著傳遞作用。
2.2 單個(gè)細(xì)胞故障
    假設(shè)第二行第三列的細(xì)胞發(fā)生故障,此細(xì)胞的故障信號err被置為“1”。由表1可知,此故障細(xì)胞被屏蔽。由于此細(xì)胞右側(cè)沒有休眠細(xì)胞,所以故障細(xì)胞的err_out信號有效,從而第三列所有細(xì)胞的 err_in信號有效,由表1可知,第三列其他功能細(xì)胞變?yōu)樾菝呒?xì)胞。休眠細(xì)胞的RAT模塊將自己的地址輸出向左傳遞,使休眠細(xì)胞左側(cè)的功能細(xì)胞暫存這個(gè)休眠細(xì)胞地址。由于第三列整列細(xì)胞被屏蔽,第三列細(xì)胞AG模塊的輸出地址addr_out=addr_in=2,第四列功能細(xì)胞的地址addr變?yōu)?,第四列的功能細(xì)胞實(shí)現(xiàn)了原來第三列功能細(xì)胞的功能;第五列備用細(xì)胞的spare信號變?yōu)闊o效,備用細(xì)胞變?yōu)楣δ芗?xì)胞,其地址為4,實(shí)現(xiàn)原來第四列功能細(xì)胞的功能,從而整個(gè)系統(tǒng)實(shí)現(xiàn)了電路功能的自修復(fù)。自修復(fù)后的電路結(jié)構(gòu)如圖7所示。X表示故障細(xì)胞,D表示休眠細(xì)胞。

2.3 多個(gè)細(xì)胞故障
    多個(gè)細(xì)胞故障(這里以兩個(gè)細(xì)胞故障為例,其他類似)分為兩種情況,一種是故障細(xì)胞右側(cè)沒有休眠細(xì)胞,這時(shí)會(huì)繼續(xù)采用整列休眠的方法;另一種是故障細(xì)胞右側(cè)有休眠細(xì)胞,下面對這種情況分析說明。
    設(shè)在上節(jié)的故障發(fā)生后,第三行第一列的細(xì)胞又發(fā)生故障,此故障細(xì)胞被屏蔽且根據(jù)exist為“1”判斷出其右側(cè)有休眠細(xì)胞,此故障細(xì)胞的ARC模塊將暫存的休眠細(xì)胞地址restaddr=3作為激活地址輸出向右傳遞,功能細(xì)胞對激活地址只起傳遞作用,其功能不受影響。當(dāng)?shù)谌械谌械男菝呒?xì)胞輸入的激活地址為3時(shí),其ARC模塊的比較器輸出為“1”, active信號變?yōu)橛行?,由?可知,此休眠細(xì)胞的屏蔽信號shield無效,休眠細(xì)胞被激活為功能細(xì)胞,實(shí)現(xiàn)了故障自修復(fù)功能。經(jīng)自修復(fù)后的電路結(jié)構(gòu)如圖8所示。

    由圖8可見,經(jīng)過自修復(fù)后的電路結(jié)構(gòu)在第4~6列沒有變動(dòng),對系統(tǒng)性能的影響也相應(yīng)減小。
3 容錯(cuò)性能分析
3.1 容錯(cuò)細(xì)胞數(shù)

    (1)故障細(xì)胞數(shù)不多于空閑細(xì)胞列數(shù)。在這種情況下,故障覆蓋率可以達(dá)到100%,每個(gè)故障細(xì)胞至少均可由一列空閑細(xì)胞實(shí)現(xiàn)容錯(cuò)。系統(tǒng)能容錯(cuò)的細(xì)胞數(shù)為故障細(xì)胞數(shù)。
    (2)故障細(xì)胞數(shù)大于空閑細(xì)胞列數(shù)且不多于空閑細(xì)胞數(shù)。考慮最壞的情況,所有故障細(xì)胞都在同一行,這時(shí)系統(tǒng)能容忍的故障細(xì)胞數(shù)為空閑細(xì)胞列數(shù)??紤]另一種可能性更大的情況:故障細(xì)胞等概率的出現(xiàn)在每一行,此時(shí)故障覆蓋率可以達(dá)到最大,系統(tǒng)能容忍的故障細(xì)胞數(shù)為空閑細(xì)胞數(shù),其電路結(jié)構(gòu)示意圖如圖9所示。


    (3)當(dāng)故障細(xì)胞數(shù)大于空閑細(xì)胞數(shù)。此時(shí),系統(tǒng)能容忍的最大故障細(xì)胞數(shù)為空閑細(xì)胞數(shù)。
3.2 與其他方法比較
    TMR用三個(gè)相同功能模塊的輸出經(jīng)過多數(shù)表決器選擇輸出最后的結(jié)果,需要用2倍的冗余資源且只能容忍一個(gè)模塊出錯(cuò),當(dāng)有兩個(gè)模塊出現(xiàn)故障時(shí),最后表決器的輸出會(huì)出現(xiàn)誤判。文獻(xiàn)[6]采用的整列排除方法對每個(gè)故障細(xì)胞均采用排除所在列來實(shí)現(xiàn)容錯(cuò),每當(dāng)出現(xiàn)一個(gè)故障細(xì)胞時(shí),就將整列屏蔽,消耗過多的硬件資源且能容忍的故障細(xì)胞數(shù)較少。假設(shè)系統(tǒng)資源為24個(gè)單元,文獻(xiàn)[6]和本文均采用如圖5所示的結(jié)構(gòu)。表2是在以上假設(shè)下本文提出的方法與這兩種方法容錯(cuò)性能的對比結(jié)果。由表2可以看出,在相同系統(tǒng)資源情況下,相比于TMR與整列排除方法,本文提出的方法可以容忍更多的故障單元,這是由于本文的方法更充分利用了備用細(xì)胞,提高了系統(tǒng)的容錯(cuò)能力。

    本文對數(shù)字電路容錯(cuò)提出了一種自修復(fù)的容錯(cuò)機(jī)制,并設(shè)計(jì)了基本結(jié)構(gòu)單元來實(shí)現(xiàn)這種自修復(fù)機(jī)制。通過數(shù)字系統(tǒng)實(shí)例分析了基本單元在不同故障情況下如何實(shí)現(xiàn)系統(tǒng)功能的自修復(fù)來達(dá)到容錯(cuò)目的,分析了在不同情況下系統(tǒng)的容錯(cuò)細(xì)胞數(shù),通過與TMR和整列排除方法的容錯(cuò)性能對比,說明了本文提出的方法可提高系統(tǒng)的容錯(cuò)能力。
參考文獻(xiàn)
[1] ZHU M,WWN Y.Fault tolerance system of digital circuit in dynamically reconfigurable FPGA[J].Southeast Univ(natural science edition),2000,30(4):138-142.
[2] 朱明程,溫粵.FPGA動(dòng)態(tài)可重構(gòu)數(shù)字電路容錯(cuò)系統(tǒng)的研究[J].東南大學(xué)學(xué)報(bào)(自然科學(xué)版),2000,30(4):138-142.
[3] AKOGLU A,SREERAMAREDDY A,JOSIAH J G.FPGA  based distributed self healing architecture for reusable systems[J].Cluster Comput,2009(12):269-284.
[4] 龔健,楊孟飛,文亮.面向進(jìn)化容錯(cuò)的FPGA故障模型研究[J].中國空間科學(xué)技術(shù),2009,6(3):57-62.
[5] SAHNI V,PREM P V.An embryonic approach to reliable  digital instrumentation based on evolvable hardware[J].IEEE Trans Instrum Meas,2003,52(6):1696-1702.
[6] ZHANG Zhai,WANG You Ren,YANG Shan shan.The research of self-repairing digital circuit based on embryonic cellular array.Neural Comput & Applic,2008(17):145-151.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。