《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > Xilinx FPGA的Fast Startup

Xilinx FPGA的Fast Startup

高級研究工作表明,,新型兩步配置法可以滿足汽車和PCIe應(yīng)用領(lǐng)域嚴(yán)格的啟動時間要求,。
2011-10-25
作者:賽靈思
關(guān)鍵詞: FPGA 汽車 PCIe PCI Express

作者 Joachim Meyer
博士生
卡爾斯魯厄技術(shù)研究所
[email protected]

Juanjo Noguera
高級研究工程師
Xilinx公司
[email protected]
Rodney Stewart
汽車系統(tǒng)架構(gòu)師
Xilinx公司
[email protected]
Michael Hübner
工程博士
卡爾斯魯厄技術(shù)研究所
[email protected]
Jürgen Becker
教授,,工程博士
卡爾斯魯厄技術(shù)研究所
[email protected]
 
  在眾多當(dāng)代應(yīng)用中,,嵌入式系統(tǒng)必須滿足極其苛刻的時序要求。其中之一就是啟動時間——即上電后電子系統(tǒng)進(jìn)入可操作狀態(tài)所需要的時間,。PCI Express®產(chǎn)品或汽車應(yīng)用中基于CAN的電子控制單元(ECU)就是具有嚴(yán)格時序要求的電子系統(tǒng)的應(yīng)用實例,。
 
  標(biāo)準(zhǔn)PCI Express®(PCIe)系統(tǒng)上電后僅100毫秒,系統(tǒng)的根組件就開始掃描總線以便弄清拓?fù)浣Y(jié)構(gòu),,并在這一過程中進(jìn)行初始化配置,。 如果PCIe設(shè)備沒有準(zhǔn)備好響應(yīng)配置請求,根組件就找不到此PCIe設(shè)備,,并認(rèn)為它不存在,。該設(shè)備將無法加入PCIe總線系統(tǒng)。[1]
 
  汽車應(yīng)用中的情形與此大體相仿,。在基于CAN的網(wǎng)絡(luò)中,,ECU進(jìn)入睡眠模式,這時它們將停止運(yùn)行并切斷電源連接,。只有很少部分電路仍然保持戒備狀態(tài),,以便探測喚醒信號。一旦出現(xiàn)喚醒事件,,ECU就會重新連接電源并開始引導(dǎo),。雖然在喚醒事件后的頭一個100 毫秒內(nèi)允許錯過一些消息,但在此之后所有ECU都必須在網(wǎng)絡(luò)(如CAN網(wǎng)絡(luò))上做好充分的運(yùn)行準(zhǔn)備,。
 
  Xilinx Automotive,、Xilinx研究實驗室以及德國卡爾斯魯厄技術(shù)研究所之間合作展開了深入的研發(fā)工作,正在設(shè)法通過一種FPGA兩步配置方法解決這一問題,。
 
  半導(dǎo)體行業(yè)的科技趨勢已經(jīng)能使FPGA廠家大大增加其器件中的資源,。但比特流規(guī)模也在成比例地增長,配置器件需要的時間也是如此,。因此,,即使對于中等規(guī)模的FPGA,使用低成本配置方案也不可能滿足嚴(yán)格的啟動時序要求,。圖1表示不同的Xilinx® Spartan®-6 FPGA器件在使用低成本SPI/Quad-SPI配置接口時的配置時間,。即使使用快速配置方案(即在40 MHz配置時鐘下運(yùn)行的Quad-SPI),也只有小型FPGA器件才能達(dá)到100 毫秒的啟動時序要求,。對于Xilinx Virtex®-6器件來說,,這個結(jié)果看來更具挑戰(zhàn)性,因為這些器件提供了更豐富的FPGA資源,。
 
  為了克服這個難題,,F(xiàn)ast Startup分兩步配置FPGA器件,而非單步(整片)的全器件配置,。按照這種新穎的思路,,我們的策略是在上電時使用最高優(yōu)先級比特流僅載入時序關(guān)鍵模塊,然后再載入非時序關(guān)鍵模塊。這種方法最大程度地減少了初始配置數(shù)據(jù),,從而最大程度地減少了在面向時序關(guān)鍵設(shè)計的FPGA器件啟動時間,。
 
