《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于Flash控制器的FPGA在線加載功能設(shè)計(jì)
基于Flash控制器的FPGA在線加載功能設(shè)計(jì)
2019年電子技術(shù)應(yīng)用第1期
林天靜,阮 翔,劉 春
中國(guó)電子科技集團(tuán)第52研究所,浙江 杭州310000
摘要: 傳統(tǒng)的FPGA程序更新的方式是使用開(kāi)發(fā)工具通過(guò)JTAG方式將FPGA程序固化至存儲(chǔ)器件Nor Flash中,當(dāng)某一復(fù)雜系統(tǒng)內(nèi)需要更新多塊FPGA時(shí),JTAG方式由于同時(shí)只能更新一塊FPGA,耗費(fèi)時(shí)間長(zhǎng),并且還必須連接線纜,無(wú)法實(shí)現(xiàn)遠(yuǎn)程更新。因此,提出了一種FPGA在線更新程序的實(shí)現(xiàn)方案,該方案可以實(shí)現(xiàn)系統(tǒng)內(nèi)的多塊FPGA程序更新,最大化更新速度的同時(shí),可通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程更新,便于調(diào)試及遠(yuǎn)程升級(jí)。
關(guān)鍵詞: FPGA 在線更新 BPI
中圖分類號(hào): TN47
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.181693
中文引用格式: 林天靜,阮翔,劉春. 基于Flash控制器的FPGA在線加載功能設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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 引言

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

1 FPGA配置方式

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

qrs1-t1.gif

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

qrs1-t2.gif

    無(wú)論是通過(guò)JTAG方式還是通過(guò)軟件操作實(shí)現(xiàn)程序更新,都是通過(guò)控制這些讀寫(xiě)使能信號(hào)及地址線實(shí)現(xiàn)配置文件的寫(xiě)入,F(xiàn)PGA掉電重啟之后再?gòu)腇lash取出配置數(shù)據(jù)從而實(shí)現(xiàn)加載。本文提出的FPGA在線更新程序的方式則是通過(guò)FPGA控制邏輯驅(qū)動(dòng)Flash的數(shù)據(jù)和地址,從而為多塊FPGA并行更新程序的實(shí)現(xiàn)提供了前提。

2 Flash控制器設(shè)計(jì)

    Flash器件的基本操作包括讀、寫(xiě)、擦除等,這些操作都是通過(guò)向相應(yīng)的命令寄存器寫(xiě)入特定的指令來(lái)實(shí)現(xiàn)的,這些指令的寫(xiě)入通過(guò)操作與FPGA相連的片選信號(hào)(ce_n)、寫(xiě)使能信號(hào)(we_n)、讀使能信號(hào)(oe_n)、地址總線(addr[23:0])和數(shù)據(jù)總線(dq[15:0])實(shí)現(xiàn)。

    以目前市場(chǎng)上常用的Spasion公司的S29GL-P系列Nor Flash為例,通過(guò)FPGA實(shí)現(xiàn)的控制器外部接口如圖3所示。

qrs1-t3.gif

    其中,start信號(hào)用于啟動(dòng)控制器模塊對(duì)Flash器件實(shí)現(xiàn)讀寫(xiě)操作,在啟動(dòng)之前,須先告知Flash配置文件大小和配置文件在Flash存儲(chǔ)空間的首地址;data_req、data_in和rd_data_count信號(hào)用于與一前端FIFO實(shí)現(xiàn)數(shù)據(jù)交互,配置文件先緩存到FIFO中,然后由控制器負(fù)責(zé)取出并寫(xiě)入Flash器件;config_status信號(hào)用于指示程序更新是否完成。

    該Flash控制器按時(shí)間上的先后順序分別實(shí)現(xiàn)了對(duì)Flash器件的讀ID、擦除和寫(xiě)緩沖操作,下面將分別進(jìn)行簡(jiǎn)要敘述。

    每次對(duì)Flash進(jìn)行基本的讀寫(xiě)操作之前,會(huì)對(duì)Flash芯片進(jìn)行讀ID操作以檢驗(yàn)器件的好壞,讀ID涉及的主要操作為向特定寄存器寫(xiě)入相應(yīng)的解鎖指令,然后再進(jìn)行多操作讀出相應(yīng)的寄存器值,其時(shí)序圖及讀結(jié)果如圖4所示。

qrs1-t4.gif

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

qrs1-t5.gif

    當(dāng)成功寫(xiě)入擦除操作指令之后,芯片會(huì)進(jìn)入一個(gè)較長(zhǎng)的周期等待擦除操作的完成,該期間無(wú)法對(duì)芯片進(jìn)行復(fù)位之外的其他操作。

    完成了擦除操作之后,即可向Flash寫(xiě)入配置數(shù)據(jù),其對(duì)應(yīng)的寫(xiě)緩沖時(shí)序如圖6所示。

