999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于PCIe 總線的SPIFlash 內(nèi)FPGA 程序在線更新方法

2021-06-17 03:59:50王鋒呂天志楊明洋
電子制作 2021年9期
關(guān)鍵詞:界面程序區(qū)域

王鋒,呂天志,楊明洋

(中電科思儀科技股份有限公司,山東青島,266555)

0 引言

采用SPIFlash 配置的FPGA 程序通常都是通過FPGA廠家提供的程序下載器進(jìn)行更新,一般儀器FPGA 程序的更新方式有兩種:

(1)打開產(chǎn)品機(jī)箱用專用程序下載器通過JETAG 接口更新FPGA 程序,這種方式操作復(fù)雜且需要專業(yè)人員完成;

(2)把FPGA 程序下載器的功能集成到電路板中,利用廠商提供的程序下載軟件更新程序,這種方案需要加入額外電路器件,增加了電路板器件的布局空間、功耗及設(shè)計成本。

鑒于一般儀器的CPU 模塊與FPGA 之間都有PCIe 總線連接,并且FPGA 和SPIFlash 直接連接,因此在FPGA正常工作時可以讓CPU 軟件通過PCIe 總線將要更新的FPGA 程序以文件形式先傳遞給FPGA,然后在FPGA 內(nèi)設(shè)計SPIFlash 芯片的燒寫控制邏輯,進(jìn)而實(shí)現(xiàn)SPIFlash 內(nèi)FPGA 程序的在線更新。

本文以7 系列FPGA 為例,7 系列FPGA的配置過程具備MultiBoot 和FallBack 機(jī)制—FPGA 在上電配置時,MultiBoot 機(jī)制允許FPGA 選擇SPIFlash 中指定區(qū)域的比特流來配置,此版本比特流稱為update 鏡像,如果配置失敗,則觸發(fā)FallBack 機(jī)制將另一個性能良好的固定版本配置到FPGA 中,從而保證FPGA 可以正常工作,此版本比特流稱為golden 鏡 像。golden 和update 這 兩 個 鏡像會一起作為初始化鏡像用專用程序下載器下載到SPIFlash 中,在線更新僅對SPIFlash的update 鏡像區(qū)域進(jìn)行更新。本文在7 系列FPGA 的MultiBoot 和FallBack 機(jī)制的基礎(chǔ)上,闡述了一種在線更新Flash 內(nèi)FPGA 程序的方法,此方法不需要拆機(jī)連接程序下載器,更不需要增加額外硬件,在軟件界面上即可控制SPIFlash 內(nèi)FPGA 程序更新過程。

1 方案設(shè)計

■1.1 總體方案

首先將golden 和update 鏡像一起作為SPIFlash 初始化鏡像下載到SPIFlash 中,然后需要更新FPGA 程序時,使用在線程序更新功能升級SPIFlash 的update 鏡像即可。總體數(shù)據(jù)處理流程如圖1 所示。

圖1 SPIFlash 內(nèi)FPGA 程序在線更新的數(shù)據(jù)處理流程

如圖1 所示,在VIVADO 工程版本1.0 時生成golden和update 鏡像兩個FPGA 程序bit 文件;然后使用特定的tcl 命令將golden 和update 鏡像合并成一個MCS 文件作為Flash 初始化鏡像,并使用專用程序下載器將此MCS 文件下載到SPIFlash 中。當(dāng)VIVADO 工程版本升級為2.0 時需要更新SPIFlash 中FPGA 程序,此時使用在線程序更新功能升級SPIFlash 的update 鏡像即可。由于SPIFlash 內(nèi)存儲的FPGA 程序的數(shù)據(jù)格式為bin 文件,這里的bin 文件不同于VIVADO 生成的FPGA 程序bit 文件,因此CPU模塊可直接將2.0 版update 鏡像bin 文件送到FPGA 片內(nèi)RAM,然后在FPGA 內(nèi)設(shè)計SPIFlash 燒寫模塊從FPGA 片內(nèi)RAM 逐個字節(jié)讀取2.0 版update 鏡像bin 數(shù)據(jù)并將其寫入update 區(qū)域。