FAST STARTUP對比部分重配置
  Fast Startup允許FPGA設(shè)計盡快啟動設(shè)計的關(guān)鍵模塊,關(guān)鍵模塊的啟動速度比標(biāo)準(zhǔn)全配置方法要快得多[2],。雖然,,從本質(zhì)上來講Fast Startup利用了部分重配置,但它與這種方法的傳統(tǒng)概念所有不同,。部分重配置的初衷是將完整設(shè)計作為可在運(yùn)行時修改的初始配置使用,。相反,F(xiàn)ast Startup已經(jīng)使用了一個初始的部分比特流,,以在上電時僅僅配置FPGA器件的一個特定(很小的一部分)區(qū)域,。第一次配置僅包含完整FPGA設(shè)計中必須配置和快速運(yùn)行的那些部分。而剩下的部分則在以后,、在運(yùn)行時,,利用部分重配置進(jìn)行配置。圖2說明了這一順序概念,。
 
工具流程概述
  Fast Startup的工具流程依靠設(shè)計保存流程,,來創(chuàng)建針對時序關(guān)鍵子系統(tǒng)及非時序關(guān)鍵子系統(tǒng)的部分比特流。
 
  設(shè)計保存流程將FPGA設(shè)計分割為邏輯模塊(稱為“分區(qū)”),。分區(qū)構(gòu)成了層次邊界,,將內(nèi)部模塊與設(shè)計中的其他組件相互隔離。分區(qū)一旦實現(xiàn)(即完成布局和布線),,就能被其他實現(xiàn)運(yùn)行導(dǎo)入,,以按照每個實例中完全相同的方式實現(xiàn)該分區(qū)的模塊[3]。
 
 因此,,使用Fast Startup方法的第一步是將完整的FPGA設(shè)計分成兩部分:即含有時序關(guān)鍵子系統(tǒng)的高優(yōu)先級分區(qū)和針對其余組件的低優(yōu)先級分區(qū),。
 
圖1-計算出的Spartan-6配置時間的對數(shù)表示(按最壞情況計算)

圖2 – Fast Startup概念:順序配置
 
 
 
高優(yōu)先級分區(qū)的實現(xiàn)
  為了得到盡可能小的高優(yōu)先級分區(qū)的部分比特流,設(shè)計中有一些一般性問題需要考慮,。首先,,該分區(qū)必須只能包含此類組件:或者是時序關(guān)鍵組件,或者是系統(tǒng)需要這些組件來執(zhí)行低優(yōu)先級部分(如ICAP)的部分重配置,。得到小規(guī)模初始部分比特流的關(guān)鍵是使用盡可能小的區(qū)域?qū)崿F(xiàn)高優(yōu)先級分區(qū),。也就是說,您必須將這個分區(qū)局限在FPGA中的一個適當(dāng)區(qū)域中,。
 
  為了在FPGA中找到理想的物理位置,,這個區(qū)域應(yīng)該提供該設(shè)計需要的適當(dāng)數(shù)量的資源。訪問該區(qū)域以外的資源也是可行的,,但我們不鼓勵這么做——盡管對于I/O引腳來說,,
 
  這樣做一般是無法避免的,。在尋找適當(dāng)區(qū)域時,還要牢記的是這個FPGA區(qū)域有可能會妨礙FPGA設(shè)計中非時序關(guān)鍵部分的資源,。
 
  當(dāng)您已經(jīng)對FPGA進(jìn)行分區(qū),,且已經(jīng)找到了這些分區(qū)的適當(dāng)區(qū)域之后,下一步就是使用一個空的(黑盒子)低優(yōu)先級分區(qū)實現(xiàn)高優(yōu)先級分區(qū),。得到的比特流含有很多針對未使用資源的配置幀,。您可以刪除這些幀,,以便得到針對初步配置高優(yōu)先級分區(qū)的有效部分比特流,。[4]
 
低優(yōu)先級分區(qū)的實現(xiàn)
  為了創(chuàng)建低優(yōu)先級的部分比特流,首先,,您要創(chuàng)建含有這兩個分區(qū)(即高優(yōu)先級分區(qū)和低優(yōu)先級分區(qū))的完整FPGA設(shè)計的實現(xiàn),。從以前的實現(xiàn)中導(dǎo)入高優(yōu)先級分區(qū),從而保證其實現(xiàn)方法與原來的實現(xiàn)方法相同,。
 
  對于Virtex-6器件而言,,部分重配置(PR)流程可用于所有上述的實現(xiàn)。這樣,,就會自動得到針對低優(yōu)先級分區(qū)的部分比特流,。由于Spartan-6器件 系列不支持PR流程,在實現(xiàn)針對Spartan-6設(shè)計的Fast Startup時,,我們使用了針對差異化的部分重配置的BitGen選項,,以獲得低優(yōu)先級分區(qū)的部分比特流。[5]圖3給出了該工具流程的高層概覽,。

