圖2 – Fast Startup概念:順序配置

高優(yōu)先級分區(qū)的實現(xiàn)

為了得到盡可能小的高優(yōu)先級分區(qū)的部分比特流,設計中有一些一般性問題需要考慮。首先,該分區(qū)必須只能包含此類組件:或者是時序關鍵組件,或者是系統(tǒng)需要這些組件來執(zhí)行低優(yōu)先級部分(如ICAP)的部分重配置。得到小規(guī)模初始部分比特流的關鍵是使用盡可能小的區(qū)域?qū)崿F(xiàn)高優(yōu)先級分區(qū)。也就是說,您必須將這個分區(qū)局限在FPGA中的一個適當區(qū)域中。

為了在FPGA中找到理想的物理位置,這個區(qū)域應該提供該設計需要的適當數(shù)量的資源。訪問該區(qū)域以外的資源也是可行的,但我們不鼓勵這么做——盡管對于I/O引腳來說,

這樣做一般是無法避免的。在尋找適當區(qū)域時,還要牢記的是這個FPGA區(qū)域有可能會妨礙FPGA設計中非時序關鍵部分的資源。

當您已經(jīng)對FPGA進行分區(qū),且已經(jīng)找到了這些分區(qū)的適當區(qū)域之后,下一步就是使用一個空的(黑盒子)低優(yōu)先級分區(qū)實現(xiàn)高優(yōu)先級分區(qū)。得到的比特流含有很多針對未使用資源的配置幀。您可以刪除這些幀,以便得到針對初步配置高優(yōu)先級分區(qū)的有效部分比特流。

低優(yōu)先級分區(qū)的實現(xiàn)

為了創(chuàng)建低優(yōu)先級的部分比特流,首先,您要創(chuàng)建含有這兩個分區(qū)(即高優(yōu)先級分區(qū)和低優(yōu)先級分區(qū))的完整FPGA設計的實現(xiàn)。從以前的實現(xiàn)中導入高優(yōu)先級分區(qū),從而保證其實現(xiàn)方法與原來的實現(xiàn)方法相同。

對于Virtex-6器件而言,部分重配置(PR)流程可用于所有上述的實現(xiàn)。這樣,就會自動得到針對低優(yōu)先級分區(qū)的部分比特流。由于Spartan-6器件 系列不支持PR流程,在實現(xiàn)針對Spartan-6設計的Fast Startup時,我們使用了針對差異化的部分重配置的BitGen選項,以獲得低優(yōu)先級分區(qū)的部分比特流。[5]圖3給出了該工具流程的高層概覽。

圖3 – Fast Startup工具流程

實驗與結果

為了在硬件中驗證Fast Startup配置方法,我們的研究小組在一塊Virtex-6 ML605板和一塊Spartan-6 SP605板上實現(xiàn)了這種方法。

Virtex-6實現(xiàn)的應用背景源自視頻領域。用戶接通視頻系統(tǒng)電源時,他們總是希望立刻就看到系統(tǒng)有所響應,而不用等待數(shù)秒。因此,在圖4所示的系統(tǒng)中,一個配備了TFT控制器的高優(yōu)先級子系統(tǒng)可以迅速點亮TFT屏幕。對于其他低優(yōu)先級應用,即第二個設計提供了對以太網(wǎng)內(nèi)核、UART和硬件計時器的控制和訪問。

圖4 – Virtex-6和Spartan-6演示(Virtex-6包括TFT模塊,Spartan-6僅包括CAN模塊)的基本框圖

對于這種演示來說,我們使用帶BPI的外置閃存作為配置接口。一旦初始高優(yōu)先級比特流配置完該處理器子系統(tǒng),在BRAM外運行的軟件將初始化TFT控制器,并將數(shù)據(jù)寫入DDR內(nèi)存中的幀緩沖器。這樣就能確保啟動時屏幕迅速顯示在TFT上面。之后,從BPI閃存中讀出第二個比特流,并配置低優(yōu)先級分區(qū),這樣處理器子系統(tǒng)可以運行其他應用程序,如Web服務器。

為方便擴展和清晰隔離兩個分區(qū),我們使用了AXI至AXI橋接器。這也在最大程度上減少了穿過兩個設計分區(qū)邊界的網(wǎng)絡。低優(yōu)先級分區(qū)與高優(yōu)先級分區(qū)共享系統(tǒng)時鐘。

表1表示FPGA資源利用情況,表2表示傳統(tǒng)啟動方法、僅有高優(yōu)先級分區(qū)壓縮比特流的啟動方法[6]和Fast Startup配置方法的配置時間。每種方法都使用BPIx16配置接口,而采用的配置速率(這個選項決定了目標配置時鐘頻率)為2 MHz和10 MHz。我們使用一臺示波器測量了該數(shù)據(jù),捕獲了FPGA的“init”和“done”信號。 表2中“壓縮的”一欄表示僅有高優(yōu)先級分區(qū)的壓縮比特流。含有兩個分區(qū)的完整FPGA設計的壓縮比特流將達到3.1 Mbyte。

SPARTAN-6汽車ECU設計

為了驗證針對Spartan-6的Fast Startup方法,我們選擇了汽車領域的ECU應用情形。每當您在汽車電子控制單元中看到一個FPGA器件時,它一般都僅由ECU的主應用處理單元使用(見圖5)。我們的目標是實現(xiàn)一種將系統(tǒng)處理器放入FPGA中的設計。這樣我們就能避免對外置處理器的需要,從而降低整個系統(tǒng)的成本、復雜性、空間和功耗。

