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

一種基于PCIe總線的SPIFlash內FPGA程序在線更新方法

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

王鋒,呂天志,楊明洋

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

0 引言

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

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

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

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

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

1 方案設計

■1.1 總體方案

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

圖1 SPIFlash內FPGA程序在線更新的數據處理流程

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

綜上所述,在7系列FPGA配置過程的MultiBoot和FallBack機制需要生成兩個版本的FPGA程序,在此基礎上,主要通過CPU軟件控制程序和FPGA燒寫控制程序實現SPIFlash內FPGA程序的在線更新功能。

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

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

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

在VIVADO使用下列tcl命令可生成SPIFlash初始化鏡像MCS文件,假設兩個版本的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內存儲地址為0x00000000~0x01FFFFFF,update鏡像存儲起始地址為0x02000000。鏡像區域的地址分配根據鏡像規模而定,各型號FPGA的鏡像大小可查看UG470[10]文檔中的相關說明。

■1.3 CPU軟件控制模塊

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

圖3 SPIFlash內FPGA程序在線更新CPU軟件控制流程圖

CPU模塊和FPGA通過PCIe進行讀寫通信,如下所示:

首先,CPU模塊在啟動程序更新之前首先標記設置RAM為寫狀態、bin為未傳完狀態;

然后,確認啟動程序更新之后,執行一次寫RAM操作,并標記RAM是否寫滿和bin數據是否傳完;

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

■1.4 FPGA燒寫程序模塊

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

用戶通過界面啟動在線燒寫功能后,首先執行SPIFlash的update鏡像區域擦除,擦除完畢后,CPU模塊將update鏡像bin數據通過PCIe DMA分包送到FPGA的RAM,FPGA的燒寫模塊將bin數據逐個字節地傳遞給SPIFlash,并同時接收燒寫模塊輸出的過程標記或異常信息。因此FPGA燒寫程序分為數據傳遞模塊和燒寫模塊。

1.4.1 數據傳遞模塊

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

每當一包bin數據寫入RAM,FPGA捕獲RAM寫完標記后使能讀狀態標記,在RAM讀空之后清零RAM讀狀態標記。在SPIFlash的update鏡像區擦除成功后,若讀狀態標記有效并且bin文件的數據未傳遞結束,則逐個讀取RAM數據送給SPIFlash,當RAM讀空時清零讀標志。當讀狀態標記有效并且bin文件數據傳遞結束時,說明RAM中存儲的是bin文件的最后一包數據,然后進入寫填充字階段,直到SPIFlash燒寫完成。編制數據傳遞狀態機,如圖4所示。

圖4 SPIFlash內FPGA程序在線更新FPGA數據傳遞控制狀態機

其中,在 flash_programm_wait狀態等待SPIFlash的ID校驗和存儲區擦除;針對CPU模塊傳遞來的N幀數據包,第1到N-1幀的字節是在 flash_programm_write狀態傳遞;第N幀的字節是在 flash_programm_write_ex狀態傳遞;update區域剩余空間的默認字節“0xFF”在flash_programm_write_ex1狀態傳遞;在這四種狀態中,如果發生ID校驗、或燒寫錯誤,就停止狀態機,并將相應錯誤標記傳遞給CPU模塊。

1.4.2 燒寫模塊

燒寫模塊實現FPGA和SPIFlash的通信,此模塊將SPIFlash控制指令或數據通過并串轉換后經SPI訪問FLASH,實現SPI FLASH的ID檢測,FLASH存儲區擦除、數據傳遞以及異常檢測等功能。燒寫模塊內部接口如圖5所示,燒寫模塊完全由FPGA實現。

圖5 SPIFlash內FPGA程序在線更新FPGA程序燒寫模塊接口圖

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

(1) 初始化;

(2) 檢測ID,讀取并檢驗FLASH存儲設備標志;

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

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

a.發送頁編碼命令,

b.發送當前頁的每個字,如果處于當前頁的末尾,則進入c步驟,

c.使能內部FLASH頁編碼操作,

d.等待直到FLASH 狀態準備好,即內部頁編碼已完成。

(5)設置鏡像升級完成標志。

燒寫成功時會設置升級完成標志,在任何步驟發生錯誤時,也會設置升級完成標志,此時CPU模塊應根據燒寫過程返回的狀態檢測是否有錯誤發生,若有則顯示錯誤信息,否則顯示各階段的完成標志。

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

圖6展示了FPGA程序燒寫模塊仿真時序圖,update的bin數據分三幀傳遞給FPGA的RAM,FPGA將每幀數據燒寫到SPIFlash的update鏡像區域,并且在第三幀數據送進SPIFlash之后繼續傳遞默認字節“0xFF”,當寫滿SPIFlash的update鏡像區域時,在線更新結束。

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

2 實現效果

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

圖7 SPIFlash內FPGA程序在線更新用戶界面

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

表1 SPIFlash內FPGA程序在線更新運行時間

3 結論

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

猜你喜歡
界面程序區域
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
人機交互界面發展趨勢研究
關于四色猜想
分區域
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 国产成人综合久久精品尤物| 午夜欧美理论2019理论| 婷婷综合亚洲| 国产精品va| 麻豆国产在线不卡一区二区| 色亚洲激情综合精品无码视频 | AV网站中文| 欧美无专区| 国产精品美女网站| 国产在线拍偷自揄拍精品| 99精品久久精品| 91成人试看福利体验区| 婷婷五月在线| 国产真实乱子伦视频播放| 中文字幕 91| 熟妇无码人妻| 无码日韩视频| 日本尹人综合香蕉在线观看| 人妻中文字幕无码久久一区| 久久99热66这里只有精品一| 欧美日本在线| 国产福利不卡视频| 在线五月婷婷| 2021亚洲精品不卡a| 狼友视频一区二区三区| 日本黄色不卡视频| 久久婷婷色综合老司机| 麻豆国产在线不卡一区二区| 久久久久免费看成人影片| 亚洲免费毛片| 99免费在线观看视频| 国产91视频免费观看| 国产日韩久久久久无码精品| 日本一区二区三区精品视频| 国产精品视频导航| 亚洲视频在线网| 性色一区| 国产91久久久久久| 国产18在线播放| 欧美成人午夜影院| 三级欧美在线| 精品亚洲麻豆1区2区3区| 国产精品久久久久久久久| 成人一级黄色毛片| 激情亚洲天堂| 波多野一区| 91免费观看视频| 久久激情影院| 国产综合欧美| 又爽又黄又无遮挡网站| 国产无码精品在线播放| 色妞永久免费视频| 亚洲国产日韩一区| 欧美中文字幕无线码视频| 毛片网站在线看| 色九九视频| 最新加勒比隔壁人妻| 亚洲欧美日韩天堂| 亚洲成人77777| 亚洲成a人片| 久草视频中文| 国产9191精品免费观看| 中文纯内无码H| 国产日韩欧美在线播放| 国产麻豆aⅴ精品无码| 激情無極限的亚洲一区免费| 国产高清又黄又嫩的免费视频网站| 国产黄在线观看| 青草视频免费在线观看| 狂欢视频在线观看不卡| 九色最新网址| 天天综合网亚洲网站| 中文字幕调教一区二区视频| 伊人色综合久久天天| 亚洲伊人电影| 911亚洲精品| 日韩欧美中文| 日本高清免费不卡视频| 第一页亚洲| 国产你懂得| 婷婷久久综合九色综合88| 丁香亚洲综合五月天婷婷|