远程升级现场可编程门阵列的系统及方法与流程

文档序号:12664746阅读:184来源:国知局
远程升级现场可编程门阵列的系统及方法与流程

本发明属于通信技术领域,具体涉及远程升级现场可编程门阵列的系统及方法。



背景技术:

很多通信设备都会使用FPGA芯片进行高速接口的设计,用于实现相关接口协议和数据转发等功能。那么如何对FPGA进行镜像文件的远程更新,对于整个设备就显得尤为重要。

目前,FPGA镜像文件的远程更新主要采用CPU模拟FPGA芯片的被动式加载方式。采用这种远程更新方式不仅会占用过多的CPU相关进程,而且还会因为CPU的GPIO管脚模拟被动加载时序出现误差,导致FPGA镜像文件被动加载不成功的情况。采用CPU模拟被动加载接口时序时,时钟频率都比较低,如果FPGA芯片的镜像文件较大,就会使得加载过程非常缓慢。如果采用CPU直接模拟FPGA芯片的被动加载接口时序,每次上电后,CPU都需要消耗相应的进程对FPGA芯片进行镜像更新。



技术实现要素:

针对现有技术中的缺陷,本发明提出了远程升级现场可编程门阵列的系统及方法,利用CPLD模拟FPGA芯片的被动加载接口时序,稳定性高,大大提高了对FPGA芯片配置的成功率;输出的时钟频率较高,减少了对FPGA芯片进行配置的时间,减少了对CPU资源的占用。

具体的,本发明提出了一种远程升级现场可编程门阵列的系统,包括:

一种远程升级现场可编程门阵列的系统,其特征在于,该系统包括:现场可编程门阵列器件FPGA、中央处理器CPU、复杂可编程逻辑器件CPLD及闪存;

所述CPLD分别与所述CPU、所述FPGA和所述闪存通过对应的接口电性连接;

所述闪存,用于存储所述FPGA的镜像文件;

所述CPU,用于接收远端发送过来的所述FPGA的待升级镜像文件,并将所述待升级镜像文件发送至所述CPLD;

所述CPLD,用于模拟所述闪存的数据写操作时序,将所述待升级镜像文件写入所述闪存;还用于模拟所述闪存的数据读操作时序,读取所述闪存中存储的镜像文件至所述CPLD中;还用于模拟所述FPGA的被动加载配置接口时序,将所述CPLD中的镜像文件发送至所述FPGA,还用于各种不同数据类型转换。

进一步地,所述CPLD与所述CPU之间的电性连接包括通过SPI、I2C、UART和PCI总线来进行的连接。

进一步地,所述数据类型转换包括串行并行转换、数据位宽转换。

本发明还提出了一种现场可编程门阵列升级的方法,该方法包括:

CPLD接收CPU发送过来的FPGA的镜像文件;

所述CPLD将接收到所述FPGA的镜像文件数据转化为闪存接口所需的相关数据;

所述CPLD模拟所述闪存的数据写操作时序,将所述相关数据写入所述闪存。

进一步地,“CPLD接收CPU发送过来的FPGA的镜像文件”具体包括:

所述CPLD在时钟信号的上升沿处,对数据信号进行采样,实现对镜像文件的接收。

进一步地,“将所述相关数据写入所述闪存”具体包括:

所述CPLD每收到一次数据,就启动一次数据写入操作,从闪存的0地址开始写入;

在写入镜像数据前,依次拉低所述闪存的使能信号与写使能信号,以将所述数据赋值给数据信号;

待保持100ns的时长后,拉高使能信号与写使能信号,以完成一段镜像数据的写入。

进一步地,在“所述CPLD模拟所述闪存的数据写操作时序,将所述相关数据写入所述闪存”之后,还包括:

镜像数据效验;

镜像数据效验具体包括:

所述CPU将通过CPLD回读闪存得到的镜像文件与远端发送的镜像文进行比对效验;

当效验不一致时,CPU会发起重写闪存的请求。

本发明还提出了一种现场可编程门阵列加载的方法,该方法包括:

一种现场可编程门阵列加载的方法,其特征在于,该方法包括:

CPLD接收加载请求指令;

所述CPLD模拟闪存的数据读操作时序,读取所述闪存中的镜像文件数据;

所述CPLD将读取到的镜像文件数据转化为FPGA接口所需的相关数据;

所述CPLD模拟所述FPGA的被动加载配置接口时序,将所述相关数据发送至所述FPGA。

进一步地,所述CPLD模拟所述FPGA的被动加载配置接口时序的流程具体包括:

所述CPLD拉低配置信号至少2us,对所述FPGA进行被动加载;

当所述配置信号被拉高后,等待状态信号拉高,当所述状态信号被拉高时进行数据的加载;

