您的位置 首页 嵌入式

以Flash控制器为中心的FPGA在线更新功用完成规划流程介绍

以Flash控制器为核心的FPGA在线更新功能实现设计流程介绍-近些年来,由于其灵活可配置性及成本的降低,现场可编程门阵列(Field Programmable Gate Array,FPGA)在嵌入式系统中应用越来越广泛,不论产品的初期研发或是后期维护都不可避免地需要频繁更新FPGA程序。传统的JTAG方式更新FPGA程序的方式是通过开发软件将需固化的文件写入Nor Flash器件。当系统很复杂且需要更新的FPGA数量较多时,JTAG方式更新FPGA程序则费时费力且还需拆结构。若在FPGA内部通过逻辑代码搭建一Flash控制器实现对Flash器件的读写操作,即可并行实现系统内每片FPGA对配置文件的在线更新,大大缩短程序固化时间。本文依托于Xilinx公司的FPGA和Spasion公司的Nor Flash,详细介绍了Flash控制器设计和在线加载功能的实现方法。

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所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

一种实践的FPGA与Nor Flash硬线衔接办法如图2所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

无论是经过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所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

其间,start信号用于发动操控器模块对Flash器材完结读写操作,在发动之前,须先奉告Flash装备文件巨细和装备文件在Flash存储空间的首地址;data_req、data_in和rd_data_count信号用于与一前端FIFO完结数据交互,装备文件先缓存到FIFO中,然后由操控器担任取出并写入Flash器材;config_status信号用于指示程序更新是否完结。

该Flash操控器按时刻上的先后顺序别离完结了对Flash器材的读ID、擦除和写缓冲操作,下面将别离进行扼要叙说。

每次对Flash进行根本的读写操作之前,会对Flash芯片进行读ID操作以查验器材的好坏,读ID触及的首要操作为向特定寄存器写入相应的解指令,然后再进行多操作读出相应的寄存器值,其时序图及读成果如图4所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

确认了芯片ID无误,即可进行正确拜访,首要对Flash芯片进行擦除操作。Flash芯片擦除可分为两种:整片擦除和扇区擦除。因为实践运用时并未用到整块Flash存储空间,而是依据装备文件的巨细挑选适宜的扇区巨细存储装备文件,所以规划中选用的是扇区擦除办法,时序如图5所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

当成功写入擦除操作指令之后,芯片会进入一个较长的周期等候擦除操作的完结,该期间无法对芯片进行复位之外的其他操作。

完结了擦除操作之后,即可向Flash写入装备数据,其对应的写缓冲时序如图6所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

擦除和读写的过程中,地址将进行主动累加且开始地址可变。Flash的写操作可为单字写和缓冲写两种,因为缓冲写最大一次可向Flash写入32个字,为了最大化写入速度,挑选缓冲写办法;Flash的读操作分为单字读和按页读两种,因为Flash读数据速率较高且体系对读速率没有太高要求,本文挑选单字读办法。

3 工程运用及功用测验

以一实践项目工程为例,体系中具有10块FPGA进行程序更新,其在线加载功用体系架构如图7所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

体系主控CPU运行在Linux体系下,CPU经过以太网与长途计算机进行通讯调试,一起经过PCIE或SRIO高速总线向每块FPGA下发装备数据,最终再由Flash操控器完结数据的写入。如前文所述,一次写缓冲操作的数据量为32个字,而装备文件的巨细有或许不是32个字的整数倍,所以还需求运用软件对装备文件进行补齐操作。单个FPGA在线加载流程扼要叙说如图8所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

更新单块FPGA程序时,以一实践测验的3.47 MB巨细的装备文件为例,经FPGA在线更新程序固化的时刻和运用ISE14.7软件JTAG办法固化的时刻如表1所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

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所示。

以Flash操控器为中心的FPGA在线更新功用完结规划流程介绍

考虑到若在装备过程中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.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/89878.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部