圖5 – 現(xiàn)代汽車ECU中的FPGA應用,F(xiàn)PGA中集成了處理器(虛線)

系統(tǒng)分區(qū)

對于這種情形,系統(tǒng)分區(qū)是顯而易見的。我們把我們ECU設計分成作為高優(yōu)先級分區(qū)的系統(tǒng)處理器部分和作為低優(yōu)先級分區(qū)的應用處理部分。

這種設計與Virtex-6設計存在很多相似之處,但不同的是,我們用SPI取代BPI作為外置閃存的接口,因此必須用CAN控制器取代TFT控制器。上電后,系統(tǒng)控制器只有有限的時間引導并準備好處理第一個通信數(shù)據(jù)。由于ECU使用CAN總線用于通信,這個引導時間一般限制為100毫秒。按照傳統(tǒng)配置方法,使用帶低成本配置接口(如SPI或Quad-SPI)的大型Spartan-6很難達到如此嚴格的時序要求。而使用速度更快、更加昂貴的配置接口在汽車領域中是無法接受的。

測量裝置

對于SP605汽車ECU演示來說,我們在實驗室中進行了測量,圖6給出了測量裝置。圖中左側是一個基于Spartan-3的X1500汽車平臺,它實現(xiàn)了針對CAN總線的網(wǎng)絡發(fā)包器,該發(fā)生器能夠收發(fā)CAN消息并使用硬件計時器測量CAN消息之間的時間。右側為目標平臺,它沒有直接與CAN總線相連,而是使用來自額外的定制電路板的CAN收發(fā)器。除了提供一個CAN PHY之外,這個定制電路板還要控制目標電路板的電源。

圖6 – 汽車ECU的測量裝置

測量配置時間的程序從網(wǎng)絡發(fā)包器處于空轉(zhuǎn)(空檔)狀態(tài)下開始,此時CAN PHY電路板上的CAN收發(fā)器也處于睡眠模式,SP605也與電源斷開。接著,網(wǎng)絡發(fā)包器啟動一個硬件計時器并發(fā)送一條CAN消息。識別CAN總線上的事件后,CAN PHY被喚醒并重新讓SP605接通電源。然后FPGA開始載入來自SPI閃存的初始比特流。

由于沒有接收器確認由網(wǎng)絡發(fā)包器發(fā)送的消息,這條消息立刻重復發(fā)送,直至FPGA已經(jīng)完成其配置并用有效的波特率配置了CAN內(nèi)核。一旦Spartan-6設計的CAN內(nèi)核確認了這條消息,網(wǎng)絡發(fā)包器的CAN內(nèi)核將觸發(fā)一個中斷,由這個中斷停止硬件計時器。該計時器現(xiàn)在保存著SP605設計的引導時間。測量結果包括SP605設計內(nèi)一個額外的硬件計時器,此結果表明,當執(zhí)行該軟件來配置內(nèi)置BRAM內(nèi)存的CAN內(nèi)核時,軟件啟動時間可以忽略不計。

表3表示每個分區(qū)的FPGA資源消耗。百分比信息是用來表示使用的XC6S45LXT器件的有效資源的總數(shù)量

表4表示配置時間的測量結果。對于這些結果,我們實現(xiàn)并比較了完整設計的一個標準比特流和一個壓縮比特流以及使用部分初始比特流的Fast Startup方法。該表列出了針對不同SPI總線帶寬和不同配置速率(CR)設置的配置時間。不出所料,配置時間與比特流大小成正比。由于使用快速配置,時鐘沒有影響清倉過程(housecleaning process),高CR設置的比率(按百分比)發(fā)生了變化。

在硬件中驗證

我們開發(fā)的高級配置方法可以稱為優(yōu)先化的FPGA啟動,因為它分兩步配置器件。這種方法不僅對于解決現(xiàn)代FPGA中配置時間不斷增加的挑戰(zhàn)是必不可少,而且也能在很多現(xiàn)代應用中得到使用,如PCI Express或基于CAN的汽車系統(tǒng)。

除了提出高優(yōu)先級初始配置方法,我們還在硬件中對這種方法進行了驗證。我們使用并測試了針對Fast Startup的工具流程和方法,以在Spartan-6評估板(SP605)上實現(xiàn)基于CAN的汽車ECU,以及在Virtex-6原型板上實現(xiàn)視頻設計。通過使用這種新穎的方法,我們減小了初始比特流大小,從而使配置時間改進了84%(與標準完整配置方案相比)。

Xilinx將在針對7系列FPGA的軟件中支持針對 PCI Express應用的Fast Startup概念,并通過優(yōu)化的實現(xiàn)方法簡化其使用。在7系列中,新的兩步比特流方法是實現(xiàn)起來最簡單最低成本的方法。設計FPGA時,用戶可以通過一個簡單的軟件開關實現(xiàn)兩級比特流。該比特流的第一級僅包含配置時序關鍵模塊需要的配置幀。配置時,會產(chǎn)生一個FPGA STARTUP序列,關鍵模塊變成活動模塊,這樣就可輕易滿足100毫秒時序要求。當時序關鍵模塊運行時(例如PCI Express枚舉/配置系統(tǒng)過程正在進行),剩下的FPGA配置得以加載。兩級比特流方法能夠使用便宜的閃存器件存儲比特流。

分享到

youjia

相關推薦