所述CPLD控制时钟信号的频率,发送时钟信号和数据,将所述数据通过数据信号端口传送至所述FPGA;

所述CPLD检测配置完成信号,当检测到所述配置完成信号被拉高后,停止数据的发送;

当检测到所述配置完成信号被拉高后,继续发送超过100个周期的时钟信号,使得FPGA芯片完成初始化。

进一步地,所述加载请求指令包括:CPU通过GPIO接口发送给CPLD的加载请求指令,以及CPLD上电时,电源模块发送给所述CPLD的加载请求指令。

采用本发明的技术方案,与已有的公知技术相比,具有如下有益效果:

(1)利用CPLD模拟FPGA芯片的被动加载接口时序,稳定性高,大大提高了对FPGA芯片配置的成功率。

(2)输出的时钟频率较高,减少了对FPGA芯片进行配置的时间。

(3)减少了对CPU资源的占用。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提出的远程升级现场可编程门阵列的系统示意图;

图2为本发明实施例提出的现场可编程门阵列升级的方法流程示意图;

图3为本发明实施例提出的现场可编程门阵列加载的方法流程示意图;

图4为本发明具体实施例中CPLD模拟FPGA的被动加载配置接口时序的连接关系图。

主要元件符号说明:

100、FPGA;200、CPU;300、CPLD;400、闪存;501、nCONFIG配置信号;502、nSTAUS状态信号;503、DCLK时钟信号;504、DATA数据信号;505、CONF_DONE配置完成信号。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和出示的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,远程升级现场可编程门阵列的系统包括:FPGA(Field-Programmable Gate Array,现场可编程门阵列)100、CPU 200、CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)300和闪存400。

CPLD 300分别与CPU 200、FPGA 100和闪存400通过对应的接口实现电性连接;

CPLD 300与CPU 200之间可以通过SPI、I2C、UART或PCI接口连接,优选SPI接口连接。

闪存400,用于FPGA 100所需的镜像文件。

闪存400可以是常见Flash芯片,例如可以包括Nand Flash以及Nor Flash,在一个优选的实施例中,可以选择Nor Flash。

CPU 200,用于接收远端发送过来的FPGA 100的待升级镜像文件,并在将所述待升级镜像文件发送至CPLD 300;

CPLD 300,用于模拟闪存400的数据写操作时序,将所述待升级镜像文件写入闪存400;还用于模拟闪存400的数据读操作时序,读取闪存400中存储的镜像文件至CPLD 300中;还用于模拟FPGA 100的被动加载配置接口时序,将CPLD 300中的镜像文件发送至FPGA 100,还用于各种不同数据类型转换。

现场可编程门阵列升级的方法用于升级更新内存400中的镜像文件。如图2所示,该方法包括如下步骤:

S101:CPLD接收CPU发送的FPGA的镜像文件;

CPU 200可以通过SPI、I2C、UART、PCI等接口,实现CPU 200与CPLD300间的通信。在本实施例中优选SPI接口通信。

CPU 200启动响应后,将FPGA 100镜像的数据,按照SPI接口时序,发送给CPLD 300。CPLD 300作为Slave模块,进行串行数据的接收。具体操作流程,如下所示:

CPU 200依次使能片选信号,使能SPI接口,触发时钟信号,开始进行进行数据传送。

CPLD 300在时钟信号的上升沿处,对MOSI(master output slave input)信号进行采样,实现对镜像数据的接收。

S102:所述CPLD将接收到所述FPGA的镜像文件数据转化为闪存接口所需的相关数据;

在本实施例中,以一个具体的例子来进行说明,例如闪存400采用数据位宽为16bits的Nor Flash芯片。SPI接口的数据位宽为1bit,那么需要将SPI接口收到的串行数据,转换成16bits的并行数据。具体需要转换的数据位宽,根据Flash芯片而定。详细流程如下所示:

通过SPI接口接收到1bits数据后,将该数据放入移位寄存器中。

完成16次移位后,即接收到了16bits的数据,每接收完成16bits数据,便传送给Flash接口,准备进行数据写入。

S103:所述CPLD模拟所述闪存的数据写操作时序,将所述相关数据写入所述闪存。

CPLD 300每收到一次突发数据(16bits)后,就需要将数据写入Flash,用于数据的存储。

CPLD 300进行Flash芯片写操作时序的模拟,将收到的数据写入Nor Flash中。利用CPLD 300模拟Flash芯片的写操作时序,更为稳定,而且可以支持多种Flash芯片。

CPLD 300每收到16bits数据,就启动一次数据写入操作,从闪存400的0地址开始写入;以后的每次写入都是在上次写入的结束位置开始。

