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