《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Flash控制器的FPGA在線加載功能設計
基于Flash控制器的FPGA在線加載功能設計
2019年電子技術應用第1期
林天靜,阮 翔,劉 春
中國電子科技集團第52研究所,浙江 杭州310000
摘要: 傳統的FPGA程序更新的方式是使用開發工具通過JTAG方式將FPGA程序固化至存儲器件Nor Flash中,當某一復雜系統內需要更新多塊FPGA時,JTAG方式由于同時只能更新一塊FPGA,耗費時間長,并且還必須連接線纜,無法實現遠程更新。因此,提出了一種FPGA在線更新程序的實現方案,該方案可以實現系統內的多塊FPGA程序更新,最大化更新速度的同時,可通過網絡實現遠程更新,便于調試及遠程升級。
關鍵詞: FPGA 在線更新 BPI
中圖分類號: TN47
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.181693
中文引用格式: 林天靜,阮翔,劉春. 基于Flash控制器的FPGA在線加載功能設計[J].電子技術應用,2019,45(1):88-91.
英文引用格式: Lin Tianjing,Ruan Xiang,Liu Chun. Design of FPGA online loading based on Flash controller[J]. Application of Electronic Technique,2019,45(1):88-91.
Design of FPGA online loading based on Flash controller
Lin Tianjing,Ruan Xiang,Liu Chun
The 52th Research Institute of China Electronics Technology Group Corporation,Hangzhou 310000,China
Abstract: Traditional way of FPGA configuration file update is using development tools to write FPGA target code to storage devices such as Nor Flash through the JTAG way.However,when the system becomes complicated with multiple FPGA,it takes a long time to update all the FPGA due to the limitation that the JTAG way can only update FPGA once a time. Therefore this paper proposes a FPGA online updating method,which can update multiple FPGA programs at the same time, greatly shorten the update time and reduce the cost of the system.
Key words : FPGA;online update;BPI

0 引言

    近些年來,由于其靈活可配置性及成本的降低,現場可編程門陣列(Field Programmable Gate Array,FPGA)在嵌入式系統中應用越來越廣泛,不論產品的初期研發或是后期維護都不可避免地需要頻繁更新FPGA程序。傳統的JTAG方式更新FPGA程序的方式是通過開發軟件將需固化的文件寫入Nor Flash器件。當系統很復雜且需要更新的FPGA數量較多時,JTAG方式更新FPGA程序則費時費力且還需拆結構。若在FPGA內部通過邏輯代碼搭建一Flash控制器實現對Flash器件的讀寫操作,即可并行實現系統內每片FPGA對配置文件的在線更新,大大縮短程序固化時間。本文依托于Xilinx公司的FPGA和Spasion公司的Nor Flash,詳細介紹了Flash控制器設計和在線加載功能的實現方法。

1 FPGA配置方式

    以Xilinx Virtex6 系列FPGA為例,對配置文件的加載方式有串行Flash、并行Flash、JTAG方式等,其中最常用的是并行Flash方式(Byte Peripheral Interface Parallel Flash Mode,BPI),其配置模式如圖1所示。

qrs1-t1.gif

    一種實際的FPGA與Nor Flash硬線連接方式如圖2所示。

qrs1-t2.gif

    無論是通過JTAG方式還是通過軟件操作實現程序更新,都是通過控制這些讀寫使能信號及地址線實現配置文件的寫入,FPGA掉電重啟之后再從Flash取出配置數據從而實現加載。本文提出的FPGA在線更新程序的方式則是通過FPGA控制邏輯驅動Flash的數據和地址,從而為多塊FPGA并行更新程序的實現提供了前提。

2 Flash控制器設計

    Flash器件的基本操作包括讀、寫、擦除等,這些操作都是通過向相應的命令寄存器寫入特定的指令來實現的,這些指令的寫入通過操作與FPGA相連的片選信號(ce_n)、寫使能信號(we_n)、讀使能信號(oe_n)、地址總線(addr[23:0])和數據總線(dq[15:0])實現。

    以目前市場上常用的Spasion公司的S29GL-P系列Nor Flash為例,通過FPGA實現的控制器外部接口如圖3所示。

qrs1-t3.gif

    其中,start信號用于啟動控制器模塊對Flash器件實現讀寫操作,在啟動之前,須先告知Flash配置文件大小和配置文件在Flash存儲空間的首地址;data_req、data_in和rd_data_count信號用于與一前端FIFO實現數據交互,配置文件先緩存到FIFO中,然后由控制器負責取出并寫入Flash器件;config_status信號用于指示程序更新是否完成。

    該Flash控制器按時間上的先后順序分別實現了對Flash器件的讀ID、擦除和寫緩沖操作,下面將分別進行簡要敘述。

    每次對Flash進行基本的讀寫操作之前,會對Flash芯片進行讀ID操作以檢驗器件的好壞,讀ID涉及的主要操作為向特定寄存器寫入相應的解鎖指令,然后再進行多操作讀出相應的寄存器值,其時序圖及讀結果如圖4所示。

qrs1-t4.gif

    確認了芯片ID無誤,即可進行正確訪問,首先對Flash芯片進行擦除操作。Flash芯片擦除可分為兩種:整片擦除和扇區擦除。由于實際使用時并未用到整塊Flash存儲空間,而是根據配置文件的大小選擇合適的扇區大小存儲配置文件,所以設計中采用的是扇區擦除方式,時序如圖5所示。