圖3 – Fast Startup工具流程

實驗與結(jié)果
  為了在硬件中驗證Fast Startup配置方法,,我們的研究小組在一塊Virtex-6 ML605板和一塊Spartan-6 SP605板上實現(xiàn)了這種方法。
 
  Virtex-6實現(xiàn)的應(yīng)用背景源自視頻領(lǐng)域,。用戶接通視頻系統(tǒng)電源時,,他們總是希望立刻就看到系統(tǒng)有所響應(yīng),而不用等待數(shù)秒,。因此,,在圖4所示的系統(tǒng)中,一個配備了TFT控制器的高優(yōu)先級子系統(tǒng)可以迅速點亮TFT屏幕,。對于其他低優(yōu)先級應(yīng)用,,即第二個設(shè)計提供了對以太網(wǎng)內(nèi)核、UART和硬件計時器的控制和訪問,。
 
圖4 – Virtex-6和Spartan-6演示(Virtex-6包括TFT模塊,,Spartan-6僅包括CAN模塊)的基本框圖
 
  對于這種演示來說,我們使用帶BPI的外置閃存作為配置接口,。一旦初始高優(yōu)先級比特流配置完該處理器子系統(tǒng),,在BRAM外運(yùn)行的軟件將初始化TFT控制器,,并將數(shù)據(jù)寫入DDR內(nèi)存中的幀緩沖器。這樣就能確保啟動時屏幕迅速顯示在TFT上面,。之后,,從BPI閃存中讀出第二個比特流,并配置低優(yōu)先級分區(qū),,這樣處理器子系統(tǒng)可以運(yùn)行其他應(yīng)用程序,,如Web服務(wù)器。
 
  為方便擴(kuò)展和清晰隔離兩個分區(qū),,我們使用了AXI至AXI橋接器,。這也在最大程度上減少了穿過兩個設(shè)計分區(qū)邊界的網(wǎng)絡(luò)。低優(yōu)先級分區(qū)與高優(yōu)先級分區(qū)共享系統(tǒng)時鐘,。
 
  表1表示FPGA資源利用情況,,表2表示傳統(tǒng)啟動方法、僅有高優(yōu)先級分區(qū)壓縮比特流的啟動方法[6]和Fast Startup配置方法的配置時間,。每種方法都使用BPIx16配置接口,,而采用的配置速率(這個選項決定了目標(biāo)配置時鐘頻率)為2 MHz和10 MHz。我們使用一臺示波器測量了該數(shù)據(jù),,捕獲了FPGA的“init”和“done”信號,。 表2中“壓縮的”一欄表示僅有高優(yōu)先級分區(qū)的壓縮比特流。含有兩個分區(qū)的完整FPGA設(shè)計的壓縮比特流將達(dá)到3.1 Mbyte,。

資源類型

分區(qū)

高優(yōu)先級

%

低優(yōu)先級

%

觸發(fā)器

8,849

2.9

1,968

0.7

查找表

7,039

4.7

2,197

1.5

I/O

135

22.5

20

3.3

RAMB36s

34

8.2

2

0.5

表1 – 占用的FPGA資源(針對XC6VLX240T)
 

XC6VLX240T

配置方法

配置接口

傳統(tǒng)的

8.9 MB

壓縮的

2.0 MB

Fast Startup 1.4 MB

BPIx16 CR2

1,740 ms

389 ms

278 ms

BPIx16 CR10

450 ms

112 ms

84.4 ms

表2 – 測得的配置時間(Virtex-6視頻設(shè)計)
 
SPARTAN-6汽車ECU設(shè)計
  為了驗證針對Spartan-6的Fast Startup方法,,我們選擇了汽車領(lǐng)域的ECU應(yīng)用情形。每當(dāng)您在汽車電子控制單元中看到一個FPGA器件時,,它一般都僅由ECU的主應(yīng)用處理單元使用(見圖5),。我們的目標(biāo)是實現(xiàn)一種將系統(tǒng)處理器放入FPGA中的設(shè)計。這樣我們就能避免對外置處理器的需要,,從而降低整個系統(tǒng)的成本,、復(fù)雜性、空間和功耗,。