綜上所述,在7 系列FPGA 配置過程的MultiBoot 和FallBack 機(jī)制需要生成兩個版本的FPGA 程序,在此基礎(chǔ)上,主要通過CPU 軟件控制程序和FPGA 燒寫控制程序?qū)崿F(xiàn)SPIFlash 內(nèi)FPGA 程序的在線更新功能。

■1.2 FPGA 多版本程序生成模塊

在VIVADO 工程約束文件中添加不同約束可編譯生成golden 和update 版FPGA 程序文件。如圖2所示,在基本的SPI 約束基礎(chǔ)上,選擇golden 約束,假設(shè)編譯生成名為vision_golden.bit 的golden 鏡像bit 文件;選擇update 約束,假設(shè)編譯生成名為vision_update.bit 的update 鏡像的bit 文件。

圖2 VIVADO 工程中生成多版本FPGA 程序的約束命令

在VIVADO 使用下列tcl 命令可生成SPIFlash 初始化鏡像MCS 文件,假設(shè)兩個版本的bit 文件存在于計算機(jī)D盤根目錄下,此tcl 命令如下:

其中,此tcl 命令指定了golden 鏡像在SPIFlash 內(nèi)存儲地址為0x00000000~0x01FFFFFF,update 鏡像存儲起始地址為0x02000000。鏡像區(qū)域的地址分配根據(jù)鏡像規(guī)模而定,各型號FPGA 的鏡像大小可查看UG470[10]文檔中的相關(guān)說明。

■1.3 CPU 軟件控制模塊

CPU 模塊將update 鏡像bin 文件送給FPGA。FPGA程序一般為十幾到幾十MB,F(xiàn)PGA 片內(nèi)RAM 難以一次性緩存,此時CPU 模塊可以將update 鏡像bin 文件分包通過PCIe 總線以DMA 方式送給FPGA。設(shè)FPGA 燒寫模塊的RAM 為m 字節(jié)大小,update 鏡像bin 文件為n 字節(jié),則CPU 模塊需要將bin 文件拆分成N 包數(shù)據(jù),N=[n/m],第N 包數(shù)據(jù)不足m 字節(jié)的話,需將第N 包數(shù)據(jù)補(bǔ)充默認(rèn)字節(jié)“0xFF”到m 字節(jié)。執(zhí)行在線程序更新時,CPU 模塊將第1 包bin 數(shù)據(jù)通過PCIe 總線寫到FPGA 的RAM 后啟動在線燒寫流程,同時監(jiān)測FLASH 燒寫過程的各階段狀態(tài),正常燒狀態(tài)下FPGA 程序每寫完1 包數(shù)據(jù)就會通知CPU 模塊發(fā)送下一包數(shù)據(jù),若發(fā)生異常,F(xiàn)PGA 會將異常信息上傳至CPU 模塊。控制流程如圖3 所示。

圖3 SPIFlash 內(nèi)FPGA 程序在線更新CPU 軟件控制流程圖

CPU 模塊和FPGA 通過PCIe 進(jìn)行讀寫通信,如下所示:

首先,CPU 模塊在啟動程序更新之前首先標(biāo)記設(shè)置RAM 為寫狀態(tài)、bin 為未傳完?duì)顟B(tài);

然后,確認(rèn)啟動程序更新之后,執(zhí)行一次寫RAM 操作,并標(biāo)記RAM 是否寫滿和bin 數(shù)據(jù)是否傳完;

最后,CPU 模塊等待RAM 是否被讀空,若RAM 為空時檢測到bin 文件已送完則等待FLASH 燒寫完畢后結(jié)束程序更新過程,否則再次執(zhí)行一次寫RAM 操作。

■1.4 FPGA 燒寫程序模塊

首先需要根據(jù)update 鏡像的bin 文件大小和FPGA 內(nèi)RAM 資源情況開辟一塊緩沖區(qū)來接收update 鏡像bin 數(shù)據(jù),緩沖區(qū)越大,CPU 模塊向FPGA 傳遞的bin 數(shù)據(jù)包數(shù)就越少,F(xiàn)PGA 資源占用越大。由于燒寫過程和FPGA 正常功能不沖突,以及SPIFlash 燒寫是臨時占用RAM 資源,因此在線燒寫可以復(fù)用其他模塊的RAM,這塊RAM 在FPGA正常工作時用于其他功能,這樣可實(shí)現(xiàn)RAM 資源共享,節(jié)省RAM 資源。

