一种用EPLD加载多片FPGA的方法及系统与流程

文档序号:12733158阅读:205来源:国知局
一种用EPLD加载多片FPGA的方法及系统与流程

本发明属于通信技术领域,具体涉及一种用EPLD加载多片FPGA的方法及系统。



背景技术:

在FPGA(Field-Programmable Gate Array,现场可编程门阵列)开发中,常常遇到需要通过EPLD(Erasable Programmable Logic Device,可擦除可编辑逻辑器件)给多片FPGA升级的情况,目前的EPLD给多片FPGA升级的技术都是系统上电自动配置,EPLD默认对所有挂载的FPGA进行顺序加载配置,如果用户只想升级加载某一部分FPGA则无法实现。



技术实现要素:

针对现有技术中的缺陷,本发明提出了一种用EPLD加载多片FPGA的方法及系统,通过CPU操作EPLD中的配置使能寄存器,实现多片FPGA的选择性加载。

具体的,本发明提出了一种用EPLD加载多片FPGA的方法,包括:

将多个FPGA镜像文件存储到闪存指定的地址段;

在FPGA的各组电源均上电后,通过EPLD控制所述闪存复位初始化,将所述闪存的读写方式设置为同步读数据模式;

通过EPLD根据配置使能寄存器的数据,片选FPGA;

通过EPLD产生配置控制信号时序,读取所述闪存对应的镜像数据,产生配置数据流和时钟信号来配置片选的FPGA。

进一步地,所述“将多个FPGA镜像文件存储到闪存指定的地址段”具体包括:

通过EPLD将闪存的读写方式设置为同步写数据模式;

通过CPU接收FPGA镜像文件并通过增强型串行外设接口发送给EPLD;

EPLD将接收到的文件写入闪存指定的地址段。

进一步地,所述“通过EPLD根据配置使能寄存器的数据,片选FPGA”具体包括:

判断所述配置使能寄存器的最高位是否为1;

当所述配置使能寄存器的最高位为1时,通过EPLD控制所有的FPGA按顺序逐一进行片选配置;当所述配置使能寄存器的最高位不为1时,依次判断所述配置使能寄存器的余下各位是否置为1;

当检测到余下某位为1时,控制与被检测位连接的FPGA被片选配置。

更进一步地,所述配置使能寄存器的位数为N时,所述EPLD能挂载的FPGA的最大片数为N-1。

进一步地,所述配置使能寄存器在自动配置模式下通过EPLD对所述配置使能寄存器自加1实现片选配置,在手动配置模式下由CPU写所述配置使能寄存器实现片选配置。

进一步地,所述方法还包括,检测需要加载的FPGA是否加载完毕,当检测到需要加载的FPGA全部加载完毕后,通过EPLD释放FPGA的复位信号,使系统进入正常的工作模式;否则继续执行加载操作。

进一步地,所述闪存包括Nor Flash和Nand Flash。

本发明又提出了一种用EPLD加载多片FPGA的系统,包括:

存储模块,用于将多个FPGA镜像文件存储到闪存指定的地址段;

设置模块,用于在FPGA的各组电源均上电后,通过EPLD控制所述闪存复位初始化,将所述闪存的读写方式设置为同步读数据模式;

片选模块,用于通过EPLD根据配置使能寄存器的数据,片选FPGA;

加载模块,用于通过EPLD产生配置控制信号时序,读取所述闪存对应的镜像数据,产生配置数据流和时钟信号来配置片选的FPGA。

进一步地,所述存储模块具体包括:

闪存读写设置模块,用于通过EPLD将所述闪存的读写方式设置为同步写数据模式;

通信模块,用于通过CPU接收FPGA镜像文件并通过增强型串行外设接口发送给EPLD;

写入模块,用于通过EPLD将接收到的文件写入闪存指定的地址段。

进一步地,所述系统还包括片选完成检测模块,用于检测需要加载的FPGA是否加载完毕,当检测到需要加载的FPGA全部加载完毕后,通过EPLD释放FPGA的复位信号,使系统进入正常的工作模式;否则继续执行加载操作。

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

(1)既可上电自动配置也支持手动配置,从而实现对多片FPGA的灵活配置。

(2)同步时钟配置模式下,输出的时钟频率可调高,减少了对FPGA芯片进行配置的时间。

附图说明

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

图1为本发明实施例提出的一种用EPLD加载多片FPGA的方法流程示意图;

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

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

