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