用戶通過界面啟動在線燒寫功能后,首先執(zhí)行SPIFlash 的update 鏡像區(qū)域擦除,擦除完畢后,CPU 模塊將update 鏡像bin 數(shù)據(jù)通過PCIe DMA 分包送到FPGA的RAM,F(xiàn)PGA 的燒寫模塊將bin 數(shù)據(jù)逐個字節(jié)地傳遞給SPIFlash,并同時接收燒寫模塊輸出的過程標(biāo)記或異常信息。因此FPGA 燒寫程序分為數(shù)據(jù)傳遞模塊和燒寫模塊。

1.4.1 數(shù)據(jù)傳遞模塊

FPGA 負(fù)責(zé)接收每包update 鏡像bin 文件,并將燒寫過程中各階段完成或錯誤標(biāo)記上傳給CPU 模塊。每傳遞完1 包bin 數(shù)據(jù),F(xiàn)PGA 通知CPU 模塊繼續(xù)傳遞下一包bin 數(shù)據(jù),直到所有bin 數(shù)據(jù)包傳遞結(jié)束并且全部寫入SPIFlash。由于SPIFlash 的update 鏡像區(qū)域是事先分配的一塊區(qū)域,當(dāng)所有bin 數(shù)據(jù)全部寫入FLASH 時,update 鏡像區(qū)域一般沒有被寫滿,此時燒寫模塊并不會返回FLASH 燒錄完成的標(biāo)志;因此FPGA 需要再向update鏡像區(qū)域剩下的空間中寫填充字0xFF,直到update 鏡像區(qū)域末尾燒寫模塊才會返回FLASH 更新完成標(biāo)記。

每當(dāng)一包bin 數(shù)據(jù)寫入RAM,F(xiàn)PGA 捕獲RAM 寫完標(biāo)記后使能讀狀態(tài)標(biāo)記,在RAM 讀空之后清零RAM 讀狀態(tài)標(biāo)記。在SPIFlash 的update 鏡像區(qū)擦除成功后,若讀狀態(tài)標(biāo)記有效并且bin 文件的數(shù)據(jù)未傳遞結(jié)束,則逐個讀取RAM 數(shù)據(jù)送給SPIFlash,當(dāng)RAM 讀空時清零讀標(biāo)志。當(dāng)讀狀態(tài)標(biāo)記有效并且bin 文件數(shù)據(jù)傳遞結(jié)束時,說明RAM中存儲的是bin 文件的最后一包數(shù)據(jù),然后進(jìn)入寫填充字階段,直到SPIFlash 燒寫完成。編制數(shù)據(jù)傳遞狀態(tài)機(jī),如圖4 所示。

圖4 SPIFlash 內(nèi)FPGA 程序在線更新FPGA 數(shù)據(jù)傳遞控制狀態(tài)機(jī)

其中,在flash_programm_wait 狀態(tài)等待SPIFlash的ID 校驗(yàn)和存儲區(qū)擦除;針對CPU 模塊傳遞來的N 幀數(shù)據(jù)包,第1 到N-1 幀的字節(jié)是在flash_programm_write狀態(tài)傳遞;第N 幀的字節(jié)是在flash_programm_write_ex狀態(tài)傳遞;update 區(qū)域剩余空間的默認(rèn)字節(jié)“0xFF”在flash_programm_write_ex1 狀態(tài)傳遞;在這四種狀態(tài)中,如果發(fā)生ID 校驗(yàn)、或燒寫錯誤,就停止?fàn)顟B(tài)機(jī),并將相應(yīng)錯誤標(biāo)記傳遞給CPU 模塊。

1.4.2 燒寫模塊

燒寫模塊實(shí)現(xiàn)FPGA 和SPIFlash 的通信,此模塊將SPIFlash 控制指令或數(shù)據(jù)通過并串轉(zhuǎn)換后經(jīng)SPI 訪問FLASH,實(shí)現(xiàn)SPI FLASH 的ID 檢測,F(xiàn)LASH 存儲區(qū)擦除、數(shù)據(jù)傳遞以及異常檢測等功能。燒寫模塊內(nèi)部接口如圖5所示,燒寫模塊完全由FPGA 實(shí)現(xiàn)。

