亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        王鋒,呂天志,楊明洋

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

        0 引言

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

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

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

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

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

        1 方案設(shè)計

        ■1.1 總體方案

        首先將golden和update鏡像一起作為SPIFlash初始化鏡像下載到SPIFlash中,然后需要更新FPGA程序時,使用在線程序更新功能升級SPIFlash的update鏡像即可??傮w數(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機制需要生成兩個版本的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文件存在于計算機D盤根目錄下,此tcl命令如下:

        write_cfgmem -force -format MCS -interface spix1-loadbit “up 0x0

        D:/vision_golden.bit up 0x2000000D:/vision_update106.bit “D:/vision_golden_update.mcs

        其中,此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ù)補充默認(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模塊??刂屏鞒倘鐖D3所示。

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

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

        首先,CPU模塊在啟動程序更新之前首先標(biāo)記設(shè)置RAM為寫狀態(tài)、bin為未傳完狀態(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正常工作時用于其他功能,這樣可實現(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)機,如圖4所示。

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

        其中,在 flash_programm_wait狀態(tài)等待SPIFlash的ID校驗和存儲區(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校驗、或燒寫錯誤,就停止?fàn)顟B(tài)機,并將相應(yīng)錯誤標(biāo)記傳遞給CPU模塊。

        1.4.2 燒寫模塊

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

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

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

        (1) 初始化;

        (2) 檢測ID,讀取并檢驗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 實現(xiàn)效果

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

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

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

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

        3 結(jié)論

        本文在7系列FPGA配置過程具備MultiBoot和FallBack機制的基礎(chǔ)上,設(shè)計一種通過主機界面即可操作的SPIFlash內(nèi)FPGA程序在線程序更新方案。本方案充分利用一般儀器上CPU模塊與FPGA之間有PCIe總線連接,并且FPGA和SPIFlash直接連接的特點,讓CPU模塊通過PCIe總線將FPGA程序數(shù)據(jù)分包傳遞給FPGA,然后由FPGA燒寫進(jìn)SPIFlash,這樣使用較小的RAM空間即可實現(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ā)方法研究
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        人機交互界面發(fā)展趨勢研究
        關(guān)于四色猜想
        分區(qū)域
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        手機界面中圖形符號的發(fā)展趨向
        新聞傳播(2015年11期)2015-07-18 11:15:04
        国产一区二区精品av| 五月婷婷俺也去开心| 国产精品无码一区二区在线国| 国产精品久久一区性色a| 日本美女中文字幕第一区| 成 人片 黄 色 大 片| 国产在线观看免费观看| 黑色丝袜秘书夹住巨龙摩擦| 日本夜爽爽一区二区三区| 精品国产你懂的在线观看| 在线日本国产成人免费精品| 国产专区一线二线三线码| 无套内射无矿码免费看黄| 亚洲A∨无码国产精品久久网| 国产精品美女自在线观看| 久久中文字幕一区二区| 人妻中文字幕无码系列| 先锋影音av资源我色资源| 日本女同伦理片在线观看| 国产午夜精品久久精品| 久久久精品国产亚洲av网深田| 九九久久自然熟的香蕉图片| 色八a级在线观看| 国产亚洲欧洲AⅤ综合一区| 国产成版人性视频免费版| 亚洲精品中文字幕乱码影院| 男人靠女人免费视频网站| 亚洲AⅤ无码国精品中文字慕 | 亚洲素人av在线观看| 国产在线视频一区二区天美蜜桃| 人人妻人人澡人人爽精品欧美| 欧美亚洲韩国国产综合五月天| 日本最新一区二区三区视频 | 国产精品久久久久9999无码| 成人白浆超碰人人人人| 欧美性猛交xxxx乱大交蜜桃| 日本看片一区二区三区| av大全亚洲一区二区三区| 午夜一区欧美二区高清三区| www.av在线.com| 亚洲精品一区二区三区52p|