图4为本发明实施例提出的一种用EPLD加载多片FPGA的系统结构示意图。

主要元件符号说明:

100、存储模块;200、设置模块;300、片选模块;400、加载模块;500、片选完成检测模块。

具体实施方式

在下文中,将更全面地描述本公开的各种实施例。本公开可具有各种实施例,并且可在其中做出调整和改变。然而,应理解:不存在将本公开的各种实施例限于在此公开的特定实施例的意图,而是应将本公开理解为涵盖落入本公开的各种实施例的精神和范围内的所有调整、等同物和/或可选方案。

在下文中,可在本公开的各种实施例中使用的术语“包括”或“可包括”指示所公开的功能、操作或元件的存在,并且不限制一个或更多个功能、操作或元件的增加。此外,如在本公开的各种实施例中所使用,术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。

在本公开的各种实施例中,表述“或”或“A或/和B中的至少一个”包括同时列出的文字的任何组合或所有组合。例如,表述“A或B”或“A或/和B中的至少一个”可包括A、可包括B或可包括A和B二者。

在本公开的各种实施例中使用的表述(诸如“第一”、“第二”等)可修饰在各种实施例中的各种组成元件,不过可不限制相应组成元件。例如,以上表述并不限制所述元件的顺序和/或重要性。以上表述仅用于将一个元件与其它元件区别开的目的。例如,第一用户装置和第二用户装置指示不同用户装置,尽管二者都是用户装置。例如,在不脱离本公开的各种实施例的范围的情况下,第一元件可被称为第二元件,同样地,第二元件也可被称为第一元件。

应注意到:如果描述将一个组成元件“连接”到另一组成元件,则可将第一组成元件直接连接到第二组成元件,并且可在第一组成元件和第二组成元件之间“连接”第三组成元件。相反地,当将一个组成元件“直接连接”到另一组成元件时,可理解为在第一组成元件和第二组成元件之间不存在第三组成元件。

在本公开的各种实施例中使用的术语“用户”可指示使用电子装置的人或使用电子装置的装置(例如,人工智能电子装置)。

在本公开的各种实施例中使用的术语仅用于描述特定实施例的目的并且并非意在限制本公开的各种实施例。如在此所使用,单数形式意在也包括复数形式,除非上下文清楚地另有指示。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本公开的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本公开的各种实施例中被清楚地限定。

如图1所示,一种用EPLD加载多片FPGA的方法,该方法包括:

S101:将多个FPGA镜像文件存储到闪存指定的地址段。

CPU通过增强型串行外设接口与板卡上的EPLD进行通信,通过EPLD作为桥梁,对闪存进行写操作,将需要更新的FPGA镜像由PC端通过网络连接写入到闪存中,再控制FPGA复位加载即可实现在线升级FPGA镜像,而不影响整个系统其他模块。所述闪存可以包括Nor Flash和Nand Flash。

每个FPGA的镜像分配在一个协商好的固定的地址段,实现在同一个闪存中存放多个FPGA镜像,能放多少个镜像由闪存的存储空间大小和每个镜像的大小共同决定。

S102:在FPGA的各组电源均上电后,通过EPLD控制所述闪存复位初始化,将所述闪存的读写方式设置为同步读数据模式。

在FPGA的各组电源均上电后,通过EPLD控制所述闪存复位初始化,以保证闪存进入到预设状态,保证接下来对闪存的读取的操作是有效的。

S103:通过EPLD根据配置使能寄存器的数据,片选FPGA。

判断所述配置使能寄存器的最高位是否为1;当所述配置使能寄存器的最高位为1时,通过EPLD控制所有的FPGA按顺序逐一进行片选配置;当所述配置使能寄存器的最高位不为1时,依次判断所述配置使能寄存器的余下各位是否置为1;当检测到余下某位为1时,控制与该被检测位连接的FPGA被片选配置。

所述配置使能寄存器在自动配置模式下通过EPLD对所述配置使能寄存器自加1实现片选配置,在手动配置模式下由CPU写所述配置使能寄存器实现片选配置。

所述配置使能寄存器的位数为N时,所述EPLD能挂载的FPGA的最大片数为N-1。

在某一实施例中,配置使能寄存器是一个8位的的寄存器,寄存器从低位到高位依次标记为0、1、2、3、4、5、6和7。开始配置前,配置使能寄存器所有位全部被置为0。

每个FPGA的使能信号分别连接EPLD配置使能寄存器的bit[0]至bit[6]位,该8位寄存器挂载的FPGA的最大片数为7。

