基于PCIE的FPGA更新系统及更新方法与流程

文档序号:11582268阅读:694来源:国知局
基于PCIE的FPGA更新系统及更新方法与流程

本发明涉及电子通信技术领域,具体涉及一种基于pcie的fpga更新系统及更新方法。



背景技术:

目前。随着数字通信协议的增多,现场可编程门阵列(fieldprogrammablegatearray,fpga)的应用越来越广泛,由于其易编程与快速升级架构的特性,在电子设备中得到了广泛应用。

如图1所示,该系统是一种可重构计算系统,利用系统的可重用资源(如:cpu、fpga、可擦除可编程逻辑器件(erasableprogrammablelogicdevice,epld)等可重构逻辑器件,根据应用需要重新构造一个新的计算平台,以达到接近专用硬件设计的高性能。其中cpu为核心处理平台,fpga为辅助处理平台,而epld主要完成上电控制和fpga更新配置。

常见的fpga更新升级通常采用altera公司提供的jtag(jointtestactiongroup,联合测试行为组织标准)方式下载到fpga以后,再固化到fpga的非易失性存储器中,这种方法更新速度不快,一旦需要系统规模较大,则重复性工作量将非常大,并且繁琐。

针对常见的fpga更新升级系统的问题,已经很多专利中提出了解决方法,例如申请号201520170644.5的《复用总线的cpu和fpga组合电路》、申请号201410313013.4的《一种fpga的更新系统及其更新方法》均采用了利用主机通过串行外设接口(serialperipheralinterface,spi)接口与fpga通信,将存储于主机的更新文件通过fpga发送到非易失性存储器完成更新,但在实际设计中发现,当fpga的配置文件比较大,主机通过spi总线向flash存储器写入配置文件时,有效传输数据的仅有数据和时钟两根线,数据串行传输时间将极大增长,更新时间已将无法满足用户需求。申请号201410163022.x的《基于cpld的fpga加载系统》在主机和fpga之间增加了一个复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld),主机通过cpld向fpga进行加载和更新配置操作,更新时间得到了有效的改善,但每次上电启动后,都需要主机和cpld先启动,才能完成对fpga的加载和更新,影响fpga加载速度。因此,如何大规模的快速更新和快速加载fpga成为了一个亟待解决的关键技术问题。



技术实现要素:

有鉴于此,本发明提供了一种基于pcie的fpga更新系统及更新方法。用于解决现有技术中fpga更新速度或者加载速度缓慢,且不能满足大规模更新问题。

一种基于pcie的fpga更新系统,所述系统包括:一个cpu器件、一个epld器件、一个norflash存储单元、一个fpga器件及一个jtag下载接口,其中:

cpu器件,用于下载配置文件和发送写、读操作和配置操作命令,通过pcie接口将操作命令下发至fpga器件;

epld器件,与fpga通过一个内部总线进行快速通信,接收来自fpga内部总线上的写操作、读操作和配置操作命令,将总线的读写操作转化为flash读写操作,接收配置操作命令对fpga器件进行配置操作;

norflash存储单元,用于存储对fpga进行配置的文件数据;

fpga器件,用于接收来自pcie接口的写、读操作和配置操作,将pcie发送的操作转换为内部总线操作与epld进行通信,能够接收来自epld器件的配置操作;

jtag下载接口,用于最初更新配置时,为fpga内部提供内部逻辑使用。

一种基于pcie的fpga更新方法包括写操作、读操作和配置操作,其中:

一种基于pcie的fpga更新方法的写操作包括以下步骤:

1.1、cpu器件发送写操作命令,将存储的配置文件构造写请求tlp数据包发送到pcie接口上;

1.2、fpga器件接收到来自pcie接口上的写请求tlp数据包,将数据存入到写数据先入先出(first-in-first-out,fifo)存储器中,同时通过内部总线接口将fifo中的数据发送到epld器件;

1.3、epld器件接收来自内部总线的写入数据后,将数据存入到写数据fifo存储器中,再从norflash存储单元的基地址开始,将fifo中的数据依次写入到存储单元。

一种基于pcie的fpga更新方法的读操作包括以下步骤:

2.1、cpu器件发送读操作命令,构造读请求tlp报文发送到pcie接口上;

2.2、fpga器件接收到来自pcie接口上的读请求tlp报文,将tlp报文中的需要读取的基地址和数量通过内部总线接口发送到epld器件;

2.3、epld器件接收到内部总线接口的基地址和数量后,从基地址开始依次读取norflash存储单元指定数量的数据,将读出的数据先存入读数据fifo存储器中,再通过内部总线将fifo中的数据发送到fpga器件;

2.4、fpga器件接收来自内部总线返回的读数据,将读到的数据先存入读数据fifo存储器中,再构造读响应tlp报文发送到pcie接口上;

2.5、cpu器件接收来自pcie接口的读响应tlp报文,完成数据的读取。

一种基于pcie的fpga更新方法的配置操作包括以下步骤:

3.1、cpu器件发送配置操作命令,构造写请求tlp报文发送到pcie接口上;

3.2、fpga器件接收到来自pcie接口上的写请求tlp报文,判定为配置操作,通过内部总线向epld发送配置命令;

3.3、epld器件接收到内部总线接口的配置命令后,从基地址开始依次读取norflash存储单元所有的数据,配置到fpga器件。

与现有技术相比,本发明提供的基于pcie的fpga更新系统及更新方法,cpu器件采用了pcie接口进行通信,数据传输速度极快,可以接近fpga配置的理论极限值,比常用的spi总线配置速度提高了数倍。配置fpga器件由epld器件完成,不再依靠cpu器件启动,能够有效的提高fpga加载速度,减少系统的启动时间。该方法支持远程配置,当规模较大或者设备部署距离比较远时,能够有效的提高工作效率,节省人力成本。

附图说明

图1为本发明的实施例一中基于pcie的fpga更新系统装置设备结构示意图;

图2为本发明的实施例二中基于pcie的fpga更新方法的写操作的执行示意图;

图3为本发明的实施例三中基于pcie的fpga更新方法的读操作的执行示意图;

图4为本发明的实施例四中基于pcie的fpga更新方法的配置操作的执行示意图;

图5为本发明的实施例五中基于pcie的fpga更新方法的设备结构示意图。

具体实施方式

下面结合说明书附图对本发明实施例进行详细描述。

如图1所示,为本发明实施例一中的基于pcie的fpga更新系统设备结构示意图,所述的更新系统包括cpu器件101、可擦除可编程逻辑(erasableprogrammablelogicdevice,epld)器件102、非易失闪存(norflash)存储单元103、现场可编程门阵列(fieldprogrammablegatearray,fpga)器件104、jtag(jointtestactiongroup)下载接口105,其中cpu器件101通过pcie接口与fpga器件104连接,fpga器件104通过内部总线接口和fpga配置信号线与epld器件102连接,epld器件102通过flash读写信号线与norflash存储单元103连接,jtag下载接口105为fpga器件104自带的下载接口。

本实施例一中,cpu器件101用于保存下载配置文件和发送写、读操作和配置操作命令,通过pcie接口将操作命令下发至fpga器件;epld器件102用于接收fpga通过内部总线发送的写操作、读操作和配置操作命令,将总线的读写操作转化为flash读写操作,接收配置操作命令对fpga进行配置操作;norflash存储单元103用于存储对fpga进行配置的文件数据;fpga器件104,用于接收来自pcie接口的写、读操作和配置操作,将pcie发送的操作转换为内部总线操作,能够接收来自epld器件的配置操作;jtag下载接口105,用于首次进行更新配置时,为fpga内部提供内部逻辑使用。

如图2所示,为本发明实施例二中的基于pcie的fpga更新方法的写操作的执行示意图,所述更新方法的写操作包括以下步骤:

步骤201:cpu器件发送写操作命令,将存储的配置文件构造写请求tlp数据包发送到pcie接口上。

用户能够通过cpu器件上的人机界面实现交互,发送控制操作命令或接收操作响应,也可以对fpga配置文件进行更新或者下载。

步骤202:fpga器件接收到来自pcie接口上的写请求tlp数据包,将数据存入到写数据fifo存储器中,同时通过内部总线接口将fifo中的数据发送到epld器件。

