FPGA遠(yuǎn)程更新重啟系統(tǒng)
正文
1) 因?yàn)?strong>FPGA具有開(kāi)發(fā)周期短,可更新等優(yōu)點(diǎn),現(xiàn)在有越來(lái)越多的通訊系統(tǒng)采用FPGA作為實(shí)際產(chǎn)品方案。已經(jīng)有大量的FPGA應(yīng)用到通訊系統(tǒng)中,為了降低系統(tǒng)維護(hù)的人力成本,需要能夠?qū)崿F(xiàn)FPGA遠(yuǎn)程版本更新。本文將以Xilinx Virtex6 為例描述如何實(shí)現(xiàn)遠(yuǎn)程FPGA版本更新/重啟。
2) FPGA加載主要分為2大類(lèi),一類(lèi)是主動(dòng)模式(master)另一類(lèi)是從模式(slave).在主動(dòng)模式時(shí)FPGA會(huì)外掛存儲(chǔ)器存儲(chǔ)FPGA bit映像,FPGA會(huì)主動(dòng)提供時(shí)鐘訪問(wèn)外部存儲(chǔ)器。在從模式時(shí),F(xiàn)PGA作為從設(shè)備被掛在控制器CPU上由處理器控制對(duì)FPGA編程。上述兩種模式中,因?yàn)閺哪J紽PGA由外部CPU控制編程,可以通過(guò)遠(yuǎn)程更新CPU文件就可以實(shí)現(xiàn)對(duì)FPGA的版本更新,非常方便。但是當(dāng)CPU外掛的FPGA較多時(shí)會(huì)使系統(tǒng)加載時(shí)間過(guò)長(zhǎng),降低系統(tǒng)啟動(dòng)速度。這里將利用FPGA 多重啟(multi-boot)功能實(shí)現(xiàn)在主動(dòng)模式下版本更新。
3) 遠(yuǎn)程更新流程
當(dāng)系統(tǒng)需要升級(jí)時(shí),中心控制系統(tǒng)需要將新的FPGA比特映像文件直接發(fā)布到遠(yuǎn)程子系統(tǒng),由遠(yuǎn)程 子系統(tǒng)將比特文件更新到非易失存儲(chǔ)器。然后由FPGA內(nèi)部控制邏輯重新啟動(dòng)。比特映像文件更新后,下次上電啟動(dòng)將從新的比特映像文件。
如圖 1. FPGA遠(yuǎn)程更新系統(tǒng)
多重啟動(dòng) FPGA 介紹
a)多重啟動(dòng)介紹
VIRTEX6可以支持2套配置文件,第一個(gè)版本為安全版本存放在起始位置(spi起始地址為0),第二個(gè)版本為最終啟動(dòng)版本。當(dāng)FPGA啟動(dòng)時(shí),加載控制器會(huì)從地址0開(kāi)始讀取加載指令。當(dāng)讀到WBSTAR和IPROG指令時(shí),控制器就跳轉(zhuǎn)到WBSTAR指定的地址讀取新的加載指令。在第二個(gè)配置文件中不再發(fā)IPROG指令,控制其將順序執(zhí)行以直到配置文件結(jié)束。配置順序如圖 2。
b)多重啟動(dòng)模塊
i) 配置存儲(chǔ)器訪問(wèn)接口
在FPGA配置過(guò)程中,F(xiàn)PGA通過(guò)指定的配置管腳訪問(wèn)外部非易失存儲(chǔ)器,當(dāng)配置結(jié)束后,部分管腳被釋放可以用作普通邏輯管腳,但部分FPGA配置管腳是配置專(zhuān)用,在用戶應(yīng)用中是不可見(jiàn)的,需要例化專(zhuān)用模塊STARTUP_VIRTEX6才能允許用戶邏輯訪問(wèn)這些專(zhuān)用管腳。
ii) FPGA重啟模塊 ICAP
ICAP_VIRTEX6為用戶邏輯提供FPGA加載功能,它的功能與普通上點(diǎn)加載用的SELECTMAP 加載功能相同。接口信號(hào)見(jiàn)表 表 2:ICAP_VIRTEX6接口信號(hào)
通過(guò)ICAP_VIRTEX6,用戶邏輯可以發(fā)指令讓FPGA從指定的位置重新加載配置文件。加載指令的發(fā)送順序?yàn)椋?/p>
1. 發(fā)同步字
2. 將要加載文件的起始地址寫(xiě)道WBSTAR寄存器(Warm Boot Start Address Register)
3. 發(fā)送 IPROG指令
4. FPGA從WBSTAR寄存器指定地址開(kāi)始讀取配置數(shù)據(jù)。
下面是一個(gè)控制ICAP從地址80000重加載例子
4) 遠(yuǎn)程更新的可靠性
在遠(yuǎn)程更新過(guò)程中有多種原因可以造成遠(yuǎn)端的配置文件出錯(cuò)。比如數(shù)據(jù)傳輸錯(cuò)誤,所以在跟新完成之后需要回讀校驗(yàn)。為了減少傳輸負(fù)載可以采用CRC校驗(yàn)。但是如果在版本更新過(guò)程中出現(xiàn)掉電或系統(tǒng)重啟,由于非易失存儲(chǔ)器中的配置影像文件已經(jīng)被破壞,遠(yuǎn)程終端將無(wú)法啟動(dòng)。為了避免這種情況的發(fā)生,遠(yuǎn)程終端需要有2套配置文件,當(dāng)一套配置文件出錯(cuò)時(shí),系統(tǒng)可以回退到備份配置文件啟動(dòng)。這樣就可以保證當(dāng)系統(tǒng)出錯(cuò)時(shí),遠(yuǎn)程終端仍可以啟動(dòng),接受控制中心發(fā)出的版本更新指令重新進(jìn)行更新。
內(nèi)部發(fā)重啟過(guò)程和狀態(tài)
第1步:第一次FPGA被正確配置,狀態(tài)如下
在FALLBACK時(shí),配置文件中的IPROG命令不再起作用。