部分可重配置會(huì)涉及到將配置數(shù)據(jù)下載到正在運(yùn)行的系統(tǒng)中。 盡管在芯片和比特流中內(nèi)置了一些保護(hù)措施,比如器件ID,從而確保識(shí)別正確的部分,但是作為用戶(hù)設(shè)計(jì)的一部分,仍有一些技術(shù)需要理解和實(shí)現(xiàn)。 設(shè)計(jì)人員應(yīng)遵循這些建議,以確保部分可重配置的安全和可預(yù)測(cè)性。
? 在進(jìn)行重新配置操作之前需要對(duì)可重配置分區(qū)(RP)內(nèi)的一些活動(dòng)程序進(jìn)行關(guān)閉,如果可重配置功能沒(méi)有進(jìn)行完整的傳輸或者沒(méi)有對(duì)最近的請(qǐng)求作出回復(fù),那么整個(gè)系統(tǒng)可能會(huì)掛起。
解決方案:在你的設(shè)計(jì)中務(wù)必確保在重新配置之前RP分區(qū)內(nèi)所有活動(dòng)都已經(jīng)完成,在設(shè)計(jì)中對(duì)每個(gè)分區(qū)內(nèi)都實(shí)現(xiàn)請(qǐng)求—通知握手操作,這樣系統(tǒng)就不會(huì)掛起,信息也不會(huì)丟失。
? 對(duì)RP分區(qū)進(jìn)行隔離,這樣任何動(dòng)態(tài)的變化都不會(huì)對(duì)靜態(tài)設(shè)計(jì)產(chǎn)生任何負(fù)面的影響,目前還無(wú)法預(yù)測(cè)RP分區(qū)在進(jìn)行動(dòng)態(tài)配置時(shí)會(huì)有哪些行為方式,如果一些浮動(dòng)信號(hào)從RP分區(qū)“逃出去”,那么一些虛假事件就會(huì)對(duì)靜態(tài)設(shè)計(jì)產(chǎn)生負(fù)面影響。
解決方案:最佳的操作方案就是斷開(kāi)該分區(qū)與靜態(tài)設(shè)計(jì)之間的連接直到可重配置操作完成,PR Controller IP通過(guò)選通任何接口端口可以用于隔離RP分區(qū),或者自定義邏輯模塊(2選1多路復(fù)用器,具有復(fù)位或啟動(dòng)門(mén)控的寄存器等)都可以實(shí)現(xiàn)這個(gè)功能。
? 如果部分比特流文件必須傳遞給遠(yuǎn)程系統(tǒng),那么在傳送過(guò)程中可能會(huì)造成損壞,如果將損壞的部分比特流發(fā)送到配置引擎中,那么靜態(tài)設(shè)計(jì)部分可能會(huì)受影響,在比特流末尾進(jìn)行標(biāo)準(zhǔn)的CRC檢查并不夠完整,因?yàn)樗械呐渲脭?shù)據(jù)在檢查操作之前已經(jīng)發(fā)送完畢。
解決方案:部分比特流文件的每一幀數(shù)據(jù)都可以使用CRC進(jìn)行檢測(cè),因此壞幀在可以加載到配置存儲(chǔ)器之前都可以被檢測(cè)到,然后我們可以采取糾正或者回退操作。在每個(gè)路由設(shè)計(jì)檢查點(diǎn)都啟用CRC檢查,開(kāi)啟命令如下:set_property bitstream.general.perFrameCRC yes [current_design]
然而最關(guān)鍵的細(xì)節(jié)就是絕對(duì)確保傳送給FPGA或者SoC的部分比特流能夠與靜態(tài)設(shè)計(jì)相互兼容,這樣才能夠配置到器件中,部分可重配置設(shè)計(jì)流程需要對(duì)靜態(tài)實(shí)現(xiàn)部分進(jìn)行鎖定,并且所有可重配置模塊都要在此上下文中實(shí)現(xiàn),如果靜態(tài)設(shè)計(jì)改變了,那么所有使用該靜態(tài)設(shè)計(jì)創(chuàng)建的部分比特流都將失效并且需要重新編譯,因?yàn)椴糠直忍亓鲀?nèi)容的很多方面都已經(jīng)發(fā)生了變化——時(shí)鐘、分區(qū)管腳、靜態(tài)路由等都可能是不同的了,這種保守的方法具有一定的靈活性,提升整體設(shè)計(jì)的性能,但是必須要個(gè)遵循主從的關(guān)系。
設(shè)計(jì)者必須實(shí)現(xiàn)某種版本檢查方案來(lái)確保只有匹配的比特流才能夠被加載到靜態(tài)設(shè)計(jì)系統(tǒng)中,實(shí)現(xiàn)方式有很多種,片上/片下、硬件/軟件等。不管哪種方式都將會(huì)在部分比特流文件發(fā)送至配置端口前根據(jù)靜態(tài)設(shè)計(jì)部分的版本來(lái)檢查比特流文件的版本。
在FPGA結(jié)構(gòu)中執(zhí)行這種檢查的一個(gè)便利的方式就是使用USR_ACCESS模塊,該組件在專(zhuān)用配置空間中保存一個(gè)32位的寄存器,但是可以通過(guò)FPGA訪(fǎng)問(wèn),只需要將USR_ACCESSE2模塊在你的RTL設(shè)計(jì)中進(jìn)行實(shí)例化就可以獲得訪(fǎng)問(wèn)權(quán)限,通過(guò)連接32位數(shù)據(jù)總線(xiàn)即可使用此功能。
這個(gè)常量寄存器的值是通過(guò)下面命令來(lái)設(shè)置的:set_property BITSTREAM.CONFIG.USR_ACCESS 0x<8-digit-hex>|TIMESTAMP [current_design]
盡管我們可以使用TIMESTAMP選項(xiàng),通過(guò)加載所有比特位文件信息可能更容易創(chuàng)建自定義的寄存器值,TIMESTAMP的值是即時(shí)計(jì)算的,所以在應(yīng)用到部分比特文件時(shí)需要讀取Vivado工具為靜態(tài)設(shè)計(jì)部分計(jì)算的數(shù)值。
一旦設(shè)計(jì)連接了此元素,你可以使用32位的值來(lái)匹配部分比特流文件,這個(gè)值保存在上文給定屬性的完整比特流文件中,因?yàn)樗窃谄骷跏蓟渲脮r(shí)編寫(xiě)的,然而部分比特流文件并不包含此值,因?yàn)樗粫?huì)去重新編程USR_ACCESS寄存器,你需要對(duì)每個(gè)部分比特流添加自定義數(shù)據(jù)頭信息,這個(gè)數(shù)據(jù)頭應(yīng)該包含這個(gè)值用于靜態(tài)設(shè)計(jì)部分的版本檢查,最簡(jiǎn)單的比較匹配就是設(shè)置錯(cuò)誤標(biāo)志,如果檢測(cè)到失敗這是必需的,一旦檢測(cè)到不匹配系統(tǒng)需要確定下一步該怎么操作。
當(dāng)創(chuàng)建新版本的靜態(tài)設(shè)計(jì)時(shí)你需要更新USR_ACCESS的值,不僅包括靜態(tài)設(shè)計(jì)部分還包括根據(jù)此靜態(tài)設(shè)計(jì)版本相匹配的一系列部分比特流文件,USR_ACCESS模塊具有兩個(gè)特性使其成為該用法的理想選擇:
1. 由于它是配置應(yīng)用方面專(zhuān)用的模塊,因此它不使用任何標(biāo)準(zhǔn)的CLB或者BRAM資源,為你的設(shè)計(jì)留出更多可用的資源。
2. 由于該值是通過(guò)屬性來(lái)設(shè)置的,因此可以在所有布局和布線(xiàn)完成后再插入該值,以后再重新插入新值時(shí)也不再需要進(jìn)行重新綜合或者實(shí)現(xiàn)。
在寫(xiě)入完整的比特流數(shù)據(jù)前只需要將新的 BITSTREAM.CONFIG.USR_ACCESS 應(yīng)用于完整設(shè)計(jì)版本檢查,任何較舊版本的部分比特流文件都會(huì)在進(jìn)行版本檢查時(shí)被拒絕,確保與硬件的匹配。
想了解更多關(guān)于USR_ACCESS的信息可以查看XAPP1231文檔。
總結(jié)在部分可重配置設(shè)計(jì)中應(yīng)用版本識(shí)別檢查和其他安全機(jī)制從而可以確保安全可靠的工作環(huán)境。
我們希望聽(tīng)到您的意見(jiàn)!參與部分可重配置問(wèn)卷調(diào)查(請(qǐng)點(diǎn)擊“閱讀原文”在線(xiàn)參與)對(duì)這個(gè)解決方案提供反饋,幫助我們改進(jìn)的更好。
作者簡(jiǎn)介David Dye是分層設(shè)計(jì)流程的高級(jí)產(chǎn)品營(yíng)銷(xiāo)經(jīng)理,他的職責(zé)包括產(chǎn)品規(guī)劃、部分可重配置的市場(chǎng)營(yíng)銷(xiāo),串聯(lián)配置和相關(guān)設(shè)計(jì)流程等,比如模塊分析和團(tuán)隊(duì)設(shè)計(jì)。他在Xilinx擁有超過(guò)20年的從業(yè)經(jīng)驗(yàn),并在其任職期間支持各種ISE和Vivado設(shè)計(jì)工具的開(kāi)發(fā),從綜合、實(shí)現(xiàn)到調(diào)試。David擁有卡內(nèi)基梅隆大學(xué)的電氣工程學(xué)位。
-
FPGA芯片
+關(guān)注
關(guān)注
3文章
246瀏覽量
39835
原文標(biāo)題:部分可重配置設(shè)計(jì)流程 — 部分比特流版本檢查
文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開(kāi)發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論