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