在步骤202中,fpga器件内部有pcie模块、数据处理模块、总线模块和配置接口,pcie模块为altera公司提供的hardipforpciexpress核,其主要按照标准pcie接口规范完成pcie接口的数据收发和发送;数据处理模块主要完成tlp数据包的解析和封装,解析写请求tlp数据包,封装读响应tlp数据包;总线主模块包含写数据fifo存储器和读数据fifo存储器,能够缓存需要读写的数据,并按照总线协议发送数据或者接收返回的读数据;配置接口由altera公司提供标准的fpga配置接口。

fpga的pcie接口接收到写请求tlp数据包后,送入到数据处理模块进行解析,将写数据发送到总线主模块的写数据fifo存储器中进行缓存,总线主模块发现写数据fifo存储器不为空时,读出fifo中的数据,将按照内部总线协议中的写操作将数据发送到内部总线上。

步骤203:epld器件接收来自内部总线的写入数据后,将数据存入到写数据fifo存储器中,再从norflash存储单元的基地址开始,将fifo中的数据依次写入到存储单元。

在步骤203中,epld器件内部有总线从模块、flash读写模块和配置模块,总线从模块包含写数据fifo存储器和读数据fifo存储器,能够缓存需要读写的数据,并按照总线协议接收数据或者返回读出的数据;flash读写模块主要完成对norflash存储单元的写入和读取数据;配置模块主要按照altera公司提供配置时序对fpga进行配置。

epld接收到总线上的写操作命令后,将需要写入的数据放入到总线从模块中的写数据fifo存储器进行缓存,flash读写模块发现总线从模块中的写数据fifo存储器不为空时,读取fifo中的数据,从norflash存储单元的基地址开始,按照flash存储单元的协议要求,将数据依次写入到存储单元。

如图3所示,为本发明实施例三中的基于pcie的fpga更新方法的读操作的执行示意图,所述更新方法的读操作包括以下步骤:

步骤301:cpu器件发送读操作命令,构造读请求tlp报文发送到pcie接口上。

步骤302:fpga器件接收到来自pcie接口上的读请求tlp报文,将tlp报文中的需要读取的基地址和数量通过内部总线接口发送到epld器件。

fpga的pcie接口接收到读请求tlp数据包后,送入到数据处理模块进行解析,将解析出的读请求tlp报文基地址和读取报文数量发送到总线主模块进行读操作。

步骤303:epld器件接收到内部总线接口的基地址和数量后,从基地址开始依次读取norflash存储单元指定数量的数据,将读出的数据先存入读数据fifo存储器中,再通过内部总线将fifo中的数据发送到fpga器件。

epld接收到总线上的读操作命令后,总线从模块将需要读取的基地址和数量发送到flash读写模块,由flash读写模块从norflash存储单元读取对应的数据返回给总线从模块的读数据fifo存储器,总线从模块发现fifo不为空时,将读出的数据返回到总线上。

步骤304:fpga器件接收来自内部总线返回的读数据,将读到的数据先存入读数据fifo存储器中,再构造读响应tlp报文发送到pcie接口上。

fpga的总线主模块接收到总线上返回的读数据后,将读到的数据先存入读数据fifo存储器中,数据处理模块发现读数据fifo存储器不为空时,读取fifo中的数据,构造读响应tlp报文发送到pcie模块,pcie模块将报文发送到pcie接口上。

步骤305:cpu器件接收来自pcie接口的读响应tlp报文,完成数据的读取。

在本实施例三中,读操作主要对写入到norflash存储单元的数据进行验证,确保写入的数据与原文件一致性,该操作一般在完成写操作后进行。

如图4所示,为本发明实施例四中的基于pcie的fpga更新方法的配置操作的执行示意图,所述更新方法的配置操作包括以下步骤:

步骤401:cpu器件发送配置操作命令,构造写请求tlp报文发送到pcie接口上。

步骤402:fpga器件接收到来自pcie接口上的写请求tlp报文,判定为配置操作,通过fpga的内部总线发送配置命令。

在步骤402中,数据处理模块通过对写请求tlp报文的解析,判定报文类型为配置操作,向总线主模块发送配置命令,总线主模块再将配置命令通过内部总线发送。

