楊 燕,黃宇平
(1.廣西師范學(xué)院數(shù)學(xué)科學(xué)學(xué)院,廣西 南寧530001;2.廣西機電職業(yè)技術(shù)學(xué)院電氣工程系,廣西 南寧 530007)
隨著數(shù)字電路系統(tǒng)設(shè)計的規(guī)模增大,復(fù)雜性提高,系統(tǒng)運行的可靠性問題日益引人注目。特別在一些特殊的應(yīng)用場合,例如電子設(shè)備需要長期工作且運行環(huán)境惡劣、技術(shù)人員又無法及時提供維修的場合,對于系統(tǒng)自適應(yīng)能力的要求就更為迫切。人們希望在故障發(fā)生后,系統(tǒng)能夠自動檢測出錯誤,并啟動系統(tǒng)的自修復(fù)機制以完成錯誤的修正,從而維持系統(tǒng)的正常運行。
基于SRAM編程的FPGA不僅使在系統(tǒng)可編程(ISP)和在系統(tǒng)可重新編程(ISR)得以實現(xiàn),而且使FPGA動態(tài)可重構(gòu)技術(shù)得以創(chuàng)立。基于FPGA的數(shù)字電子系統(tǒng)的動態(tài)重構(gòu)特點,為系統(tǒng)故障特別是不可預(yù)料故障的動態(tài)修復(fù),提供了實現(xiàn)的可能性。
對于隨機故障的具有容錯能力的數(shù)字系統(tǒng)的研究,是容錯系統(tǒng)的一個不可忽視的主要研究方向,目前國內(nèi)已有學(xué)者提出利用基于SRAM技術(shù)的現(xiàn)場可編程門陣列FPGA,通過芯片重新布局布線及網(wǎng)表數(shù)據(jù)重載,實現(xiàn)邏輯功能的現(xiàn)場重構(gòu)和修改,而正是這種系統(tǒng)內(nèi)的動態(tài)重構(gòu)特點,為系統(tǒng)內(nèi)的隨機故障,特別是對于不可預(yù)料故障的動態(tài)修復(fù),提供了實現(xiàn)的可能性。
而國外則另辟蹊徑,從硬件電路的角度出發(fā),嘗試將進化算法與可編程器件有機結(jié)合起來,構(gòu)成了“仿生硬件”(進化型仿生硬件和胚胎型仿生硬件)。進化型仿生硬件,可以通過進化來或得滿足給定要求的電路和系統(tǒng)結(jié)構(gòu),進而使系統(tǒng)可自動地、實時地調(diào)整其內(nèi)部結(jié)構(gòu),以適應(yīng)內(nèi)部條件和外部環(huán)境的改變。而胚胎型仿生硬件,則能像生物一樣自繁殖和自修復(fù)。
本文針對目前國內(nèi)外在自適應(yīng)、自修復(fù)領(lǐng)域的研究成果及研究方向,主要分析FPGA電子器件實現(xiàn)容錯的基本原理,方法并對該技術(shù)的發(fā)展趨勢給出了展望。
提高系統(tǒng)可靠性的基本方法,有故障預(yù)防和故障容錯。
故障預(yù)防,是抑制故障的產(chǎn)生;而容錯,則是指系統(tǒng)運行出現(xiàn)錯誤時,依靠內(nèi)部容錯機制仍能繼續(xù)保持其正常工作。
容錯系統(tǒng)最基本的設(shè)計方法,是利用冗余的邏輯資源來屏蔽故障對系統(tǒng)的影響。但對于不可預(yù)料的故障,根本無法用若干有限模型去描述,傳統(tǒng)的冗余模塊的容錯設(shè)計也無能為力。
對于隨機故障的具有容錯能力的數(shù)字系統(tǒng)的研究,是容錯系統(tǒng)的一個不可忽視的主要研究方向。實時電路重構(gòu),是解決隨機故障容錯的最佳方案。實時電路重構(gòu),就是在電子系統(tǒng)的工作狀態(tài)下,動態(tài)改變電路的結(jié)構(gòu)。這主要是通過對系統(tǒng)中的可編程器件,進行重配置或部分重配置來實現(xiàn)的。利用這一技術(shù)設(shè)計的可重構(gòu)系統(tǒng),能輕而易舉地將系統(tǒng)軟件實現(xiàn)和系統(tǒng)硬件實現(xiàn)的優(yōu)點合二為一。
在可重構(gòu)系統(tǒng)中,硬件信息(可編程器件的配置信息)也可以像軟件程序一樣,被動態(tài)調(diào)用或修改。這樣既保留了硬件計算的性能,又兼具軟件的靈活性。形象地說,可重構(gòu)系統(tǒng)就是把硬件軟件化,使硬件可以像軟件一樣被使用。
可重構(gòu)系統(tǒng)的重構(gòu)方式,按重構(gòu)粒度的大小不同,可分為模塊級重構(gòu)和元件級重構(gòu)。
(1)模塊級重構(gòu)。此時,將改變某一個或若干個子模塊的結(jié)構(gòu),不僅需要電路邏輯的改變,連線資源也需重新進行分配。通常此類重構(gòu)時,系統(tǒng)可能需要系統(tǒng)暫停工作,故存在靈活性不足的缺陷,使得此類重構(gòu)不適合應(yīng)用于在線系統(tǒng)自修復(fù)的場合。
(2)元件級重構(gòu)。在重構(gòu)時僅改變?nèi)舾稍倪壿嫻δ?。通常情況下,重構(gòu)時連線資源的分配狀況不作修改,重構(gòu)時系統(tǒng)可以邊重構(gòu)邊工作。這種重構(gòu)系統(tǒng)設(shè)計復(fù)雜,但靈活性大,能充分發(fā)揮出硬件運算的效率,較適合應(yīng)用于在線修復(fù)。
可重構(gòu)系統(tǒng)還可按照重新配置方式的不同,分為動態(tài)可重構(gòu)(圖2)和靜態(tài)可重構(gòu)(圖1)。
(1)靜態(tài)重構(gòu)。必須中斷當(dāng)前系統(tǒng)運行任務(wù),來進行新的數(shù)據(jù)流配置,主要針對具有重構(gòu)能力但配置數(shù)據(jù)時速度較慢的器件。
圖1 靜態(tài)重構(gòu)系統(tǒng)
(2)動態(tài)重構(gòu)。在改變電路的功能同時,仍然可以保證電路的動態(tài)接續(xù)。動態(tài)重構(gòu)可以使FPGA內(nèi)的硬件資源實現(xiàn)分時復(fù)用,提高了FPGA資源的使用率。
圖2 動態(tài)重構(gòu)系統(tǒng)
可重構(gòu)系統(tǒng)還可就其實現(xiàn)重構(gòu)的面積不同,分為全局重構(gòu)和局部重構(gòu)。
(1)全局重構(gòu)。對FPGA器件或系統(tǒng)能且只能進行全部的重新配置,在配置過程中,計算的中間結(jié)果,必須取出存放在額外的存儲區(qū),直到新的配置功能全部下載完為止,重構(gòu)前后電路相互獨立,沒有關(guān)聯(lián)。
(2)局部重構(gòu)。對重構(gòu)器件或系統(tǒng)的一部分進行重新配置,而在此過程中,其余部分的工作狀態(tài)不受影響。這種重構(gòu)方式減小了重構(gòu)范圍和單元數(shù)目,從而可以大大縮短重構(gòu)時間,具有相當(dāng)?shù)膬?yōu)勢。圖3給出了一種典型的FPGA部分動態(tài)重構(gòu)的應(yīng)用示意圖。
圖3 局部動態(tài)可重構(gòu)應(yīng)用
FPGA局部動態(tài)可重構(gòu)技術(shù)的特征,就是將整體按功能或按時序分解為不同的組合,并根據(jù)實際需要,分時對芯片進行局部動態(tài)重構(gòu),以較少的硬件資源實現(xiàn)較大的時序系統(tǒng)整體功能。圖3給出一種典型的FPGA局部動態(tài)可重構(gòu)。
由圖4可以看出,在外部邏輯的控制下,可以實時動態(tài)地對芯片邏輯實現(xiàn)局部重構(gòu)。通過控制布局、布線的資源,實現(xiàn)系統(tǒng)的動態(tài)重構(gòu)。
圖4 典型的FPGA局部動態(tài)可重構(gòu)原理圖
Xilinx的Virtex系列支持局部重構(gòu)。Virtex-2和Virtex-2 Pro重構(gòu)存儲介質(zhì)可被看作是長方形的bit陣列(array),該陣列由1 bit寬、整個陣列高的垂直幀(frame)組成,該幀(圖5)是存儲介質(zhì)局部可重構(gòu)的最小單元。
圖5 Virtex FPGA重構(gòu)存儲幀
EAPR (Early-Access Partial Reconfiguration)是Xilinx推薦的一種DPR(dynamical Partial Reconfiguration)設(shè)計方法,基于EAPR的動態(tài)可重構(gòu)方法的設(shè)計流程(圖6)包括:
(1)頂層模塊設(shè)計和綜合。頂層模塊描述必須只包括使用黑盒子實例化的I/O、時鐘緩存、靜態(tài)模塊、局部重構(gòu)模塊、總線宏以及信號聲明;
(2)靜態(tài)模塊的設(shè)計與綜合。靜態(tài)模塊是在動態(tài)可重構(gòu)執(zhí)行時間狀態(tài)不變的模塊,因此這一步與傳統(tǒng)硬件描述語言設(shè)計方法一樣,但是靜態(tài)模塊不能包括任何時鐘和復(fù)位邏輯,在綜合時不加入I/O緩存;
(3)每個可重配置子模塊的設(shè)計和綜合。每個局部重構(gòu)子模塊要保證沒有時鐘邏輯,并且具有相同的端口定義和實體名字。
除了傳統(tǒng)的I/O端口位置約束,還要對頂層的時鐘緩存添加位置約束,對可重構(gòu)區(qū)域添加面積約束,還可以添加布局布線和時序約束,在可重構(gòu)區(qū)域的邊界添加總線宏的位置約束。
實現(xiàn)靜態(tài)模塊產(chǎn)生的信息,將用于可重構(gòu)模塊的實現(xiàn)階段,所以必須首先完成靜態(tài)模塊的實現(xiàn)。實現(xiàn)靜態(tài)模塊包括3個步驟:轉(zhuǎn)換、映射和布局布線。
在靜態(tài)模塊實現(xiàn)之后,每個局部重構(gòu)子模塊必須分別進行實現(xiàn)。
局部重構(gòu)設(shè)計流程的最后一步,是合并頂層、靜態(tài)模塊和重構(gòu)模塊。在合并這一步中,從重構(gòu)模塊和靜態(tài)模塊中建立一個完整的設(shè)計。
下載bit流文件到開發(fā)板上運行驗證。
圖6 EAPR的動態(tài)可重構(gòu)方法的設(shè)計流程
隨著FPGA的發(fā)展,超大規(guī)模、高速低耗的FPGA不斷推陳出新,新一代的FPGA集成了中央處理器或數(shù)字處理器內(nèi)核,可在同一片F(xiàn)PGA上進行軟硬件協(xié)同設(shè)計。FPGA的動態(tài)局部重構(gòu)技術(shù)有以下發(fā)展趨勢。
(1)重構(gòu)粒度單元更小。目前最新的Xilinx Virtex-4系列和Virtex-5系列的最小重構(gòu)單元做的更小,其每個最小單元只有13l2 bit,可以在垂直方向設(shè)計多個動態(tài)重構(gòu)模型,提高設(shè)計的靈活性。
(2)FPGA實時重構(gòu)。隨著片上操作系統(tǒng)技術(shù)的成熟,越來越多的FPGA片內(nèi)包含著嵌入式處理器核,通過嵌入式處理器核利用內(nèi)部配置端口,不僅可以使動態(tài)重構(gòu)設(shè)計更加靈活,而且可以提高動態(tài)重構(gòu)的下載速度,這種特性對于實時任務(wù)的處理尤為重要。例如,Xilinx FPGA推出了內(nèi)部配置接口ICAP(Internal Reconfiguration Access Ports),該端口具有兩條并行的輸入輸出數(shù)據(jù)通道。當(dāng)ICAP接口和片內(nèi)處理器相互配合,就可以設(shè)計一個具有自控能力的動態(tài)重構(gòu)系統(tǒng)。
國外動態(tài)可重構(gòu)研究比較多,如自重構(gòu)可適應(yīng)FIR濾波器的設(shè)計和軟件無線電設(shè)計等。國內(nèi)動態(tài)可重構(gòu)研究相對較少,目前動態(tài)局部可重構(gòu)技術(shù)發(fā)展的水平,遠沒有達到成熟的地步,但是動態(tài)局部可重構(gòu)技術(shù)自身具有的優(yōu)勢,使得這一領(lǐng)域成為FPGA研究的熱點問題,相信未來此技術(shù)會有廣闊的應(yīng)用前景。
致謝
本研究得到廣西師范學(xué)院基礎(chǔ)研究基金資助。
[1]谷 鑾,徐貴力,王友仁,等.FPGA動態(tài)可重構(gòu)理論及其研究進展[J].計算機測量與控制,2007,15(11):1415-1418.
[2]吳冬冬,楊曉君,劉新春,等.一種基于FPGA的可重構(gòu)計算系統(tǒng)設(shè)計[J].計算機工程與應(yīng)用,2006,42(21):74-77.
[3]羅毅輝,李仁發(fā),熊曙初.可重構(gòu)計算系統(tǒng)的研究與應(yīng)用[J].計算機應(yīng)用研究,2006,23(1):154-156.
[4]覃祥菊,朱明程,張?zhí)?,?FPGA動態(tài)可重構(gòu)技術(shù)原理及實現(xiàn)方法分析[J].電子器件,2004,21(2):277-282.
[5]蔡啟先,蔡洪波,黃曉璐,等.基于的動態(tài)可重構(gòu)體系結(jié)構(gòu)[J].計算機應(yīng)用,2006,26(7):1741-1743.
[6]Lohn J,Hornby G.Evolvable Hardware:Using Evolutionary Computation to Design and Optimize Hardware Systems[J].IEEE Computational Intelligence Magazine,2006,1(1):19-27.