在自动配置模式下,EPLD对所述配置使能寄存器自加1实现FPGA片选配置,所述自加1就是将配置使能寄存器的低位到高位依次拉高,首先将bit[0]位置为1,表示对第一个FPGA进行配置,当第一个FPGA配置完毕后,所有位重新置为0后,再将bit[1]位置为1,表示对第二个FPGA进行配置。直至bit[6]位被置为1,表示对最后一个FPGA进行配置。在自动配置模式下,实现对所有FPGA进行按顺序配置。

在手动配置模式下,CPU写所述配置使能寄存器实现片选配置,当手动配置所有的FPGA时,CPU写所述配置使能寄存器的最高位为1,当配置使能寄存器的最高位为1,手动配置模式效果与自动配置模式完全一样。当手动配置某一FPGA时,CPU写所述配置使能寄存器的相应位为1,例如:当单独手动配置第2块FPGA,CPU将配置使能寄存器的bit[1]位置为1。在手动配置模式下配置全部FPGA。

S104:通过EPLD产生配置控制信号时序,读取所述闪存对应的镜像数据,产生配置数据流和时钟信号来配置片选的FPGA。

EPLD模拟配置时序,输出一个配置端口,该端口是一个一对多的端口,由配置使能决定和哪块FPGA进行对接,实现对指定FPGA进行镜像配置。如图2所示,一种EPLD配置时序图,其具体流程如下:

在nCONFIG上产生一个由低到高的跳变,使EPLD进入配置状态,等待EPLD释放nSTATUS信号。

nSTATUS变高之后,在时钟DCLK上升沿将配置数据逐位送到DATA各位上,时钟频率选为25MHz。

EPLD接收完所有的配置数据后,释放CONF_DONE,变为高电平,之后DCLK任需输出脉冲来初始化EPLD,直至INT_DONE被释放变为高电平,表示EPLD初始化完毕。

CONF_DONE会在配置数据发送完成后拉高,表明配置正确,产生ps_done信号,超过等待时间,没拉高,则配置错误,产生ps_error信号。配置结束不管是ps_done信号还ps_error信号到来,都产生ps_end信号,提示此次配置结束。

EPLD检测需要加载的FPGA是否加载完毕,当检测到需要加载的FPGA全部加载完毕后,EPLD释放FPGA的复位信号,使系统进入正常的工作模式。否则继续执行加载操作。

手动配置中可修改配置时钟大小,从而调节配置速率。当配置时钟频率设置较高时,可减少对FPGA芯片进行配置的时间。系统默认为25MHz,配置时钟频率的可调范围为0-50MHz。

如图3所示,一种用EPLD加载多片FPGA的系统,该系统包括:

存储模块100,用于将多个FPGA镜像文件存储到闪存指定的地址段;

设置模块200,用于在FPGA的各组电源均上电后,通过EPLD控制所述闪存复位初始化,将所述闪存的读写方式设置为同步读数据模式;

片选模块300,用于通过EPLD根据配置使能寄存器的数据,片选FPGA;

加载模块400,用于通过EPLD产生配置控制信号时序,读取所述闪存对应的镜像数据,产生配置数据流和时钟信号来配置片选的FPGA。

所述存储模块100具体包括:

闪存读写设置模块,用于通过EPLD将所述闪存的读写方式设置为同步写数据模式;

通信模块,用于通过CPU接收FPGA镜像文件并通过增强型串行外设接口发送给EPLD;

写入模块,用于通过EPLD将接收到的文件写入闪存指定的地址段。

如图4所示,一种用EPLD加载多片FPGA的系统,该系统包括:

存储模块100,用于将多个FPGA镜像文件存储到闪存指定的地址段;

设置模块200,用于在FPGA的各组电源均上电后,通过EPLD控制所述闪存复位初始化,将所述闪存的读写方式设置为同步读数据模式;

片选模块300,用于通过EPLD根据配置使能寄存器的数据,片选FPGA;

加载模块400,用于通过EPLD产生配置控制信号时序,读取所述闪存对应的镜像数据,产生配置数据流和时钟信号来配置片选的FPGA。

片选完成检测模块500,用于检测需要加载的FPGA是否加载完毕,当检测到需要加载的FPGA全部加载完毕后,通过EPLD释放FPGA的复位信号,使系统进入正常的工作模式;否则继续执行加载操作。

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

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

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

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