時間:2020年09月14日 分類:電子論文 次數:
摘要:針對當前在一些特殊的環境中無法通過 USB-JTAG 完成對 FPGA 固件的更新,文中提出了一 種基于 SPI FLASH 的固件更新方案。在硬件設計中,采用以太網作為固件數據的傳輸接口,采用 FPGA 作為主控制器。在邏輯設計中,采用 SPI協議完成對 flash設備的識別、擦除、寫入。同時采用 flash分區存儲的方式,通過 ICAP邏輯控制實現了動態全局重構和 fallback重配置。經驗證,該方案 實現固件更新更便捷,大大提高了 FPGA 資源的利用率,降低了設計成本,且在更新過程中出現掉 電的問題,不影響設備的使用。
關鍵詞:SPI FLASH;現場可編程門陣列;內部控制訪問端口;動態重構
FPGA 可重配置帶來了很高的靈活性,所以基于 FPGA 的設計或產品往往也會有后期更新的需求[1-3] 。 一般的程序更新,是通過 USB-JTAG 的方式進行更 新,要依靠 JTAG 專用線纜和仿真器[4] ,存在一定的局 限性。例如對于一些應用于特殊場合的產品,在出 廠前需進行特殊的工藝處理,產品交付后不具備拆 卸重復燒錄程序的條件[5] ,無法通過 USB-JTAG 的方式進行更新。
為解決這個難題,文中提出了一種基 于 SPI FLASH 的固件更新方法,該方法能利用現有 的接口完成更新,不需要額外的硬件支持,解決了以往 更新過程中掉電后只能通過 USB-JTAG更新的問題, 幾乎適用于一切型號的 SPI FLASH,移植性較高。
1 總體方案設計
由以太網傳輸模塊和 FPGA 控制模塊兩部分組成。傳輸模塊負責接受 上位機發送的命令和配置數據,并傳輸到控制模塊; 控制模塊接收傳輸模塊傳來的命令和配置數據,實 現對 flash 的分區擦除、分區寫入等操作。同時通過 ICAP 的 方 式 實 現 了 對 FPGA 的 動 態 全 局 重 構 和 fallback 重配置,通過判斷以太網下發的版本命令, 讀取對應的版本程序,不僅充分發揮了 FPGA 資源 的靈活性,還大大提高了 FPGA 資源的利用率[6- 7] 。 在更新過程中如果出現掉電導致更新失敗,在重新 上電后則觸發 fallback 讀取存儲在 flash 初始地址的 程序可再次完成更新。
2 FPGA配置電路設計
以 Xilinx Spartan6 芯片為例,支持主串、主并、從 串、從并以及 SelectMAP 5 種配置模式,可通過設置 M1、M0 兩引腳的高低電平選擇配置模式[6] 。SPI 配 置屬于主串模式,與其他模式相比,占用的 FPGA 資 源較少,且 SPI FLASH 體積小,節省空間。分別將 M1、M0接下拉電阻和上拉電 阻,將配置模式設為主串模式。
3 邏輯設計
3.1 固件更新邏輯設計
計算機和 FPGA 之間通過以太網接口進行通信,由于以太網接口和 flash接口傳輸時鐘、傳輸位寬 不同,需添加 FIFO 作為數據緩存和位寬轉換,FPGA 內部更新模塊設計,包括以太網接口控 制模塊、FIFO 模塊、SPI接口控制模塊 3部分。本 設 計 采 用 千 兆 以 太 網 接 口 完 成 計 算 機 和 FPGA 之間的數據傳輸,通信協議采用 UDP 通信協 議。
由于以太網傳輸是按包進行傳輸,一包大小為 1 526 字節[7] ,因此緩存 FIFO 大小應設為 2 kB,既防 止數據溢出,又不過多的浪費 FPGA 資源。以太網 接口傳輸速率大于 SPI接口傳輸速率,在一包數據傳 輸結束后,待緩存 FIFO 數據全部寫入 flash,上發一 個指令,再進行下一包數據的傳輸。 SPI 接口是一種高速的、全雙工、同步的通信總 線,該總線通過 4根信號線來完成 FPGA 和 flash之間 的串行通信[8-9] 。
flash_clk 是 SPI 接口工 作的串行時鐘,FPGA 通過控制 flash_clk 信號來控制 通信時序。flash_cs 為片選信號,在高電平時,flash 處于被取消選擇狀態。在輸入任何命令時,要把 flash_cs 信號拉低。flash_datain 用于把 FPGA 的執行 命令和數據發送到 flash 上。flash_dataout 用于把從 flash中讀取的數據發送到 FPGA 上。
3.2 多重配置邏輯設計
某圖像采集系統采用不同的 CMOS 圖像傳感器 作為采集前端,一套采集系統則需要一塊對應的 FPGA主控卡[13] ,需要對主控卡進行分類,不便于實際 的調試;又如在大型系統設計中,單片 FPGA 資源往 往不能滿足設計需求,有時可能需要多個芯片[14] 。 但是 FPGA 芯片價格較高,因此大大提高了設計成本,也不便于固件的更新。 FPGA 的多重配置技術實際是對可編程資源的 復用[15-16] ,用戶可以根據需求加載不同的配置文件, 從而實現多重配置,即一塊主控卡可以分別應用在 幾套圖像采集系統中。
在大型系統設計中通過時分 復用重復利用 FPGA 的硬件資源,不僅僅節省設計 成本,同時起到減小功耗,增加靈活性和降低系統硬 件復雜程度等目的。多重配置可以通過多種方式進 行觸發,本設計采用借助 ICAP,通過狀態機的方式 發送 IPROG 指令來實現。
3.3 fallback重配置邏輯設計
在更新固件過程中,如果出現掉電問題,即更新 的配置數據未全部寫入,則在重新上電后,觸發多重 引導邏輯讀取對應配置文件,但此時配置文件未完 全寫入且由于原有接口控制邏輯已經被擦除,計算 機無法通過以太網接口傳輸命令和數據,FPGA 也無 法通過 SPI 接口對 flash 進行操作。在這種情況下, 只有通過專用的下載工具和線纜將固件下載進去, 無疑給產品的更新造成了極大的不便,且在某些場 合下,不具備通過專用的下載工具和線纜更新的條 件,為了解決這個問題,提出了 fallback 重配置邏輯 設計解決方案。
4 測試結果及分析
為了驗證本設計的可靠性,將通過以太網寫入 的配置數據讀出并上傳至計算機顯示。 軟件抓取從 flash中讀出的固件數據,經過對比,可以看到數據傳輸無誤。為了驗證本設計的多重配置和 fallback 重配置 邏輯設計,在 flash 中存儲了 3 個配置程序。分別為一個 golden 文件和兩個 main 文件,所實現的功 能都是點亮一個 LED 燈,但閃爍的頻率不同,分別 為 1 Hz,2 Hz,4 Hz。本實驗在重新加載前后,LED 閃爍的頻率分別為 2 Hz 和 4 Hz,說明本設計實現 了多重配置。
電子論文投稿刊物:《現代電子技術》是由陜西省信息產業廳主管,陜西省電子技術研究所、陜西電子學會和陜西電子雜志社主辦的科技類期刊。《現代電子技術》堅持“重質量,有特色,守信譽”的辦刊方針基礎上,大力提高本刊的學術水平和質量,為推進科技進步,為信息產業及電子行業發展做出更多貢獻。主要讀者包括全國的大專院校、電教中心師生, 重點實驗室、工礦企事業單位、科研院所的工程技術人員,各軍、兵種的高科技研究人員,以及政府采購人員。
如果在通過固件更新的過程中發生 掉電,包括在擦除期間掉電和寫入過程掉電。擦除期間掉電和寫入過程掉電 讀出存儲在 flash 中數據,對比得出,配置數據的同 步字均未寫入,可以觸發 fallback 重配置邏輯讀取 main 文件。同時在掉電后重新上電,LED 閃爍的 頻率為 1 Hz,說明本設計實現了 fallback 重配置邏 輯設計,再次發送指令即可完成更新,驗證了本設 計的可靠性。
5 結束語
文中設計了一種通過現有的以太網接口和FPGA 對 SPI FLASH 進行識別、擦除、燒寫的方法,且通過 ICAP 邏輯控制實現了多重配置,大大降低了設計成 本。同時與以往的固件更新方法比較,通過控制固 件數據的寫入順序,防止掉電導致更新失敗,進一步提高了固件更新的可靠性。
參考文獻:
[1] 夏飛,李暉宙.基于雙FPGA系統的高速全局動態 重構設計與實現[J].現代電子技術,2017,40(16): 151-154.
[2] 徐曉東. 動態可重構系統中任務調度與布局算法 研究[D].合肥:中國科學技術大學,2017.
[3] 杜林,鄒孝付.基于FPGA的動態重構技術研究與實 現[J].自動化與儀器儀表,2015(7):103-104,106.
[4] 朱保全. FPGA遠程以太網JTAG設計與實現[D]. 成都:電子科技大學,2015.
作者:趙冬青,梁 璠,上官鵬,儲成群