qrs1-t5.gif

    當成功寫入擦除操作指令之后,芯片會進入一個較長的周期等待擦除操作的完成,該期間無法對芯片進行復位之外的其他操作。

    完成了擦除操作之后,即可向Flash寫入配置數據,其對應的寫緩沖時序如圖6所示。

qrs1-t6.gif

    擦除和讀寫的過程中,地址將進行自動累加且起始地址可變。Flash的寫操作可為單字寫和緩沖寫兩種,由于緩沖寫最大一次可向Flash寫入32個字,為了最大化寫入速度,選擇緩沖寫方式;Flash的讀操作分為單字讀和按頁讀兩種,由于Flash讀數據速率較高且系統對讀速率沒有太高要求,本文選擇單字讀方式。

3 工程應用及性能測試

    以一實際項目工程為例,系統中具有10塊FPGA進行程序更新,其在線加載功能系統架構如圖7所示。

qrs1-t7.gif

    系統主控CPU運行在Linux系統下,CPU通過以太網與遠程計算機進行通信調試,同時通過PCIE或SRIO高速總線向每塊FPGA下發配置數據,最后再由Flash控制器完成數據的寫入。如前文所述,一次寫緩沖操作的數據量為32個字,而配置文件的大小有可能不是32個字的整數倍,所以還需要應用軟件對配置文件進行補齊操作。單個FPGA在線加載流程簡要敘述如圖8所示。

qrs1-t8.gif

    更新單塊FPGA程序時,以一實際測試的3.47 MB大小的配置文件為例,經FPGA在線更新程序固化的時間和使用ISE14.7軟件JTAG方式固化的時間如表1所示。

qrs1-b1.gif

    Flash芯片手冊中給出的典型擦除和寫緩沖時間分別0.5 s和480 μs,則可計算出理論上3.47 MB大小的文件固化所需的典型時間約為41 s。由于器件等因素影響,實測時用時往往大于該時間,但總體來說,使用在線更新方式的耗時要比用JTAG方式耗時更少。

    而當更新系統中的10塊FPGA時,由于每塊FPGA均可同時進行在線更新操作,程序固化所消耗的時間與單塊FPGA程序更新時間開銷大致相當,可見并行在線更新方式相較于傳統JTAG方式無疑可以大大縮短時間。

4 配置文件不斷電加載和備份方法

    每次更新完配置之后,通常做法是對FPGA進行斷電重啟實現重新加載,但工程應用時斷電可能會影響系統其他模塊的正常工作。為使FPGA在不斷電的情況下自動加載更新完的配置程序,可通過配置FPGA芯片的PROGRAM_B信號來實現,BPI模式下的時序如圖9所示。

qrs1-t9.gif

    考慮到若在配置過程中FPGA發生斷電等異常,則Flash中的配置文件損壞,FPGA將無法實現加載,需要重新使用JTAG方式燒寫配置文件。為防止該種情況發生,可分配Flash的一塊區域用于備份配置文件,發生FPGA無法正常加載的異常時,可讀取該備份配置文件實現FPGA再次正常加載,但前提是該部分Flash存儲空間預先固化了帶有FPGA在線更新功能的程序。

5 結論

    本文利用FPGA邏輯設計了一款Flash控制器,實現了FPGA在線更新功能,由于FPGA直接操作Flash,因此相比傳統FPGA程序更新方法具有更新速度快、硬件電路精簡、易于系統集成等優點,同時能夠實現復雜系統多塊FPGA并行更新程序,大大節省了程序固化時間,便于項目前期開發及后期排故調試。

參考文獻

[1] Xilinx UG360,Virtex-6 FPGA configuration user guide[EB/OL].[2015-11-18].http://www.xilinx.com.

[2] Spansion.S29GL-P MirrorBit Flash family datasheet[EB/OL].[2009-11-20].http://www.spansion.com.

[3] 于樂,王嘉良.易于移植的FPGA在線更新控制器設計[J].航空電子技術,2015(4):47-50.

[4] 楊鵬.基于Linux系統的FPGA芯片在線加載的設計和實現[J].電子設計工程,2015(6):161-164.



作者信息:

林天靜,阮  翔,劉  春

(中國電子科技集團第52研究所,浙江 杭州310000)

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲国产高清一区二区三区 | 美女被男人cao的爽视频黄 | 亚洲国产精品二区久久 | 国产美女动态免费视频 | 亚洲乱人伦在线 | 精品无码三级在线观看视频 | 一级香蕉免费毛片 | 中文字幕日韩精品有码视频 | 国产伦久视频免费观看视频 | 毛片免费的 | 成人精品视频一区二区三区 | 欧美又粗又硬又大久久久 | 精品国产96亚洲一区二区三区 | 亚洲欧洲日韩在线 | 26uuu天天夜夜综合 | 欧美一区二区三区日韩免费播 | 国产成人免费不卡在线观看 | chinese性老妇中国 | 日韩日b视频 | 日本国产欧美 | 久久成人免费观看全部免费 | 亚洲欧美偷拍自拍 | 国产精品青草久久福利不卡 | 久久精品vr中文字幕 | 80日本xxxxxxxxx | 在线视免费频观看韩国aaa | 欧美一级棒 | 日韩高清一级毛片 | 日韩欧美一区二区久久 | 国语自产拍天天在线 | 亚洲午夜综合网 | 国产成人性色视频 | 亚洲午夜精品一区二区 | 豆国产97在线 | 亚洲 | 黄色成人在线网站 | 在线视频精品一区 | 亚洲国产一区二区a毛片日本 | 日韩一区二区三区视频在线观看 | 91精品免费看 | 在线观看亚洲人成网站 | 免费aa在线观看 男人的天堂 |