1) 因?yàn)?a class="innerlink" href="http://theprogrammingfactory.com/tags/FPGA" title="FPGA" target="_blank">FPGA具有開發(fā)周期短,可更新等優(yōu)點(diǎn),現(xiàn)在有越來越多的通訊系統(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大類,一類是主動(dòng)模式(master)另一類是從模式(slave).在主動(dòng)模式時(shí)FPGA會(huì)外掛存儲(chǔ)器存儲(chǔ)FPGA bit映像,FPGA會(huì)主動(dòng)提供時(shí)鐘訪問外部存儲(chǔ)器。在從模式時(shí),F(xiàn)PGA作為從設(shè)備被掛在控制器CPU上由處理器控制對(duì)FPGA編程。上述兩種模式中,因?yàn)閺哪J紽PGA由外部CPU控制編程,可以通過遠(yuǎn)程更新CPU文件就可以實(shí)現(xiàn)對(duì)FPGA的版本更新,非常方便。但是當(dāng)CPU外掛的FPGA較多時(shí)會(huì)使系統(tǒng)加載時(shí)間過長,降低系統(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)
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開始讀取加載指令。當(dāng)讀到WBSTAR和IPROG指令時(shí),控制器就跳轉(zhuǎn)到WBSTAR指定的地址讀取新的加載指令。在第二個(gè)配置文件中不再發(fā)IPROG指令,控制其將順序執(zhí)行以直到配置文件結(jié)束。配置順序如圖 2。
FPGA遠(yuǎn)程更新重啟系統(tǒng)
b)多重啟動(dòng)模塊
i) 配置存儲(chǔ)器訪問接口
在FPGA配置過程中,F(xiàn)PGA通過指定的配置管腳訪問外部非易失存儲(chǔ)器,當(dāng)配置結(jié)束后,部分管腳被釋放可以用作普通邏輯管腳,但部分FPGA配置管腳是配置專用,在用戶應(yīng)用中是不可見的,需要例化專用模塊STARTUP_VIRTEX6才能允許用戶邏輯訪問這些專用管腳。
FPGA遠(yuǎn)程更新重啟系統(tǒng)