圖5 SPIFlash 內(nèi)FPGA 程序在線更新FPGA 程序燒寫模塊接口圖

其中燒寫控制模塊SpiFlashProgrammer 的操作邏輯為:

(1) 初始化;

(2) 檢測ID,讀取并檢驗(yàn)FLASH 存儲設(shè)備標(biāo)志;

(3) 刪除包含update 鏡像的FLASH 扇區(qū);

(4) 編碼update 區(qū)域。對于update 鏡像區(qū)域每一頁:

a.發(fā)送頁編碼命令,

b.發(fā)送當(dāng)前頁的每個字,如果處于當(dāng)前頁的末尾,則進(jìn)入c 步驟,

c.使能內(nèi)部FLASH 頁編碼操作,

d.等待直到FLASH 狀態(tài)準(zhǔn)備好,即內(nèi)部頁編碼已完成。

(5)設(shè)置鏡像升級完成標(biāo)志。

燒寫成功時會設(shè)置升級完成標(biāo)志,在任何步驟發(fā)生錯誤時,也會設(shè)置升級完成標(biāo)志,此時CPU 模塊應(yīng)根據(jù)燒寫過程返回的狀態(tài)檢測是否有錯誤發(fā)生,若有則顯示錯誤信息,否則顯示各階段的完成標(biāo)志。

SPIFlash 內(nèi)FPGA 程序更新過程需要考慮并串轉(zhuǎn)換模塊SpiSerDes,此模塊和燒寫控制模塊連接。SPI 總線有兩個雙向串行數(shù)據(jù)線,SpiSerDes 模塊在向SPI 總線串行化1字節(jié)的同時,將SPI 總線發(fā)來的1 字節(jié)輸入數(shù)據(jù)并行化。SpiSerDes 模塊的4 個引腳必須連接到已連接SPIFlash 的FPGA 引腳上。其中CCLK 引腳作為在線燒寫時鐘,默認(rèn)為FPGA 配置時鐘專用管腳,在上電配置完成后默認(rèn)不能作為普通管腳使用,如果想在配置之后將CCLK 用作在線燒寫時鐘,即用作普通管腳,則需要將連向SPI 時鐘的時鐘信號輸入到STARTUPE原語中,并且不需要對CCLK做額外的約束。

圖6 展示了FPGA 程序燒寫模塊仿真時序圖,update的bin 數(shù)據(jù)分三幀傳遞給FPGA 的RAM,F(xiàn)PGA 將每幀數(shù)據(jù)燒寫到SPIFlash 的update 鏡像區(qū)域,并且在第三幀數(shù)據(jù)送進(jìn)SPIFlash 之后繼續(xù)傳遞默認(rèn)字節(jié)“0xFF”,當(dāng)寫滿SPIFlash 的update 鏡像區(qū)域時,在線更新結(jié)束。

圖6 FPGA 程序燒寫模塊仿真時序圖

2 實(shí)現(xiàn)效果

在整機(jī)軟件界面上開辟一個程序更新界面,如圖7 所示。界面顯示有當(dāng)前版本號、更新版本號、提示信息和可能錯誤信息以及更新檢測和開始更新兩個按鈕。當(dāng)保存著待更新update 鏡像bin 文件的U 盤或SD 卡連接儀器設(shè)備后,點(diǎn)擊更新檢測按鈕,軟件會檢測并顯示待更新update 鏡像bin 文件的版本,點(diǎn)擊開始更新按鈕即可執(zhí)行在線更新。在更新過程中若發(fā)生錯誤,則更新過程立即停止,并在界面上顯示錯誤信息,否則更新結(jié)束時,界面會提示更新成功。

圖7 SPIFlash 內(nèi)FPGA 程序在線更新用戶界面

在某已投產(chǎn)的項(xiàng)目中,在線更新功能取得良好的應(yīng)用效果,得到技術(shù)人員的肯定。項(xiàng)目FPGA 程序編譯文件大小約為10MB,一次完整的在線更新時間不到2 分鐘,如表1 所示。

表1 SPIFlash內(nèi)FPGA程序在線更新運(yùn)行時間