圖5 – 現(xiàn)代汽車ECU中的FPGA應(yīng)用,,F(xiàn)PGA中集成了處理器(虛線)
 
系統(tǒng)分區(qū)
  對于這種情形,系統(tǒng)分區(qū)是顯而易見的,。我們把我們ECU設(shè)計分成作為高優(yōu)先級分區(qū)的系統(tǒng)處理器部分和作為低優(yōu)先級分區(qū)的應(yīng)用處理部分,。
 
  這種設(shè)計與Virtex-6設(shè)計存在很多相似之處,但不同的是,,我們用SPI取代BPI作為外置閃存的接口,,因此必須用CAN控制器取代TFT控制器。上電后,,系統(tǒng)控制器只有有限的時間引導(dǎo)并準(zhǔn)備好處理第一個通信數(shù)據(jù),。由于ECU使用CAN總線用于通信,,這個引導(dǎo)時間一般限制為100毫秒。按照傳統(tǒng)配置方法,,使用帶低成本配置接口(如SPI或Quad-SPI)的大型Spartan-6很難達(dá)到如此嚴(yán)格的時序要求,。而使用速度更快、更加昂貴的配置接口在汽車領(lǐng)域中是無法接受的,。
 
測量裝置
  對于SP605汽車ECU演示來說,,我們在實驗室中進(jìn)行了測量,圖6給出了測量裝置,。圖中左側(cè)是一個基于Spartan-3的X1500汽車平臺,,它實現(xiàn)了針對CAN總線的網(wǎng)絡(luò)發(fā)包器,該發(fā)生器能夠收發(fā)CAN消息并使用硬件計時器測量CAN消息之間的時間,。右側(cè)為目標(biāo)平臺,,它沒有直接與CAN總線相連,,而是使用來自額外的定制電路板的CAN收發(fā)器,。除了提供一個CAN PHY之外,這個定制電路板還要控制目標(biāo)電路板的電源,。
 
圖6 – 汽車ECU的測量裝置
  測量配置時間的程序從網(wǎng)絡(luò)發(fā)包器處于空轉(zhuǎn)(空檔)狀態(tài)下開始,,此時CAN PHY電路板上的CAN收發(fā)器也處于睡眠模式,SP605也與電源斷開,。接著,,網(wǎng)絡(luò)發(fā)包器啟動一個硬件計時器并發(fā)送一條CAN消息。識別CAN總線上的事件后,,CAN PHY被喚醒并重新讓SP605接通電源,。然后FPGA開始載入來自SPI閃存的初始比特流。
 
  由于沒有接收器確認(rèn)由網(wǎng)絡(luò)發(fā)包器發(fā)送的消息,,這條消息立刻重復(fù)發(fā)送,,直至FPGA已經(jīng)完成其配置并用有效的波特率配置了CAN內(nèi)核。一旦Spartan-6設(shè)計的CAN內(nèi)核確認(rèn)了這條消息,,網(wǎng)絡(luò)發(fā)包器的CAN內(nèi)核將觸發(fā)一個中斷,,由這個中斷停止硬件計時器。該計時器現(xiàn)在保存著SP605設(shè)計的引導(dǎo)時間,。測量結(jié)果包括SP605設(shè)計內(nèi)一個額外的硬件計時器,,此結(jié)果表明,當(dāng)執(zhí)行該軟件來配置內(nèi)置BRAM內(nèi)存的CAN內(nèi)核時,,軟件啟動時間可以忽略不計,。
 
  表3表示每個分區(qū)的FPGA資源消耗。百分比信息是用來表示使用的XC6S45LXT器件的有效資源的總數(shù)量,。
 

資源類型

分區(qū)

高優(yōu)先級

%

低優(yōu)先級

%

觸發(fā)器

3,480

6%

1,941

4%

查找表

3,507

13%

1,843

7%

I/O

58

20%

20

7%

RAMB

12

10%

2

2%

表3 – Spartan-6設(shè)計中占用的FPGA資源
 

配置接口

配置方法

傳統(tǒng)的1,450 KB

壓縮的

920 KB

Fast Startup 314 KB

SPIx1 CR2

5,297 ms

3,382 ms

1,157 ms

SPIx1 CR26

292 ms

196 ms

85 ms

SPIx2 CR2

2,671 ms

