在眾多當代應用中,嵌入式系統必須滿(mǎn)足極其苛刻的時(shí)序要求。其中之一就是啟動(dòng)時(shí)間——即上電后電子系統進(jìn)入可操作狀態(tài)所需要的時(shí)間。PCI Express®產(chǎn)品或汽車(chē)應用中基于CAN的電子控制單元(ECU)就是具有嚴格時(shí)序要求的電子系統的應用實(shí)例。 標準PCI Express®(PCIe)系統上電后僅100毫秒,系統的根組件就開(kāi)始掃描總線(xiàn)以便弄清拓撲結構,并在這一過(guò)程中進(jìn)行初始化配置。 如果PCIe設備沒(méi)有準備好響應配置請求,根組件就找不到此PCIe設備,并認為它不存在。該設備將無(wú)法加入PCIe總線(xiàn)系統。[1] 汽車(chē)應用中的情形與此大體相仿。在基于CAN的網(wǎng)絡(luò )中,ECU進(jìn)入睡眠模式,這時(shí)它們將停止運行并切斷電源連接。只有很少部分電路仍然保持戒備狀態(tài),以便探測喚醒信號。一旦出現喚醒事件,ECU就會(huì )重新連接電源并開(kāi)始引導。雖然在喚醒事件后的頭一個(gè)100 毫秒內允許錯過(guò)一些消息,但在此之后所有ECU都必須在網(wǎng)絡(luò )(如CAN網(wǎng)絡(luò ))上做好充分的運行準備。 Xilinx Automotive、Xilinx研究實(shí)驗室以及德國卡爾斯魯厄技術(shù)研究所之間合作展開(kāi)了深入的研發(fā)工作,正在設法通過(guò)一種FPGA兩步配置方法解決這一問(wèn)題。 半導體行業(yè)的科技趨勢已經(jīng)能使FPGA廠(chǎng)家大大增加其器件中的資源。但比特流規模也在成比例地增長(cháng),配置器件需要的時(shí)間也是如此。因此,即使對于中等規模的FPGA,使用低成本配置方案也不可能滿(mǎn)足嚴格的啟動(dòng)時(shí)序要求。圖1表示不同的Xilinx® Spartan®-6 FPGA器件在使用低成本SPI/Quad-SPI配置接口時(shí)的配置時(shí)間。即使使用快速配置方案(即在40 MHz配置時(shí)鐘下運行的Quad-SPI),也只有小型FPGA器件才能達到100 毫秒的啟動(dòng)時(shí)序要求。對于Xilinx Virtex®-6器件來(lái)說(shuō),這個(gè)結果看來(lái)更具挑戰性,因為這些器件提供了更豐富的FPGA資源。 為了克服這個(gè)難題,Fast Startup分兩步配置FPGA器件,而非單步(整片)的全器件配置。按照這種新穎的思路,我們的策略是在上電時(shí)使用最高優(yōu)先級比特流僅載入時(shí)序關(guān)鍵模塊,然后再載入非時(shí)序關(guān)鍵模塊。這種方法最大程度地減少了初始配置數據,從而最大程度地減少了在面向時(shí)序關(guān)鍵設計的FPGA器件啟動(dòng)時(shí)間。 FAST STARTUP對比部分重配置 Fast Startup允許FPGA設計盡快啟動(dòng)設計的關(guān)鍵模塊,關(guān)鍵模塊的啟動(dòng)速度比標準全配置方法要快得多[2]。雖然,從本質(zhì)上來(lái)講Fast Startup利用了部分重配置,但它與這種方法的傳統概念所有不同。部分重配置的初衷是將完整設計作為可在運行時(shí)修改的初始配置使用。相反,Fast Startup已經(jīng)使用了一個(gè)初始的部分比特流,以在上電時(shí)僅僅配置FPGA器件的一個(gè)特定(很小的一部分)區域。第一次配置僅包含完整FPGA設計中必須配置和快速運行的那些部分。而剩下的部分則在以后、在運行時(shí),利用部分重配置進(jìn)行配置。圖2說(shuō)明了這一順序概念。 工具流程概述 Fast Startup的工具流程依靠設計保存流程,來(lái)創(chuàng )建針對時(shí)序關(guān)鍵子系統及非時(shí)序關(guān)鍵子系統的部分比特流。 設計保存流程將FPGA設計分割為邏輯模塊(稱(chēng)為“分區”)。分區構成了層次邊界,將內部模塊與設計中的其他組件相互隔離。分區一旦實(shí)現(即完成布局和布線(xiàn)),就能被其他實(shí)現運行導入,以按照每個(gè)實(shí)例中完全相同的方式實(shí)現該分區的模塊[3]。 因此,使用Fast Startup方法的第一步是將完整的FPGA設計分成兩部分:即含有時(shí)序關(guān)鍵子系統的高優(yōu)先級分區和針對其余組件的低優(yōu)先級分區。 ![]() 圖1-計算出的Spartan-6配置時(shí)間的對數表示(按最壞情況計算) ![]() 圖2 – Fast Startup概念:順序配置 高優(yōu)先級分區的實(shí)現 為了得到盡可能小的高優(yōu)先級分區的部分比特流,設計中有一些一般性問(wèn)題需要考慮。首先,該分區必須只能包含此類(lèi)組件:或者是時(shí)序關(guān)鍵組件,或者是系統需要這些組件來(lái)執行低優(yōu)先級部分(如ICAP)的部分重配置。得到小規模初始部分比特流的關(guān)鍵是使用盡可能小的區域實(shí)現高優(yōu)先級分區。也就是說(shuō),您必須將這個(gè)分區局限在FPGA中的一個(gè)適當區域中。 為了在FPGA中找到理想的物理位置,這個(gè)區域應該提供該設計需要的適當數量的資源。訪(fǎng)問(wèn)該區域以外的資源也是可行的,但我們不鼓勵這么做——盡管對于I/O引腳來(lái)說(shuō), 這樣做一般是無(wú)法避免的。在尋找適當區域時(shí),還要牢記的是這個(gè)FPGA區域有可能會(huì )妨礙FPGA設計中非時(shí)序關(guān)鍵部分的資源。 當您已經(jīng)對FPGA進(jìn)行分區,且已經(jīng)找到了這些分區的適當區域之后,下一步就是使用一個(gè)空的(黑盒子)低優(yōu)先級分區實(shí)現高優(yōu)先級分區。得到的比特流含有很多針對未使用資源的配置幀。您可以刪除這些幀,以便得到針對初步配置高優(yōu)先級分區的有效部分比特流。[4] 低優(yōu)先級分區的實(shí)現 為了創(chuàng )建低優(yōu)先級的部分比特流,首先,您要創(chuàng )建含有這兩個(gè)分區(即高優(yōu)先級分區和低優(yōu)先級分區)的完整FPGA設計的實(shí)現。從以前的實(shí)現中導入高優(yōu)先級分區,從而保證其實(shí)現方法與原來(lái)的實(shí)現方法相同。 對于Virtex-6器件而言,部分重配置(PR)流程可用于所有上述的實(shí)現。這樣,就會(huì )自動(dòng)得到針對低優(yōu)先級分區的部分比特流。由于Spartan-6器件 系列不支持PR流程,在實(shí)現針對Spartan-6設計的Fast Startup時(shí),我們使用了針對差異化的部分重配置的BitGen選項,以獲得低優(yōu)先級分區的部分比特流。[5]圖3給出了該工具流程的高層概覽。 ![]() 圖3 – Fast Startup工具流程 實(shí)驗與結果 為了在硬件中驗證Fast Startup配置方法,我們的研究小組在一塊Virtex-6 ML605板和一塊Spartan-6 SP605板上實(shí)現了這種方法。 Virtex-6實(shí)現的應用背景源自視頻領(lǐng)域。用戶(hù)接通視頻系統電源時(shí),他們總是希望立刻就看到系統有所響應,而不用等待數秒。因此,在圖4所示的系統中,一個(gè)配備了TFT控制器的高優(yōu)先級子系統可以迅速點(diǎn)亮TFT屏幕。對于其他低優(yōu)先級應用,即第二個(gè)設計提供了對以太網(wǎng)內核、UART和硬件計時(shí)器的控制和訪(fǎng)問(wèn)。 ![]() 圖4 – Virtex-6和Spartan-6演示(Virtex-6包括TFT模塊,Spartan-6僅包括CAN模塊)的基本框圖 對于這種演示來(lái)說(shuō),我們使用帶BPI的外置閃存作為配置接口。一旦初始高優(yōu)先級比特流配置完該處理器子系統,在BRAM外運行的軟件將初始化TFT控制器,并將數據寫(xiě)入DDR內存中的幀緩沖器。這樣就能確保啟動(dòng)時(shí)屏幕迅速顯示在TFT上面。之后,從BPI閃存中讀出第二個(gè)比特流,并配置低優(yōu)先級分區,這樣處理器子系統可以運行其他應用程序,如Web服務(wù)器。 為方便擴展和清晰隔離兩個(gè)分區,我們使用了AXI至AXI橋接器。這也在最大程度上減少了穿過(guò)兩個(gè)設計分區邊界的網(wǎng)絡(luò )。低優(yōu)先級分區與高優(yōu)先級分區共享系統時(shí)鐘。 表1表示FPGA資源利用情況,表2表示傳統啟動(dòng)方法、僅有高優(yōu)先級分區壓縮比特流的啟動(dòng)方法[6]和Fast Startup配置方法的配置時(shí)間。每種方法都使用BPIx16配置接口,而采用的配置速率(這個(gè)選項決定了目標配置時(shí)鐘頻率)為2 MHz和10 MHz。我們使用一臺示波器測量了該數據,捕獲了FPGA的“init”和“done”信號。 表2中“壓縮的”一欄表示僅有高優(yōu)先級分區的壓縮比特流。含有兩個(gè)分區的完整FPGA設計的壓縮比特流將達到3.1 Mbyte。
SPARTAN-6汽車(chē)ECU設計 為了驗證針對Spartan-6的Fast Startup方法,我們選擇了汽車(chē)領(lǐng)域的ECU應用情形。每當您在汽車(chē)電子控制單元中看到一個(gè)FPGA器件時(shí),它一般都僅由ECU的主應用處理單元使用(見(jiàn)圖5)。我們的目標是實(shí)現一種將系統處理器放入FPGA中的設計。這樣我們就能避免對外置處理器的需要,從而降低整個(gè)系統的成本、復雜性、空間和功耗。 ![]() 圖5 – 現代汽車(chē)ECU中的FPGA應用,FPGA中集成了處理器(虛線(xiàn)) 系統分區 對于這種情形,系統分區是顯而易見(jiàn)的。我們把我們ECU設計分成作為高優(yōu)先級分區的系統處理器部分和作為低優(yōu)先級分區的應用處理部分。 這種設計與Virtex-6設計存在很多相似之處,但不同的是,我們用SPI取代BPI作為外置閃存的接口,因此必須用CAN控制器取代TFT控制器。上電后,系統控制器只有有限的時(shí)間引導并準備好處理第一個(gè)通信數據。由于ECU使用CAN總線(xiàn)用于通信,這個(gè)引導時(shí)間一般限制為100毫秒。按照傳統配置方法,使用帶低成本配置接口(如SPI或Quad-SPI)的大型Spartan-6很難達到如此嚴格的時(shí)序要求。而使用速度更快、更加昂貴的配置接口在汽車(chē)領(lǐng)域中是無(wú)法接受的。 測量裝置 對于SP605汽車(chē)ECU演示來(lái)說(shuō),我們在實(shí)驗室中進(jìn)行了測量,圖6給出了測量裝置。圖中左側是一個(gè)基于Spartan-3的X1500汽車(chē)平臺,它實(shí)現了針對CAN總線(xiàn)的網(wǎng)絡(luò )發(fā)包器,該發(fā)生器能夠收發(fā)CAN消息并使用硬件計時(shí)器測量CAN消息之間的時(shí)間。右側為目標平臺,它沒(méi)有直接與CAN總線(xiàn)相連,而是使用來(lái)自額外的定制電路板的CAN收發(fā)器。除了提供一個(gè)CAN PHY之外,這個(gè)定制電路板還要控制目標電路板的電源。 ![]() 圖6 – 汽車(chē)ECU的測量裝置 測量配置時(shí)間的程序從網(wǎng)絡(luò )發(fā)包器處于空轉(空檔)狀態(tài)下開(kāi)始,此時(shí)CAN PHY電路板上的CAN收發(fā)器也處于睡眠模式,SP605也與電源斷開(kāi)。接著(zhù),網(wǎng)絡(luò )發(fā)包器啟動(dòng)一個(gè)硬件計時(shí)器并發(fā)送一條CAN消息。識別CAN總線(xiàn)上的事件后,CAN PHY被喚醒并重新讓SP605接通電源。然后FPGA開(kāi)始載入來(lái)自SPI閃存的初始比特流。 由于沒(méi)有接收器確認由網(wǎng)絡(luò )發(fā)包器發(fā)送的消息,這條消息立刻重復發(fā)送,直至FPGA已經(jīng)完成其配置并用有效的波特率配置了CAN內核。一旦Spartan-6設計的CAN內核確認了這條消息,網(wǎng)絡(luò )發(fā)包器的CAN內核將觸發(fā)一個(gè)中斷,由這個(gè)中斷停止硬件計時(shí)器。該計時(shí)器現在保存著(zhù)SP605設計的引導時(shí)間。測量結果包括SP605設計內一個(gè)額外的硬件計時(shí)器,此結果表明,當執行該軟件來(lái)配置內置BRAM內存的CAN內核時(shí),軟件啟動(dòng)時(shí)間可以忽略不計。 表3表示每個(gè)分區的FPGA資源消耗。百分比信息是用來(lái)表示使用的XC6S45LXT器件的有效資源的總數量。
表4表示配置時(shí)間的測量結果。對于這些結果,我們實(shí)現并比較了完整設計的一個(gè)標準比特流和一個(gè)壓縮比特流以及使用部分初始比特流的Fast Startup方法。該表列出了針對不同SPI總線(xiàn)帶寬和不同配置速率(CR)設置的配置時(shí)間。不出所料,配置時(shí)間與比特流大小成正比。由于使用快速配置,時(shí)鐘沒(méi)有影響清倉過(guò)程(housecleaning process),高CR設置的比率(按百分比)發(fā)生了變化。 在硬件中驗證 我們開(kāi)發(fā)的高級配置方法可以稱(chēng)為優(yōu)先化的FPGA啟動(dòng),因為它分兩步配置器件。這種方法不僅對于解決現代FPGA中配置時(shí)間不斷增加的挑戰是必不可少,而且也能在很多現代應用中得到使用,如PCI Express或基于CAN的汽車(chē)系統。 除了提出高優(yōu)先級初始配置方法,我們還在硬件中對這種方法進(jìn)行了驗證。我們使用并測試了針對Fast Startup的工具流程和方法,以在Spartan-6評估板(SP605)上實(shí)現基于CAN的汽車(chē)ECU,以及在Virtex-6原型板上實(shí)現視頻設計。通過(guò)使用這種新穎的方法,我們減小了初始比特流大小,從而使配置時(shí)間改進(jìn)了84%(與標準完整配置方案相比)。 Xilinx將在針對7系列FPGA的軟件中支持針對 PCI Express應用的Fast Startup概念,并通過(guò)優(yōu)化的實(shí)現方法簡(jiǎn)化其使用。在7系列中,新的兩步比特流方法是實(shí)現起來(lái)最簡(jiǎn)單最低成本的方法。設計FPGA時(shí),用戶(hù)可以通過(guò)一個(gè)簡(jiǎn)單的軟件開(kāi)關(guān)實(shí)現兩級比特流。該比特流的第一級僅包含配置時(shí)序關(guān)鍵模塊需要的配置幀。配置時(shí),會(huì )產(chǎn)生一個(gè)FPGA STARTUP序列,關(guān)鍵模塊變成活動(dòng)模塊,這樣就可輕易滿(mǎn)足100毫秒時(shí)序要求。當時(shí)序關(guān)鍵模塊運行時(shí)(例如PCI Express枚舉/配置系統過(guò)程正在進(jìn)行),剩下的FPGA配置得以加載。兩級比特流方法能夠使用便宜的閃存器件存儲比特流。 參考資料 [1]PCI Express底層規范(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, “基于部分及動(dòng)態(tài)重配置的快速順序FPGA啟動(dòng)”( PCI Express Base Specification),IEEE計算機學(xué)會(huì )VLSI年度研討會(huì )(ISVLSI),2010年7月 [3]層次設計方法指南,UG748, v12.1, Xilinx,2010年5月 [4]B. Sellers, J. Heiner, M. Wirthlin和J. Kalb, “通過(guò)幀摘除和部分重配置壓縮比特流”( Bitstream compression through frame removal and partial reconfigura- tion),現場(chǎng)可編程邏輯(和應用國際大會(huì )FPL),2009年9月 [5]J. Meyer, J. Noguera, M. Huebner, L. Braun, O. Sander, R. Mateos Gil, R. Stewart, J. Becker, “利用動(dòng)態(tài)部分重配置快速啟動(dòng)Spartan-6 FPGA”( Fast Startup for Spartan-6 FPGAs using dynamic partial reconfiguration),歐洲設計、自動(dòng)化與測試研討會(huì )(DATE ‘11),2011年 [6]“通過(guò)部分重配置快速配置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. 作者 Joachim Meyer 博士生 卡爾斯魯厄技術(shù)研究所 joachim.meyer@kit.edu Juanjo Noguera 高級研究工程師 Xilinx公司 juanjo.noguera@xilinx.com Rodney Stewart 汽車(chē)系統架構師 Xilinx公司 rodney.stewart@xilinx.com Michael Hübner 工程博士 卡爾斯魯厄技術(shù)研究所 michael.huebner@kit.edu Jürgen Becker 教授,工程博士 卡爾斯魯厄技術(shù)研究所 becker@kit.edu |