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