1,699 ms

596 ms

SPIx2 CR26

161 ms

113 ms

58 ms

SPIx4 CR2

1,348 ms

872 ms

311 ms

SPIx4 CR26

97 ms

73 ms

45 ms

表4 – 測得的Spartan-6配置時間
 
  表4表示配置時間的測量結(jié)果,。對于這些結(jié)果,,我們實現(xiàn)并比較了完整設(shè)計的一個標(biāo)準(zhǔn)比特流和一個壓縮比特流以及使用部分初始比特流的Fast Startup方法。該表列出了針對不同SPI總線帶寬和不同配置速率(CR)設(shè)置的配置時間,。不出所料,,配置時間與比特流大小成正比。由于使用快速配置,,時鐘沒有影響清倉過程(housecleaning process),,高CR設(shè)置的比率(按百分比)發(fā)生了變化。
 
在硬件中驗證
  我們開發(fā)的高級配置方法可以稱為優(yōu)先化的FPGA啟動,,因為它分兩步配置器件,。這種方法不僅對于解決現(xiàn)代FPGA中配置時間不斷增加的挑戰(zhàn)是必不可少,而且也能在很多現(xiàn)代應(yīng)用中得到使用,,如PCI Express或基于CAN的汽車系統(tǒng),。
 
  除了提出高優(yōu)先級初始配置方法,我們還在硬件中對這種方法進(jìn)行了驗證,。我們使用并測試了針對Fast Startup的工具流程和方法,,以在Spartan-6評估板(SP605)上實現(xiàn)基于CAN的汽車ECU,以及在Virtex-6原型板上實現(xiàn)視頻設(shè)計,。通過使用這種新穎的方法,,我們減小了初始比特流大小,從而使配置時間改進(jìn)了84%(與標(biāo)準(zhǔn)完整配置方案相比),。
 
  Xilinx將在針對7系列FPGA的軟件中支持針對 PCI Express應(yīng)用的Fast Startup概念,,并通過優(yōu)化的實現(xiàn)方法簡化其使用。在7系列中,,新的兩步比特流方法是實現(xiàn)起來最簡單最低成本的方法,。設(shè)計FPGA時,用戶可以通過一個簡單的軟件開關(guān)實現(xiàn)兩級比特流,。該比特流的第一級僅包含配置時序關(guān)鍵模塊需要的配置幀,。配置時,會產(chǎn)生一個FPGA STARTUP序列,,關(guān)鍵模塊變成活動模塊,,這樣就可輕易滿足100毫秒時序要求。當(dāng)時序關(guān)鍵模塊運(yùn)行時(例如PCI Express枚舉/配置系統(tǒng)過程正在進(jìn)行),,剩下的FPGA配置得以加載,。兩級比特流方法能夠使用便宜的閃存器件存儲比特流。
 
參考資料
[1]PCI Express底層規(guī)范(PCI Express Base Specification),,版本1.1,,PCI-SIG,2005年3月
[2]M. Huebner, J. Meyer, O. Sander, L.Braun, J. Becker, J. Noguera和R.Stewart, “基于部分及動態(tài)重配置的快速順序FPGA啟動”( PCI Express Base Specification),,IEEE計算機(jī)學(xué)會VLSI年度研討會(ISVLSI),,2010年7月
[3]層次設(shè)計方法指南,,UG748, v12.1, Xilinx,2010年5月
[4]B. Sellers, J. Heiner, M. Wirthlin和J. Kalb, “通過幀摘除和部分重配置壓縮比特流”( Bitstream compression through frame removal and partial reconfigura- tion),,現(xiàn)場可編程邏輯(和應(yīng)用國際大會FPL),,2009年9月
[5]J. Meyer, J. Noguera, M. Huebner, L. Braun, O. Sander, R. Mateos Gil, R. Stewart, J. Becker, “利用動態(tài)部分重配置快速啟動Spartan-6 FPGA”( Fast Startup for Spartan-6 FPGAs using dynamic partial reconfiguration),歐洲設(shè)計,、自動化與測試研討會(DATE ‘11),,2011年
[6]“通過部分重配置快速配置PCI Express技術(shù)”( Fast Configuration of PCI Express Technology through Partial Reconfiguration),XAPP883, v1.0, Xilinx, 2010年11月,,http://www.xilinx.com/ support/documentation/application_notes/xapp883_Fast_Config_PCIe.pdf.
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。