金璐
摘要:超聲臺(tái)車系統(tǒng)由于體積大,機(jī)械外殼不建議頻繁拆卸,因此必須考慮FPGA燒錄的問題。傳統(tǒng)FPGA升級(jí)方式往往需要通過JTAG升級(jí),而這種方式必須拆卸外殼。文章基于Xilinx公司的XC7K325T芯片,采用MultiBoot原理研究了一款超聲設(shè)備FPGA固件升級(jí)的更新保護(hù)設(shè)計(jì)。經(jīng)理論和實(shí)際驗(yàn)證,該設(shè)計(jì)符合預(yù)期效果,能成功應(yīng)用到超聲臺(tái)車系統(tǒng)中。
關(guān)鍵詞:Xilinx:更新保護(hù):固件升級(jí):MultiBoot
中圖分類號(hào):TN791
文獻(xiàn)標(biāo)志碼:A
0引言
FPGA程序升級(jí),一般需要使用下載器通過JTAG接口與FP GA連接,但在整機(jī)生產(chǎn)及售后服務(wù)的情況下,通過下載器升級(jí)的方法會(huì)一定程度損傷機(jī)器本身¨]。這種情況下,后期的維護(hù)升級(jí)成本、設(shè)備使用的可靠性和安全性都會(huì)受到一定的影響[2].因此,節(jié)約超聲臺(tái)車系統(tǒng)成本及售后服務(wù)人力成本至關(guān)重要[3]。為了避免這種情況發(fā)生,需要設(shè)計(jì)一個(gè)可以取代JTAG升級(jí)的方案,目前可行性方案主要包括以下幾點(diǎn)需求:首先板載FPGA可以通過SPI總線配置Flash.其次FPCA跳轉(zhuǎn)到Flash的對(duì)應(yīng)地址讀取燒寫到Flash中的-bin文件加載運(yùn)行[4].最后需要一種通信連接介質(zhì)。
1 需求分析
針對(duì)上述需求,制定滿足超聲FP GA更新保護(hù)設(shè)計(jì)方案,按要求逐一分析。
1.1 Flash Programer設(shè)計(jì)
如圖1所示,展示了Xilinx 7系列FPGA和SPIflash交互接口。當(dāng)FP GA讀取和尋址時(shí),通過MOSI引腳發(fā)送到SPI flash.獲取的數(shù)據(jù)通過MISO引腳從SPI flash發(fā)送到FP GA。SCK是時(shí)鐘引腳,ss是低電平有效的主從選擇引腳。
1.2
FPGA跳轉(zhuǎn)加載
Xilinx 7系列FPGA的MultiBoot和Fallback功能支持現(xiàn)場(chǎng)更新系統(tǒng),比特流文件可以在現(xiàn)場(chǎng)動(dòng)態(tài)升級(jí).FPGA MultiBoot功能支持在文件之間動(dòng)態(tài)切換。當(dāng)在MultiBoot配置過程中檢測(cè)到錯(cuò)誤時(shí).FPGA觸發(fā)回退功能,確保將已知的良好設(shè)計(jì)加載到器件中。當(dāng)Fallback發(fā)生的時(shí)候,除MultiBoot邏輯、熱啟動(dòng)起始地址寄存器和啟動(dòng)狀態(tài)寄存器需要被保留外,內(nèi)部生成的脈沖信號(hào)會(huì)復(fù)位整個(gè)配置邏輯。當(dāng)復(fù)位脈沖生效時(shí),INIT—B和DONE信號(hào)會(huì)被拉低,配置存儲(chǔ)器的內(nèi)容會(huì)被清除,F(xiàn)LASH從0地址重新啟動(dòng)配置過程。
如圖2所示.Xilinx提供的MultiBoot功能為FP GA提供了很多選擇性,包括bin文件的加載地址選擇。內(nèi)部邏輯IPROG啟動(dòng)配置邏輯首先跳轉(zhuǎn)到golden燒錄文件首地址,同時(shí)WBSTAR將熱啟動(dòng)地址指定到update燒錄文件首地址,并嘗試更新跳轉(zhuǎn)。如果此期間檢測(cè)到配置錯(cuò)誤,則會(huì)觸發(fā)Fallback,重新加載golden燒錄文件,這就是MultiBoot和Fallback的工作原理。
2 設(shè)計(jì)與實(shí)現(xiàn)
整體設(shè)計(jì)方案如圖3所示.Host主機(jī)通過PCIE總線將燒錄文件發(fā)送給FP CJA.FPCJA在通過SPI總線燒寫到FLASH里。
本設(shè)計(jì)存在兩個(gè)燒錄文件,考慮利用Vivado白帶的.msc文件將golden燒錄文件和update燒錄文件兩個(gè)文件一同燒錄到Flash里。這樣在工廠出來的板子上的flash就有MuhiBoot功能,可以直接投產(chǎn)。MultiBoot的構(gòu)建及驗(yàn)證有以下幾點(diǎn)。
2.1 xdc文件配置情況
golden bin文件中需要添加如下命令:
set_property BITSTREAM. CONFIG. CONFICJFALLBACK ENABLE[ currenLdesign]
set—property BITSTREAM. CONFIG. NEXT—CONFIG_ADDR Ox0300000[ current_desig
set_property BITSTREAM. GENERAL. COMPRESSTRUE[ c.urrent_design]
set—property BITSTREAM. CONFIC. SPI—BUSWIDTH l[current_design]
update bin文件中需要添加如下命令:
set
—
property
BITSTREAM.
CONFIG.CONFIGFALLBACK ENABLE[ current_design]
set — property
BITSTREAM. CJENERAI.COMPRESS TRUE[ current_design]
set—property
BITSTREAM. CONFIC. SPI—BUSWIDTH l[current_design]
golden燒錄文件中的NEXT—CONFIC—ADDR的數(shù)值必須與P rogrammer邏輯中燒寫偏移地址保持一致,才能保證golden燒錄文件內(nèi)容不被破壞。只有這樣產(chǎn)品升級(jí)過程才能保證即使有意外情況(如掉電,誤操作等)發(fā)生時(shí),系統(tǒng)重啟后仍能更新update燒錄文件,這才是設(shè)計(jì)的意義。
2.2 生成.mcs文件
根據(jù)Xilinx官方手冊(cè),使用tcl命令writ e_cfg{mem創(chuàng)建一個(gè).mcs文件,具體結(jié)構(gòu)如下:
write_cfgmem -format mc.s -interface SPIX4 -size16 -loadbit”up 0/golden. bit up Ox0300000 /update.bit" /filename.mc.s
2.3
FPCJA與Host傳輸介質(zhì)選定
本設(shè)計(jì)中FPGA與Host的橋梁是PCIE.其中一個(gè)原因是現(xiàn)有超聲臺(tái)車具備IPASS總線接口,所以考慮沿用這個(gè)傳輸方式。但是,對(duì)于PCIE來說數(shù)據(jù)是流數(shù)據(jù),而這種流數(shù)據(jù)不能直接寫入到Flash中,所以FPGA中需要考慮數(shù)據(jù)解析整合,即需要確定FLASH塊寫還是FLASH頁寫,這里使用的方式是塊寫,利用FIFO進(jìn)行速率緩沖,具體的工作流程如圖4所示。
2.4 軟件測(cè)試
依據(jù)如圖5所示的軟件界面,測(cè)試步驟如下:
(1)正常上電觀察FPCA的done燈是否點(diǎn)亮。
(2)打開軟件修改燒寫Flash的偏移地址。
(3)執(zhí)行Flash擦除指令,手冊(cè)規(guī)定flash erase動(dòng)作需要100 s。
(4)待步驟(3)執(zhí)行后,掉電上電,觀察done燈,發(fā)現(xiàn)done燈較正常情況會(huì)慢幾十秒,這個(gè)情況是正常的。
(5)此時(shí)PCIE的枚舉是沒有被建立的,所以需要重啟超聲臺(tái)車系統(tǒng)。
(6)待重啟后,執(zhí)行部分寫入。
(7)掉電上電觀察done燈正常點(diǎn)亮,說明燒寫正確。
2.5 測(cè)試結(jié)果
測(cè)試過程中使用Vivado在線調(diào)試FP GA.通過觀察SPI的時(shí)序及約束,確定數(shù)據(jù)下載的位置是期望的偏移地址;觀察PCIE總線的時(shí)序圖,確定數(shù)據(jù)鏈路為期望的BARI.且BARI傳遞到后端,更新數(shù)據(jù)也同樣傳遞到PCIE核與SPI核之間的FIFO中,且數(shù)據(jù)正確,時(shí)序約束符合跨時(shí)鐘域的設(shè)計(jì)要求。具體結(jié)果如下,原基礎(chǔ)版本為0.3.0.升級(jí)后,版本為0.3.3.更新方案可用。測(cè)試過程中強(qiáng)制掉電,上電后觀察版本號(hào),為原版本0.3.0,后執(zhí)行更新操作可恢復(fù)正常。下載速度方面,傳統(tǒng)JTAG下載時(shí)間一般為10 min.本設(shè)計(jì)下載時(shí)間為2 min。
3 結(jié)語
本研究針對(duì)目前超聲系統(tǒng)固件更新過程的復(fù)雜性,依托Xilinx的MultiBoot理論制定FPGA更新保護(hù)方案,并設(shè)計(jì)單獨(dú)升級(jí)軟件測(cè)試及后期調(diào)試使用。經(jīng)過開關(guān)機(jī)反復(fù)4 000次升級(jí)測(cè)試,沒有出現(xiàn)異常現(xiàn)象,設(shè)計(jì)方案穩(wěn)定性得到證實(shí):研發(fā)和生產(chǎn)過程中出現(xiàn)問題時(shí),也可以通過升級(jí)軟件及時(shí)更新,縮短了研發(fā)周期:后期售后服務(wù)人員在更新固件版本的時(shí)候,可以隨軟件基線更新固件,避免拆機(jī)風(fēng)險(xiǎn),降低了后期的維護(hù)成本,用戶使用可靠性、安全性得到保障。目前,該方案已正式運(yùn)用在超聲臺(tái)車系統(tǒng)中并進(jìn)入市場(chǎng)。
參考文獻(xiàn)
[1]孟憲華,李健鐸.基于超聲系統(tǒng)的FPGA在線升級(jí)方案[J].科學(xué)技術(shù)創(chuàng)新,2022(7):37-40.
[2]萬垚,李蠡.一種基于FPGA的在線升級(jí)方案[J].成都信息工程大學(xué)學(xué)報(bào),2020(5):493-498.
[3]韓子舟,任勇峰,李輝景.基于1553B總線的FPGA在線升級(jí)[J].電子設(shè)計(jì)工程,2022(3):1-5.
[4]田地,李康樂,楊春宇.基于FPGA的空調(diào)顯示設(shè)定器程序升級(jí)方案設(shè)計(jì)[J].電子制作,2022(3):43-46.
(編輯沈強(qiáng))