3 結(jié)論

本文在7 系列FPGA 配置過程具備MultiBoot 和FallBack 機(jī)制的基礎(chǔ)上,設(shè)計一種通過主機(jī)界面即可操作的SPIFlash 內(nèi)FPGA 程序在線程序更新方案。本方案充分利用一般儀器上CPU 模塊與FPGA 之間有PCIe 總線連接,并且FPGA 和SPIFlash 直接連接的特點(diǎn),讓CPU 模塊通過PCIe 總線將FPGA 程序數(shù)據(jù)分包傳遞給FPGA,然后由FPGA 燒寫進(jìn)SPIFlash,這樣使用較小的RAM 空間即可實(shí)現(xiàn)SPIFlash 內(nèi)較大update 程序鏡像更新。并且本方法不影響設(shè)備正常工作,不增加額外硬件電路,不需要連接程序燒寫器,僅僅需要裝載FPGA 程序的U 盤等存儲設(shè)備即可在通過操作燒寫界面執(zhí)行SPIFlash 內(nèi)FPGA 程序更新,非常便于用戶遠(yuǎn)程更新設(shè)備程序,并大大降低了儀器設(shè)備FPGA 程序升級的工作量。

猜你喜歡
界面程序區(qū)域
國企黨委前置研究的“四個界面”
試論我國未決羈押程序的立法完善
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
人機(jī)交互界面發(fā)展趨勢研究
關(guān)于四色猜想
分區(qū)域
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
手機(jī)界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 最新国产麻豆aⅴ精品无| 日本少妇又色又爽又高潮| 国产va免费精品观看| 欧美亚洲日韩中文| 91毛片网| 成人午夜免费视频| 婷婷久久综合九色综合88| 91精品综合| 欧美国产日韩一区二区三区精品影视| 中文字幕va| 亚洲综合九九| 久久久久亚洲AV成人网站软件| 激情综合婷婷丁香五月尤物| 精品无码一区二区三区电影| 国产精品亚洲专区一区| 亚洲精品视频免费| 亚洲成人动漫在线观看| 欧美成人A视频| 亚洲国产日韩视频观看| 乱码国产乱码精品精在线播放| 在线看片国产| 亚洲第一区欧美国产综合| 欧美精品影院| 久久人午夜亚洲精品无码区| 午夜高清国产拍精品| 亚洲综合天堂网| 欧美成人二区| 又粗又大又爽又紧免费视频| 国产成人午夜福利免费无码r| 色亚洲成人| 欧美综合成人| 五月天香蕉视频国产亚| 色综合五月婷婷| 四虎国产在线观看| 人妻少妇乱子伦精品无码专区毛片| 亚洲中文字幕久久精品无码一区| 国产福利大秀91| 日本在线亚洲| 亚洲人成网线在线播放va| 一级看片免费视频| 欧美日韩国产综合视频在线观看 | 久久国产精品麻豆系列| 亚洲IV视频免费在线光看| 高清不卡一区二区三区香蕉| 啪啪国产视频| 97久久免费视频| 高清欧美性猛交XXXX黑人猛交| 亚洲一区二区三区麻豆| 亚洲成人在线播放 | a天堂视频| 国产18在线播放| 免费精品一区二区h| 国产精品女人呻吟在线观看| 国产精品冒白浆免费视频| 综合成人国产| 全部免费特黄特色大片视频| 91年精品国产福利线观看久久| 91在线激情在线观看| A级毛片无码久久精品免费| 无码高潮喷水专区久久| 成人午夜视频免费看欧美| 亚洲一区无码在线| 成人在线不卡| 日韩在线欧美在线| 欧美午夜理伦三级在线观看| 免费国产不卡午夜福在线观看| 欧美视频在线不卡| 色妞永久免费视频| 国产成人久视频免费| 国产精品偷伦在线观看| 欧美人人干| 久久久亚洲色| 成人免费视频一区| 欧美综合区自拍亚洲综合绿色 | 九九热精品视频在线| 青青操视频在线| 国产福利大秀91| 亚洲愉拍一区二区精品| 欧美人与牲动交a欧美精品| 午夜久久影院| 国产成人在线无码免费视频| 丁香五月亚洲综合在线|