1 引言
電子系統功能實現的模式不外硬件和軟件兩種。基于馮。諾依曼或者哈佛體系結構的通用微處理器(MPU、MCU、DSP等)系統是軟件實現模式,其硬件電路結構固定,通過串行執行指令實現功能。軟件設計靈活、易升級,但執行速度慢、效率低;而專用集成電路(ASIC)采用硬件模式,通過固化的特定運算和單元電路完成功能。指令并行執行,執行速度快、效率高,但開發周期長、缺乏靈活性。在一些實時性和靈活性要求都比較高的場合,采用通用微處理器或者ASIC效果都欠佳。
大規模的電子系統是各種邏輯功能模塊的組合。從時間軸上來看,系統中的各個功能模塊并不是任何時刻都在工作,而是根據系統外部的整體要求,輪流或循環地激活或工作。隨著系統規模的擴大,各功能模塊電路的資源利用率反而下降。因此,系統設計要從傳統的追求大規模、高密度的方向,轉向如何提高資源利用率上來,充分利用有限的資源去實現更大規模的邏輯設計。
基于大規模可編程器件FPGA的可重構系統(Reconfigurable System),就是利用FPGA可以多次重復編程配置的特點,實現實時電路重構(Reconfiguration of circuitry at runtime,簡稱RCR),即在電子系統的工作狀態下,動態改變電路的結構,其實質是實現FPGA內部全部或部分邏輯資源的時分復用,使在時間上離散的邏輯電路功能能在同一FPGA中順序實現。
雖然可重構系統的概念早在1960年就已經提出來,但由于沒有理想的可重構器件等原因,這方面的研究一直沒有很大突破。1990年以來,隨著大規模集成電路的迅速發展,尤其是大規模可編程器件FPGA的出現,研制可重構電子系統的硬件條件已基本具備,實時電路重構的思想逐漸引起了學術界的注意,從而引發了對可重構系統的研究熱潮。自從2000年以來,基于FPGA的重構在國際上得到了越來越多的關注和研究。
2 FPGA可重構設計的基礎
2.1 FPGA可重構設計的結構基礎
可重構設計是指利用可重用的軟、硬件資源,根據不同的應用需求,靈活地改變自身體系結構的設計方法。FPGA器件可多次重復配置邏輯的特性使可重構系統成為可能,使系統兼具靈活、便捷、硬件資源可復用等性能。
FPGA器件的結構主要有兩種:一是基于反熔絲技術,二是基于SRAM或FLASH編程。用反熔絲開關作基本元件,具有非易失性,編程完成后,FPGA的配置數據不再變化,無法重構。而基于SRAM或FLASH編程的FPGA通過陣列中的SRAM或FLASH單元對FPGA進行編程。SRAM單元由一個RAM和一個PIP晶體管組成,RAM中儲存著PIP晶體管的通斷信息,系統上電時,這些信息碼由外部電路寫入到FPGA內部的RAM中,電源斷開后,RAM中的數據將丟失。因此SRAM或FLASH編程型FPGA是易失性的,每次重新加電,FPGA都要重新加載數據。這樣,運行中的FPGA功能系統在掉電后可以重新下載新的配置數據,以實現不同的功能。這一特點成為FPGA在許多新領域獲得廣泛應用的關鍵,尤其成為可重構系統發展的持續驅動力。
2.2 FPGA的重構方式
根據重構的方法不同,FPGA的重構可分為靜態重構和動態重構兩種,前者是指在系統空閑期間進行在線編程,即斷開先前的電路功能后,重新下載存貯器中不同的目標數據來改變目標系統邏輯功能。常規SRAM FPGA都可實現靜態重構。后者則是指在系統實時運行中對FPGA芯片進行動態配置(即在改變電路功能的同時仍然保持電路的工作狀態),使其全部或部分邏輯資源實現在系統的高速的功能變換和時分復用。動態重構技術需要特定的基于SRAM或FLASH結構的新型FPGA的支持。隨著其產品和技術的相對成熟,動態重構FPGA的設計理論和設計方法已經逐漸成為新的研究熱點。
根據實現重構的面積不同,可重構FPGA又可以分為全局重構和局部重構。
(1)全局重構:對FPGA器件或系統能且只能進行全部的重新配置,在配置過程中,計算的中間結果必須取出存放在額外的存儲區,直到新的配置功能全部下載完為止。重構前后電路相互獨立,沒有關聯。通常,可以給FPGA串連一個EPROM來存儲配置數據,實現前后功能的轉化。常規基于SRAM的FPGA的靜態重構均為全局重構。
(2)局部重構:對重構器件或系統的一部分進行重新配置,重構過程中,其余部分的工作狀態不受影響。這種重構方式減小了重構范圍和單元數目,FPGA的重構時間大大縮短,占有相當的速度優勢。應用FPGA動態部分重構功能使硬件設計更加靈活,可用于硬件的遠程升級、系統容錯和演化硬件以及通信平臺設計等。動態部分重構可以通過兩種方法實現:基于模塊化的設計方法(Module-Based Partial Reconfiguration)和基于差別的設計方法(Difference-Based Partial Reconfiguration)。
顯然,動態重構比靜態重構優越,因為靜態重構將整個內部的邏輯單元都重新配置,此時FPGA被掛起不能執行正常操作,重構完成后才能恢復工作,影響系統實時性。動態重構在系統運行中能實時全部或部分重構,且不中斷正常邏輯輸出,因而更有靈活性和高速度。
大多數FPGA都是基于LUT查找表結構,它們只適用于靜態重構,通過向LUT一次下載全部配置數據而設定FPGA的邏輯功能。根據FPGA的容量不同、配置方式不同,全部重構時間為幾ms到幾秒不等。
對于常規FPGA來說,重載方式多種多樣。在系統調試階段,一般是通過JTAG電纜從主機下載配置數據,調試結束后正式運行時一般是將配置數據放在串行PROM中,上電時向FPGA加載邏輯。但對于系統實際運行還有一些更快更靈活的配置方式,可以縮短FPGA的重構時間,實現靈活重構。如ALTERA公司的FPGA可采用串行被動(PS)方式配置,對于2萬邏輯門規模的EP1K10配置數據為20KB,在30MHz的配置時鐘下只要5ms即可全部重構。這個速度雖然比不上動態配置的FPGA,但也比JTAG下載、串行PROM配置方式快多了,姑且稱之為準動態重構(bogus dynamic restructuring)。而且在許多系統中FPGA并不時刻都在工作,而是以一定的重復頻率執行任務,只要在FPGA的空閑時間來得及對其進行重新配置,那么在系統宏觀的角度就可以認為是動態配置的,即實時重構。
2.3 支持重構的FPGA器件
近年來,隨著FPGA技術的發展,支持重構的FPGA器件新品迭現。Xilinx、Altera、Lattice的FPGA器件都是SRAM查找表結構。Xilinx支持模塊化動態部分重構的器件族有XC6200系列,90nm工藝Spartan-3和Virtex-4 、Virtex-II-E和Virtex-II Pro [7]。Acmel公司的AT6000系列同樣基于SRAM結構,只是SRAM的各單元能夠單獨訪問配置,即支持部分重構。Lattice公司的基于Flash的FPGA通過在Flash上存儲多種邏輯功能的配置數據流,經過配置實現不同邏輯功能,嚴格意義上講屬于靜態可重構技術。Altera公司的Flex系列、ACEX、APEX、Cyclone系列也是基于SRAM的可重構邏輯。支持重構的FPGA器件有數量逐漸增加的趨勢。但目前價格相對偏高。
3 基于FPGA的可重構系統結構分析
由于可重構系統的研究歷史很短,目前尚未形成標準的結構形式,在此僅根據已有的應用做初步分析。
按重構的粒度和方式,可重構系統可以粗略地分為兩種。一種是粗粒度重構單元的模塊級重構,即重構時改變某一個或若干個子模塊的結構。此時不僅電路邏輯改變,連線資源也重新分配。重構所需的電路輸出配置信息事先由編譯軟件生成。通常重構時系統需要暫停工作,待重構完成后再繼續。這種重構系統設計簡單,但靈活性不足,且有時不能完全發揮出硬件運算的效率。較適合應用于嵌入式系統中。
另一種細粒度的重構單元的元件級重構,即重構時僅改變若干元件的邏輯功能。通常情況下重構時連線資源的分配狀況不作修改,重構所需的電路配置信息在系統運行過程中動態產生。重構時系統可以邊重構邊工作。這種重構系統設計復雜,但靈活性大,能充分發揮出硬件運算的效率,較適合高速數字濾波器、演化計算、定制計算等方面的應用。
從現有的可重構系統組織結構看,可以根據應用類型加以區分,在中低端應用中,主要采用通用微處理器MPU(MCU/DSP)+FPGA形式;在高端應用中,主要采用處理器集成型,即將處理器、存儲器、I/O口、LVDS、CDR等系統設計需要的資源集成到一個FPGA芯片上,構建成一個可編程的片上系統SoPC(System on Programmable Chip)。
3.1 MPU+FPGA結構的可重構系統的結構特點
通用微處理器具有良好的接口功能,便于構建可重構系統。按照MPU與FPGA之間的相互關系以及在系統中所起的作用,主要可以分為兩類:MPU控制FPGA工作的可重構系統和MPU協同FPGA工作的可重構系統。
3.1.1 MPU控制FPGA工作的可重構系統
這類系統采用MPU作為系統的控制核心,在FPGA中實現控制器的外設電路功能。實質上,這是傳統MPU控制系統的繼承與發展,根據系統需要,在FPGA中定制實現各分立的外部設備與接口,如SRAM、鍵盤與顯示接口以及總線的擴展等應用。
例如在某多通道超聲信號高速采集處理系統中,所需處理的數據流龐大,對它的處理是計算密集型任務。采用DSP+FPGA結構模式,以FPGA作為DSP的協處理器,能夠以硬件的速度進行并行計算,同時利用其在線可重構特性,靈活地改變內部邏輯配置來完成多種不同算法的任務。
由于主要控制任務在MPU上實現,系統邏輯實現的重點在編制MPU程序上,而FPGA則更多地使用IP (Intellectual Property)核實現基本功能模塊,軟件開發在整個系統設計過程中所占比重較大。
3.1.2 MPU協同FPGA工作的可重構系統
這類系統通常以可編程邏輯器件為核心,在其內部實現面向應用的邏輯控制功能(通常以狀態機FSM實現),而MPU則占據次要地位(充當FPGA控制器的外設)。應該說,這類系統充分利用了可編程邏輯器件和MCU的特點,實現了優勢互補。它主要應用在面向實時性應用、并行處理以及高速等環境中。例如,使用高密度FPGA進行多路A/D高速采樣,經內部處理模塊處理后,并行輸出結果,整個過程的時序控制在FPGA內部實現;而MPU只負責對FPGA各功能模塊的參數裝載、啟動命令發送及FPGA工作狀態監控等外圍任務。
這類系統的開發重點主要在FPGA邏輯功能的硬件實現上,而MPU的控制軟件比較簡單。
在實際應用中,系統的特點并不像以上兩種類型這么明顯,普遍存在的是兼具以上特點的系統,只是所占比重不同而已。
3.2 單片FPGA上的SoC—SoPC
將片上系統SOC和FPGA各自的優點相結合,實現現場可編程、可重構的新型SoC就是片上系統SoPC。
以Altera Stratix FPGA器件為例,Stratix體系把硬件、軟件和IP功能從技術上融合到基于模塊的設計中。這個新的體系結構采用CPU軟核Nios和DirectDriveTM的MultiTrackTM互聯布線結構。Nios II系列32位嵌入式處理器是一款通用的RISC結構的CPU,它定位于廣泛的嵌入式應用。可編程的NiosII核含有許多可配置的接口模塊,用戶可根據設計要求,利用Altera的Quartus II軟件以及SoPC Builder工具,允許設計者輕松地將Nios II處理器嵌入到他們的系統中。用戶還可通過Matlab和DSP Builder,或直接用VHDL等硬件描述語言,為NiosII嵌入式處理器設計各類硬件模塊,并以指令的形式加入到NiosII的指令系統中,使其成為NiosII系統的一個接口設備,與整個片內嵌入式系統融為一體,而不是直接下載到FPGA中生成龐大的硬件系統。正是NiosII所具有的這些重要特點,使得可重構SoPC的設計成為可能。市場上流行的SoPC器件廠商Xilinx和Altera都提供功能強大的SoPC設計平臺,并提供大量的IP核和參考設計,這是SoPC的一大優勢。
當然,可重構系統的形式并沒有完全定型,各類型間的分界是非常模糊的,甚至是交叉重合的。可以預見,隨著可重構技術的發展,還會有新的系統結構出現。
4 基于FPGA的可重構系統的應用簡析
基于FPGA的可重構系統優越的應用性能主要體現在:①能以硬件的速度執行算法,同時又具有靈活的可配置性;②當作緩存邏輯,在不同的時間段向FPGA加載不同的邏輯配置,實現硬件復用,提高資源利用率,減小系統規模功耗;③可構造主動式數字容錯系統,在系統發生故障時重新配置FPGA達到自修復;④實現可進化的硬件,對不斷變化的環境能迅速適配;⑤可使設計者用更為簡單的硬件和更短的設計周期來實現更多的功能,降低系統的成本。因此,基于FPGA的可重構系統在軍事目標匹配、聲納波束合成、基因組匹配、圖像紋理填充、遺傳學方面基因組分析、集成電路的計算機輔助設計、網絡安全、光互連、高速數字濾波器、圖像壓縮、嵌入式系統等方面,都有著廣泛的應用前景。相信隨著FPGA技術的發展,該技術將進入更多應用領域,為人類帶來更多的便利。
評論
查看更多