由于數字邏輯系統(tǒng)功能復雜化的需求,單片系統(tǒng)的芯片正朝著超大規(guī)模、高密度的方向發(fā)展。對于一個大規(guī)模的數字系統(tǒng)而言,系統(tǒng)規(guī)模是基于各種邏輯功能模塊的組合。但是,無論是時序邏輯系統(tǒng),還是組合邏輯系統(tǒng),或者組合/時序混合系統(tǒng),從時間軸上來看,系統(tǒng)中的各個功能模塊并不是時刻都在工作,而是根據系統(tǒng)外部的整體要求,輪流或循環(huán)地被激活或工作。并且,隨著數字邏輯規(guī)模的擴大,在相同速度條件下,在一定的時間區(qū)間,其功能模塊的平均使用率將下降。因此,系統(tǒng)設計應該從傳統(tǒng)追求大規(guī)模、高密度的方向,轉向如何提高資源利用率,用有限的資源實現更大規(guī)模的邏輯設計上來??芍貥嬘嬎慵夹g能夠提供硬件的效率和軟件的可編程性,它綜合了微處理器和ASIC的特點,在空間維和時間維上均可變。
1 可重構技術概述
1.1 可重構的定義
可重構就是在電子系統(tǒng)的工作狀態(tài)下,動態(tài)地改變電路的結構。這主要通過對系統(tǒng)中的可編程邏輯器件進行重新配置或者局部重新配置來完成。利用可重構技術,能在只增加少量硬件資源的情況下,使系統(tǒng)同時具有軟件實現和硬件實現的優(yōu)點。
1.2 可重構方式的分類
按照重構的方式,系統(tǒng)重構可以分為靜態(tài)系統(tǒng)重構(Static Reconfiguration)和動態(tài)系統(tǒng)重構(Dynamic Reconfiguration)。
1.2.1 靜態(tài)系統(tǒng)重構
靜態(tài)系統(tǒng)重構是指目標系統(tǒng)的邏輯功能靜態(tài)重載,只能在運行前配置的系統(tǒng),如圖1所示。
?
FPGA功能在外部邏輯的控制下,通過存儲于存儲器中不同的目標系統(tǒng)數據重新下載,從而實現芯片邏輯功能的改變。
1.2.2 動態(tài)系統(tǒng)重構
動態(tài)系統(tǒng)重構是指能在運行過程中實時配置的可重構系統(tǒng),如圖2所示。
?
對于時序變化的數字邏輯系統(tǒng),其時序邏輯的發(fā)生不是通過調用芯片內不同區(qū)域、不同邏輯資源組合而成的,而是通過對具有專門緩存邏輯資源的FPGA進行局部或全局的芯片邏輯的動態(tài)重構而快速實現的。動態(tài)系統(tǒng)結構的FPGA具有緩存邏輯(Cache Logic),在外部邏輯的控制下,通過緩存邏輯對芯片邏輯進行全局或局部的快速修改,通過有控制重新布局布線的資源配置來加速實現系統(tǒng)的動態(tài)重構。就動態(tài)重構實現面積的不同,又可以分為全局重構和局部重構。
(1)全局重構。對FPGA器件或系統(tǒng)能且只能進行全部的重新配置。在配置過程中,計算的中間結果必須取出存放在額外的存儲區(qū),直到新的配置功能全部下載完為止,重構前后電路相互獨立,沒有關聯。
(2)局部重構。對重構器件或系統(tǒng)的局部重新配置,與此同時,其余局部的工作狀態(tài)不受影響。局部重構對減小重構的范圍和單元數目,大大縮短重構時間,占有相當的優(yōu)勢。
2 基于FPGA的局部動態(tài)可重構技術
2.1 具有局部動態(tài)可重構功能的FPGA
過去大家普遍進行動態(tài)重構研究的FPGA主要有Xilinx公司的XC6200系列和Atmel公司的AT6000系列等。它們也是基于SRAM結構,但是SRAM的各個單元能夠單獨訪問配置,即局部重構。它們的功能互不影響,因而具有局部重構的特征。這樣做的優(yōu)點顯著,但也會付出增大硬件電路規(guī)模和功耗的代價。最終要實現電子系統(tǒng)的完全實時重構,應采用結構上具有動態(tài)局部重構功能的FPGA器件,如Xilinx公司的Virtex-4系列。
2.2 基于FPGA局部動態(tài)可重構技術主要特征及典型原理
FPGA局部動態(tài)可重構技術的特征就是將整體按功能或按時序分解為不同的組合,并根據實際需要,分時對芯片進行局部動態(tài)重構,以較少的硬件資源實現較大的時序系統(tǒng)整體功能。圖3給出一種典型的FPGA局部動態(tài)可重構。由圖3可以看出,在外部邏輯的控制下,可以實時動態(tài)地對芯片邏輯實現局部重構。通過控制布局、布線的資源,實現系統(tǒng)的動態(tài)重構。
?
2.3 FPGA實現局部動態(tài)可重構的結構要求
要使FPGA有效地實現實時系統(tǒng)動態(tài)重構,FPGA在結構上必須滿足以下要求:
(1)不僅具有可重新編程能力,同時可動態(tài)進行系統(tǒng)資源地重新配置,而不會破壞器件中全局或局部邏輯操作能力。很多傳統(tǒng)的FPGA把配置數據存放在外部的串行EPROM中。這種方式有3個缺點:重構之前整個FPGA必須停止工作;只是對整個FPGA進行重構;重構時FPGA中以前的內部狀態(tài)無法保存。新的能夠實現動態(tài)可重構的FPGA不需要在重構之前觸發(fā)復位信號,而是將FPGA芯片中的一局部邏輯電路的時鐘關閉,然后重新配置邏輯電路,最后恢復時鐘信號。
(2)FPGA內部配置信息對稱,記載任何時刻,任何通用的基本邏輯功能可以配置于器件的任何一個位置,運用簡單模型組合去實現設汁中的復雜功能。
3 基于FPGA的可重構演示系統(tǒng)的設計與實現
3.1 演示驗證系統(tǒng)的硬件組成及各部分功能
(1)演示驗證系統(tǒng)的硬件組成,如圖4所示。ARM處理器片內具有256 KB的片上SRAM存儲器、2 MB容量FLAsH存儲器。主要是對sPARTEN-3AN系列的FPGA進行控制,控制其調取FLASH存儲器中的重構方案;FLAsH存儲器的并行數據通過ARM轉換成串行;ARM中自帶的FLAsH存儲器用來存放程序;
(2)SPARTEN3AN系列的FPGA,是基于非易失性存儲的FPGA,主要作為PCI總線和ARM處理器之間的雙端口;放置Spw IP核、UART IP核、1553 IP核;JTAG口;
(3)兩個XCVSX55的FPGA專用JTAG,進行配置文件的下載。Xilinx FPGA基于SRAM技術,因此是易失性的。如果關掉器件的電源,其配置就會丟失。在生產型環(huán)境中,FPGA通常使用外部存儲器件(如PROM)防止停電時丟失配置數據;
(4)FLASH存儲器容量為16 M×32 b,用于處理器的上電引導和存放多個用于模塊級FPGA重構方案;
(5)兩個PROM-XCF32P。Virtex4系列XC4-VSX55FPGA,其配置PROM為XCF32P,32 Mb存儲容量。利用XCF32P的設計修訂(Design.Revisiorling)功能將FPGA多種配置存儲為不同的修訂版本,從而簡化FPGA配置更改。上電時,由配置PROM的內部邏輯對設計修訂版本選擇輸入(引腳或控制位)進行采樣;
(6)兩組測試線,每組4根,cl_Test[3..O]和C2-Testl[3..O]分別測試兩個XCVSX55系列FPGA的重構和反饋重構結果;
(7)兩通道的PROM控制信號線,C1(C2)_PROG,C1(C2)_DIN,C1(C2)_DONE,C1(C2)_INT,C1(C2)_CCLK用于實現兩個XCVSX55系列FPGA的PROM方式的下載。由于JTAG(邊界掃描)鏈在其中一個部件發(fā)生故障時會影響整個JTAG鏈的正常功能,因此多使用:PROM的下載方式備用;
(9)PCI總線,通過該總線實現計算機與外界交互的外部接口。
3.2 演示驗證系統(tǒng)的工作原理
3.2.1 上電復位
在上電復位時,要確保ARM和FPGA同步復位。Xilinx公司的FPGA上電時需要200 ms左右的配置時間,在此期間I/O引腳處于三態(tài)狀態(tài),因此對關鍵的輸入/輸出信號(如IRQx,NWAIT,2.56兆輸出數據及輸出時鐘)有必要采取的上下拉,以確保ARM及外圍接口信號處于正常的狀態(tài),避免信號沖突。
3.2.2 初始化
主要的初始化工作有2部分,分別由ARM和FPGA完成。
(1)ARM執(zhí)行的初始化工作。包括監(jiān)控程序自舉→監(jiān)控程序執(zhí)行ARM內部寄存器初始化→硬件自檢→加載標志檢測→(軟件更新加載)→FPGA參數設定→用戶軟件加載及完整性正確性校驗→控制權叫用戶軟件→用戶軟件初始化→用戶軟件運行。
(2)FPGA執(zhí)行的初始化工作。主要有FPGA內部寄存器和邏輯狀態(tài)的初始值、內部緩沖區(qū)數據清零依靠復位信號來完成。其中的“FPGA參數設定”由監(jiān)控程序負責執(zhí)行或由FPGA使用缺省參數完成。數據融合格式、輸入/輸出碼速率等FPGA參數存儲在ARM的片內FLASH中的FPGA參數區(qū)中,上電或復位時有監(jiān)控軟件負責加載和初始化。
3.2.3 重構過程
可重構演示驗證系統(tǒng)的結構如圖4所示,當出現錯誤和發(fā)生故障時,由ARM處理器讀取FLASH存儲器中的重構方案。但是,FLASH存儲器取舍眾多重構方案卻是受外部1553B,Spw,UART的控制。由ARM處理器更新FLASH存儲器或給完成并/串轉換的FPGA發(fā)出控制命令來對可重構應用單元進行操作。模擬JTAG口的FPGA與兩個應用FPGA的JTAG口邊界掃描鏈(Boundary-Scan Chain),在ARM處理器的控制下,對被重構的FPGA進行重構。FPGA的主要任務是通過ARM控制器將事先存入FLASH中邏輯系統(tǒng)的不同功能配置信息,按用戶的系統(tǒng)時序要求和外部控制,逐一下載到SRAM編程的FPGA之中,以實現系統(tǒng)功能的動態(tài)局部重構。在系統(tǒng)工作過程中,FPGA將根據不同的要求,在處理器的控制下,不斷重構其邏輯功能,通過模板級重構,滿足不同數字圖像處理和其他邏輯運算的要求。
3.3 實現局部動態(tài)可重構的FPGA的選型和配置模式
3.3.1 Xilinx公司的Virtex-4系列FPGA
在選擇器件時,必須保證器件資源留有一定余量,這樣不僅可以避免布線擁擠,也便于測試修改和功能擴展。根據系統(tǒng)的需求和擴展性,選擇Virtex-4系列FPGA。它是Xilinx公司推出的一系列實現動態(tài)局部重構的FPGA芯片,也是基于查找表的。Virtex-4系列芯片將高級硅片組合模塊(ASMBL)架構與種類繁多的靈活功能相結合,大大提高了可編程邏輯設計能力,從而成為替代ASIC技術的強有力產品。采用Virtex-4選用Xilinx公司的Virtex-4系列產品XC4VSX55。XC4VSX55具有128列×48行陣列,55 296個邏輯單元,24 576個Slice,最大分布式RAM384 KB,512個XtremeSlice),320個18 KB塊RAM,最大塊RAM存儲容量5 760 KB,8個DCM,4個相位匹配時鐘分頻器(PMCD),13個I/O組,最大用戶I/O數640個。根據目前已有的算法,其性能和資源可以較好地滿足圖像匹配算法和目標識別算法對硬件資源(邏輯門數、RAM大小、乘法加法器等)的需求。Virtex-4硬IP核塊的龐大陣列包括PC處理器(帶有新型APU接口)、三態(tài)以太網MAC,622 Mb/s到6.5 Gb/s串行收發(fā)器、專用DSP S1ice、高速時鐘管理電路和源同步接口塊。
3.3.2 Virtex-4系列FPGA在該系統(tǒng)中的配置模式
Virtex-4器件的配置方法是用串行從模式、串行主模式、SelectMAP從模式、SelectMAP主模式、邊界掃描模式(JTAG)之一將比特流載入內部配置存儲器的:在該系統(tǒng)中采用可重構應用單元的FPGA配置模式有兩種:
(1)JTAG方式(邊界掃描方式)
通過SPARTEN-3AN系列中FPGA提供的外部邏輯驅動JTAG專用引腳與同樣4個JTAG引腳的兩個應用FPGA及配置它們的PRROM串聯起來,形成邊界掃描鏈(Boundary-Scan Chain)將配置數據下載到FPGA中。在這種模式下,數據以每TCK一位的速度加載,如圖5所示。
?
JTAG或邊界掃描模式是一種行業(yè)標準的(IEEE1149.1或1532)串行編程模式。該模式通過電纜、或其他器件提供的外部邏輯驅動JTAG專用引腳TCK和JTAG測試時鐘輸入。當TCK保持在零狀態(tài)時,測試邏輯狀態(tài)應保持不變;TMS為測試模式選擇,控制JTAG狀態(tài)。出現在TMS的信號在TCK的上升沿由測試邏輯采樣進入測試訪問口(Test AccessPort,TAP)控制器;TDI:測試數據輸入,測試數據在TCK的上升沿采樣進入移位寄存器(SR);TD0:測試數據輸出,測試結果在TCK的下降沿從移位寄存器(SR)移出,輸出數據與輸入到TDI的數據應不出現倒置。這種模式因其標準化程度和可通過同樣4個JTAG引腳為FPGA編程的能力而廣泛使用。JTAG方式常用于實現在線編程(In-System Programma-ble,ISP),對FPGA進行編程。
JTAG在線編程的特征也改變了傳統(tǒng)生產流程,將以前先對芯片進行預編程再裝到板上的工藝簡化為先固定器件到電路板上,再用JTAG口進行編程。Xilinx的Virtex-4系列支持在一個邊界掃描(JTAG)鏈中配置多個FPGA,每次,只配置鏈中的1個FPGA,大大降低了實現難度。
(2)PROM配置模式,是由SPARTEN3AN系列FPGA為每一個Virtex-4系列FPGA配置一組PROM控制線實現FPGA的下載。SPARTEN3AN系列FPGA和可重構應用單元的每一個virtex-4系列FPGA之間分別有一組PROM的控制線,每組都包括DIN(配置數據輸入)、CCLK(配置時鐘)、DONE(FP-GA配置完成)、PROG(觸發(fā)重配置)、INT(配置初始化)5個信號,通過這些信號將配置數據下載到Virtex-4系列FPGA中去。兩種方式互補,在邊界掃描鏈發(fā)生斷裂影響到整個鏈的功能時,可以使用PROM模式替補,提高了重構過程的可靠性。
4 結 語
基于SRAM的FPGA的問世標志著現代可重構技術的開端,并極大地推動了其發(fā)展??删幊蘁PGA可以根據不同算法設計合理的硬件結構,以達到提高執(zhí)行效率的目的。動態(tài)可重構FPGA可以在程序運行中動態(tài)完成FPGA的不同配置電路功能,在不同時段執(zhí)行不同的算法,實現了虛擬硬件可重構計算技術。這里提出的通過微處理器加FPGA結合串行菊花鏈實現可重構的方式,實現了動態(tài)可重構FPGA結構設計的一種應用。另外,該驗證演示了系統(tǒng)中可重構控制器還可以結構模塊化,能夠工程化應用于其他設計中,具有靈活及可移植性強的優(yōu)點。
評論