步骤403:epld器件接收到内部总线接口的配置命令后,从基地址开始依次读取norflash存储单元所有的数据,配置到fpga。

在步骤403中,epld器件中的总线从模块接收到配置命令后,向flash读写模块发送配置命令,flash读写模块从基地址开始依次读取norflash存储单元所有的数据,将读出的数据发送到配置模块,配置模块按照fpga配置altera公司提供配置时序将数据配置到fpga。

本发明实例四中,配置命令需要在所有数据全部写入,且读出的数据与原配置文件一致后在进行配置,否则可能造成fpga配置错误。

系统上电后,epld器件执行步骤403,完成fpga的上电配置。

综合以上实施例,本发明实施例五同时用于写操作、读操作和配置操作的基于pcie的fpga更新系统设备结构示意图,如图5所示,所述更新系统包括cpu器件101、epld器件102、norflash存储单元103、fpga器件104和jtag下载接口105,其中:cpu器件101用于通过网口实现远程登陆控制,下载配置文件和发送写、读操作和配置操作命令,通过pcie接口将操作命令下发至fpga;epld器件102用于接收来自fpga内部总线上的写操作、读操作和配置操作命令,将总线的读写操作转化为flash读写操作,接收配置操作命令对fpga进行配置操作;norflash存储单元103用于存储fpga配置文件数据;fpga器件104用于接收来自pcie接口的写、读操作和配置操作,将pcie发送的操作转换为内部总线操作,能够接收来自epld器件的配置操作;jtag下载接口105用于首次进行更新配置时,为fpga内部提供内部逻辑使用。

本实施例五中的epld器件102进一步可以划分为总线从模块31、flash读写模块32和配置模块33,其中:总线从模块31包含写数据fifo存储器和读数据fifo存储器,能够缓存需要读写的数据,并按照总线协议接收数据或者返回读出的数据;flash读写模块32主要完成对norflash存储单元的写入和读取数据;配置模块33主要按照altera公司提供配置时序对fpga进行配置。

本实施例五中的fpga器件104进一步可以划分为pcie模块21、数据处理模块22、总线主模块23和配置接口24,其中:pcie模块21主要按照标准pcie接口规范完成pcie接口的数据收发和发送;数据处理模块22主要完成tlp数据包的解析和封装,解析写请求tlp数据包,封装读响应tlp数据包;总线主模块23包含写数据fifo存储器和读数据fifo存储器,能够缓存需要读写的数据,并按照总线协议发送数据或者接收返回的读数据;配置接口24是altera公司提供标准的fpga配置接口。

如图5所示,pcie模块21采用了为altera公司提供的hardipforpciexpress核,确保接口按照pcie规范完成数据收发和发送;总线主模块23和总线从模块31中的写数据fifo存储器和读数据fifo存储器采用了altera公司提供fifoip核,缓存需要读写的数据。

本实施例五中,在进行首次fpga更新时,由于norflash存储单元103未存储配置文件,故fpga器件104没有内部逻辑,因此需要使用jtag下载接口105将配置文件下载至fpga器件104,再通过写操作将cpu器件101内部存储的配置文件写入norflash存储单元103中。完成首次fpga更新后,jtag下载接口105则不再使用。

本发明各实施例涉及的cpu器件、epld器件、norflash存储单元和fpga器件可以相同。

综合以上实施例,本发明实施例提出的基于pcie的fpga更新系统及更新方法,cpu器件通过pcie接口对fpga系统更新,数据传输速度极快,可以接近fpga配置的理论极限值,比常用的spi总线配置速度提高了数倍。配置fpga器件由epld器件完成,不再依靠cpu器件启动,能够有效的提高fpga加载速度,减少系统的启动时间。当规模较大或者设备部署距离比较远时,能够有效的提高工作效率,节省人力成本,并且,通过本发明记载的fpga更新系统的实现方案,保证了用户能够通过cpu完成快速更新fpga系统,实现可重构计算。

显然,本领域的技术人员可以根据本发明的技术构思对本发明进行各种改动和变形,而这些修改和变形属于本发明权利要求及等同技术范围之内,则都应属于本发明权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1