写入镜像数据前,依次拉低所述闪存的使能信号与写使能信号;将所述相关数据赋值给数据信号;保持100ns的时长后,拉高所述闪存的使能信号与写使能信号,即完成16bits镜像数据的写入Nor Flash芯片。由于Flash芯片是非易失性的存储器,因此,如果需要更新FPGA芯片的镜像文件,只需要进行一次Flash数据的升级更新即可。

现场可编程门阵列升级的方法还包括镜像数据校验。

为了确保镜像数据的正确,CPU可以通过SPI接口,回读Flash里的数据内容,以用于校验数据的正确性。具体的流程如下:

CPU 200使能片选信号,使能SPI接口,同时,触发时钟信号。

CPLD 300模拟Flash接口的读数据时序,一次读回16bits的数据内容。

CPLD 300对16bits的数据进行并串转换,在时钟信号的下降沿处,将1bit的数据信息,通过MISO信号回送给CPU 200,连续16个时钟下降沿,即完成一次16bits的数据传送。

CPU 200将读回的数据信息进行校验,根据校验码,与原本的镜像数据校验码进行对比,从而检验Flash里的FPGA镜像内容是否正确。数据效验可以采用CRC32、MD5、SHA1等校验算法。

如果当效验不一致时,CPU 200会发起重写闪存的请求。

现场可编程门阵列加载的方法用于对FPGA 100进行配置。如图3所示,该方法包括如下步骤:

S201:CPLD接收加载请求指令;

CPU 200与CPLD 300之间,可以使用一根GPIO来模拟加载使能控制信号,CPU 200可通过该信号发送加载请求,让CPLD 300完成FPGA 100镜像的加载。

也可以在CPLD 300上电过程后,自动对FPGA 100进行一次镜像文件加载。

S202:所述CPLD模拟闪存的数据读操作时序,读取所述闪存中的镜像文件数据。

利用CPLD 300模拟Flash芯片的数据读操作时序。采用CPLD 300模拟Flash芯片的读操作时序,使得数据读取更为稳定。同时,利用CPLD 300连接Flash芯片,能够支持多种不同类型的芯片。

S203:所述CPLD将读取到的镜像文件数据转化为FPGA接口所需的相关数据。

从Flash中获取到数据信息后,由于Flash接口和FPGA 100的被动加载接口数据位宽不一致,为此,在CPLD 300内部需要做数据的转换,同时,完成本次数据发送后,才能够去读取Flash中的下一个数据。

在本实施例中,Flash接口的数据位宽为16bits,FPGA 100的被动加载接口的数据位宽为1bit。一次从Flash中,能够获取16bits的数据,但FPGA的被动加载接口一次只能传送1bit的数据。

在CPLD 300内部,需要进行16bits到1bit的并串转换,同时,完成16bits数据的并转转换后,才能够发起下一次Flash数据的读取。

S204:所述CPLD模拟所述FPGA的被动加载配置接口时序,将所述相关数据发送至所述FPGA。

利用CPLD 300模拟FPGA 100的被动加载配置接口时序,时钟频率可达到50MHz,从而使得加载速率更快,而且加载成功更为稳定。同时,由于不同的FPGA芯片被动加载配置的接口时序不同,使用CPLD 300模拟时序,灵活性更高。

在本实施例中FPGA 100的被动加载配置接口数据位宽为1bit,则CPLD 300每次向FPGA 100传送1bit的Flash镜像数据,确定FPGA 100反馈回来配置完成信号,便可终止配置数据的传送。

如图4所示CPLD模拟FPGA的被动加载配置接口时序时需要使用到以下端口:nCONFIG配置信号501、nSTAUS状态信号502、DCLK时钟信号503、DATA数据信号504和CONF_DONE配置完成信号505。

具体的流程如下:

CPLD 300拉低nCONFIG配置信号501至少2us,表明开始对所述FPGA进行被动加载;

当nCONFIG配置信号501被拉高后,等待nSTAUS状态信号502拉高,当nSTAUS状态信号502被拉高表明FPGA 100完成响应,可以进行数据的加载;

CPLD 300控制DCLK时钟信号503的频率,开始发送DCLK时钟信号503和DATA数据信号504,将相关数据通过DATA数据信号504传送至所FPGA 100;DCLK时钟信号503的频率最大为50MHz,这样可以极大提高加载的速度。

CPLD 300检测CONF_DONE配置完成信号505,当检测到CONF_DONE配置完成信号505被拉高后,表明FPGA 100数据接收完成,可停止数据的发送;

CONF_DONE配置完成信号505拉高后,仍需进行DCLK时钟信号503的发送,至少发送100个周期的DCLK时钟信号503,以使得FPGA 100完成初始化。

设备每次上电后,CPLD 300都会自动对FPGA 100进行被动配置的加载。如果需要进行设备的FPGA 100镜像更新,只需要更新一次Flash芯片中的数据便可完成FPGA 100镜像文件的更新。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

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