qrs1-t6.gif

    擦除和讀寫(xiě)的過(guò)程中,地址將進(jìn)行自動(dòng)累加且起始地址可變。Flash的寫(xiě)操作可為單字寫(xiě)和緩沖寫(xiě)兩種,由于緩沖寫(xiě)最大一次可向Flash寫(xiě)入32個(gè)字,為了最大化寫(xiě)入速度,選擇緩沖寫(xiě)方式;Flash的讀操作分為單字讀和按頁(yè)讀兩種,由于Flash讀數(shù)據(jù)速率較高且系統(tǒng)對(duì)讀速率沒(méi)有太高要求,本文選擇單字讀方式。

3 工程應(yīng)用及性能測(cè)試

    以一實(shí)際項(xiàng)目工程為例,系統(tǒng)中具有10塊FPGA進(jìn)行程序更新,其在線加載功能系統(tǒng)架構(gòu)如圖7所示。

qrs1-t7.gif

    系統(tǒng)主控CPU運(yùn)行在Linux系統(tǒng)下,CPU通過(guò)以太網(wǎng)與遠(yuǎn)程計(jì)算機(jī)進(jìn)行通信調(diào)試,同時(shí)通過(guò)PCIE或SRIO高速總線向每塊FPGA下發(fā)配置數(shù)據(jù),最后再由Flash控制器完成數(shù)據(jù)的寫(xiě)入。如前文所述,一次寫(xiě)緩沖操作的數(shù)據(jù)量為32個(gè)字,而配置文件的大小有可能不是32個(gè)字的整數(shù)倍,所以還需要應(yīng)用軟件對(duì)配置文件進(jìn)行補(bǔ)齊操作。單個(gè)FPGA在線加載流程簡(jiǎn)要敘述如圖8所示。

qrs1-t8.gif

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

qrs1-b1.gif

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

    而當(dāng)更新系統(tǒng)中的10塊FPGA時(shí),由于每塊FPGA均可同時(shí)進(jìn)行在線更新操作,程序固化所消耗的時(shí)間與單塊FPGA程序更新時(shí)間開(kāi)銷大致相當(dāng),可見(jiàn)并行在線更新方式相較于傳統(tǒng)JTAG方式無(wú)疑可以大大縮短時(shí)間。

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

    每次更新完配置之后,通常做法是對(duì)FPGA進(jìn)行斷電重啟實(shí)現(xiàn)重新加載,但工程應(yīng)用時(shí)斷電可能會(huì)影響系統(tǒng)其他模塊的正常工作。為使FPGA在不斷電的情況下自動(dòng)加載更新完的配置程序,可通過(guò)配置FPGA芯片的PROGRAM_B信號(hào)來(lái)實(shí)現(xiàn),BPI模式下的時(shí)序如圖9所示。

qrs1-t9.gif

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

5 結(jié)論

    本文利用FPGA邏輯設(shè)計(jì)了一款Flash控制器,實(shí)現(xiàn)了FPGA在線更新功能,由于FPGA直接操作Flash,因此相比傳統(tǒng)FPGA程序更新方法具有更新速度快、硬件電路精簡(jiǎn)、易于系統(tǒng)集成等優(yōu)點(diǎn),同時(shí)能夠?qū)崿F(xiàn)復(fù)雜系統(tǒng)多塊FPGA并行更新程序,大大節(jié)省了程序固化時(shí)間,便于項(xiàng)目前期開(kāi)發(fā)及后期排故調(diào)試。

參考文獻(xiàn)

[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] 于樂(lè),王嘉良.易于移植的FPGA在線更新控制器設(shè)計(jì)[J].航空電子技術(shù),2015(4):47-50.

[4] 楊鵬.基于Linux系統(tǒng)的FPGA芯片在線加載的設(shè)計(jì)和實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2015(6):161-164.



作者信息:

林天靜,阮  翔,劉  春

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产酒店精品激情| 黄色日韩网站视频| 久久久久久亚洲精品中文字幕| 亚洲图色在线| 亚洲毛片在线观看| 亚洲国产专区校园欧美| 亚欧成人在线| 销魂美女一区二区三区视频在线| 亚洲一区二区欧美日韩| 夜夜嗨一区二区三区| 亚洲最新色图| 一区二区欧美精品| 亚洲免费观看高清完整版在线观看| 亚洲高清在线视频| 亚洲第一中文字幕| 妖精成人www高清在线观看| 亚洲香蕉在线观看| 亚洲三级电影在线观看 | 国产欧美一区二区三区在线看蜜臀| 欧美日韩色综合| 欧美日韩在线精品| 国产精品成人一区| 国产精品性做久久久久久| 国产乱码精品1区2区3区| 国产日韩欧美精品一区| 国产午夜精品在线| 在线不卡免费欧美| 亚洲经典自拍| 一本大道久久精品懂色aⅴ| 艳女tv在线观看国产一区| 亚洲天堂成人| 亚洲欧美激情视频在线观看一区二区三区| 亚洲综合大片69999| 一区二区毛片| 一区二区三区视频在线观看| 亚洲一区中文| 欧美中文字幕视频在线观看| 午夜精品影院| 中文精品一区二区三区| 性刺激综合网| 亚洲欧洲日产国产综合网| 一本色道久久| 欧美一级成年大片在线观看| 久久国产精品免费一区| 久久综合99re88久久爱| 欧美成人精品h版在线观看| 欧美日本中文| 国产精品一区视频网站| 伊人色综合久久天天五月婷| 亚洲人成人一区二区三区| 中日韩在线视频| 欧美一区二区免费观在线| 亚洲电影在线观看| 一本大道久久a久久精二百| 亚洲欧美日韩精品一区二区 | 性色一区二区| 另类人畜视频在线| 欧美日韩亚洲国产一区| 亚洲欧美日韩成人高清在线一区| 亚洲无亚洲人成网站77777| 久久国产精品第一页| 欧美成人有码| 国产欧美精品日韩| 亚洲激情国产精品| 午夜精品www| 日韩亚洲不卡在线| 欧美在线观看网址综合| 欧美激情日韩| 国产亚洲欧洲997久久综合| 91久久精品一区| 欧美一级视频免费在线观看| 日韩亚洲欧美一区| 久久xxxx精品视频| 欧美日韩中国免费专区在线看| 国内精品福利| 正在播放亚洲| 亚洲精品乱码久久久久久按摩观| 亚洲欧美日韩网| 欧美激情一区二区三区蜜桃视频 | 欧美午夜精品理论片a级大开眼界| 韩国精品一区二区三区| 中国av一区| 日韩一级网站| 久久这里有精品视频| 欧美午夜一区二区| 亚洲国产精品久久久| 欧美一区二区视频在线观看2020| 一本色道久久综合亚洲精品不| 久久久久久久综合日本| 国产精品久久一区二区三区| 亚洲精品日韩久久| 亚洲国产精品久久| 欧美在线视频一区| 国产精品啊啊啊| 亚洲国产国产亚洲一二三| 欧美一区二区三区在线播放| 亚洲一区二区三区中文字幕在线| 欧美激情综合五月色丁香| 狠狠色狠狠色综合日日小说| 亚洲在线一区| 亚洲免费人成在线视频观看| 欧美日韩成人一区| 亚洲国产日韩欧美综合久久| 久久精品视频导航| 久久久久在线| 国产视频亚洲精品| 亚洲女同性videos| 亚洲欧美日韩一区二区三区在线 | 国内久久视频| 欧美一级免费视频| 亚洲人成久久| 香蕉国产精品偷在线观看不卡| 亚洲欧美成人网| 欧美日韩国产片| 亚洲三级免费观看| 亚洲精品一品区二品区三品区| 久久婷婷蜜乳一本欲蜜臀| 国产婷婷成人久久av免费高清 | 99ri日韩精品视频| 在线视频你懂得一区| 欧美精品久久久久久久免费观看| 亚洲国产美女久久久久| 亚洲激情小视频| 欧美aⅴ99久久黑人专区| 韩日午夜在线资源一区二区| 欧美一区二区视频在线观看2020| 欧美伊人久久久久久午夜久久久久| 国产精品美女久久福利网站| 亚洲深夜福利视频| 亚洲欧美综合精品久久成人| 国产精品久久久一区二区| 亚洲永久网站| 欧美一区观看| 狠狠色伊人亚洲综合成人| 亚洲国产成人在线| 猫咪成人在线观看| 亚洲国产高清自拍| 一区二区高清视频| 国产精品国产三级国产aⅴ入口| 亚洲综合好骚| 久久精品一区二区三区中文字幕| 精品88久久久久88久久久| 亚洲人成网站精品片在线观看 | 性欧美video另类hd性玩具| 国产日韩欧美一二三区| 欧美在线免费一级片| 卡一卡二国产精品| 亚洲国产精品一区二区www在线| 亚洲人成网站影音先锋播放| 欧美日韩91| 亚洲免费影院| 久久免费99精品久久久久久| 亚洲高清一区二区三区| 在线亚洲精品| 国产欧美一二三区| 91久久精品国产91性色tv| 欧美日韩国产三级| 亚洲综合精品| 六月丁香综合| 亚洲精品中文字幕在线| 欧美亚洲视频一区二区| 一区二区亚洲| 亚洲网站视频| 国产美女精品人人做人人爽| 亚洲国产另类精品专区| 国产最新精品精品你懂的| 欧美刺激午夜性久久久久久久| 91久久精品国产91性色| 亚洲欧美欧美一区二区三区| 国产自产精品| 夜色激情一区二区| 国产午夜久久久久| 夜夜嗨av一区二区三区| 国产日韩一区二区三区在线| 亚洲理论在线观看| 国产精品一区二区你懂得| 亚洲国产精品免费| 国产精品成人v| 亚洲国产婷婷| 国产精品主播| 亚洲剧情一区二区| 国产欧美日韩一区二区三区在线| 亚洲精品一级| 国产亚洲精品aa| 亚洲一区精品视频| 在线看片成人| 欧美一级大片在线观看| 亚洲三级色网| 久久在线免费视频| 亚洲视频成人| 欧美激情bt| 久久av资源网站| 国产精品久久久久久久久久免费 | 欧美一区二区视频观看视频| 欧美激情日韩| 久久爱www久久做| 欧美性大战久久久久久久蜜臀| 亚洲国产成人久久综合一区| 国产精品一区二区你懂得| 一级成人国产|