一种FPGA的单向链表数据存储方法及系统与流程

文档序号:21031349发布日期:2020-06-09 20:12阅读:1072来源:国知局
一种FPGA的单向链表数据存储方法及系统与流程

本发明属于芯片数据流控技术领域,具体涉及一种fpga的单向链表数据存储方法及系统。



背景技术:

链表是一种数据结构,在内存中通过节点记录内存地址而相互链接形成一条链的储存方式。相比数组而言,链表在内存中不需要连续的区域,只需要每一个节点都能够记录下一个节点的内存地址,通过引用进行查找,这样的特点也就造就了链表增删操作时间消耗很小,而查找遍历时间消耗很大的特点。

fpga具有速度快、效率高、灵活稳定、集成度高等优点,所以在硬件逻辑验证与设计中是十分必要的,目前fpga芯片内经常需要缓存一些管理数据包,数据包内包含fpga芯片需要读取的数据和数据包的配置信息,ppga芯片主要包含了可编程逻辑模块、固定功能逻辑模块(如乘法器)的数目及存储器(如嵌入式ram),其中,fpga的基本可编程逻辑单元是由查找表和寄存器组成的。

现有技术fpga读取时存在以下缺陷:fpga片内的缓存小,不能在片内存储大量数据;fpga片外的缓存大,但是片内模块不方便直接管理片外的缓存数据;fpga在应用时并行操作较多,但是提高工作效率一般,直接读取数据时会降低cpu的效率。



技术实现要素:

针对现有技术的上述不足,本发明提供一种fpga的单向链表数据存储方法及系统,以解决上述技术问题。

第一方面,本发明提供一种fpga的单向链表数据存储方法,包括:

将片内ram和片外ddr均划分为多个节点,将片内ram节点和片外ddr节点依次构建成fpga的单向链表,并设置节点的指针;

将fpga的寄存器地址配置为单向链表的索引地址;

将数据包的配置信息缓存到片内ram节点,所述数据包的数据缓存到片外ddr节点。

进一步的,所述方法还包括:

根据fpga的存储数据读取指令获取寄存器地址;

根据所述寄存器地址索引到待测数据包所在的ram节点,并读取待测数据包的配置信息;

根据片内ram节点的指针索引到片外ddr节点,并读取待测数据包的数据。

进一步的,所述方法还包括:

cpu通过总线读取待测数据包的配置信息;

dam通过dma交互模块读取待测数据包的数据。

进一步的,所述方法还包括:

将所述单向链表的第一个片内ram节点配置为链表头;

所述链表头内输入链表配置信息。

进一步的,所述数据配置信息包括:数据包大小、数据包数量、数据包是否校验信息和数据校验位。

进一步的,所述链表配置信息包括的单向链表的数据类型,传输通道,优先级,路由信息和目的地址。

第二方面,本发明提供一种fpga的单向链表数据存储系统,包括:

结构分配单元,配置用于将片内ram和片外ddr均划分为多个节点,将片内ram节点和片外ddr节点依次构建成fpga的单向链表,并设置节点的指针;

寄存器配置单元,配置用于将fpga的寄存器地址配置为单向链表的索引地址;

数据存储单元,配置用于将数据包的配置信息缓存到片内ram节点,所述数据包的数据缓存到片外ddr节点。

进一步的,所述系统还包括:

读取指令单元,配置用于根据fpga的存储数据读取指令获取寄存器地址;

地址索引单元,配置用于根据所述寄存器地址索引到待测数据包所在的片内ram节点,并读取待测数据包的配置信息;

数据读取单元,配置用于根据片内ram节点的指针索引到片外ddr节点,并读取待测数据包的数据。

进一步的,所述系统还包括:

表头配置单元,配置用于将所述单向链表的第一个片内ram节点配置为链表头;

表头信息输入单元,配置用于所述链表头内输入链表配置信息。

本发明的有益效果在于,

本发明提供的一种fpga的单向链表数据存储方法及系统,构建了单向链表形式的内存节点,在片内ram节点上获取配置信息,节省了配置信息对寄存器的资源占用,解决了单模块寄存器资源紧张的问题;采用链表的方式形成流水线操作,每个节点即阶段,执行不同的操作,并且按照顺序自动执行,提高了数据读取的工作效率;采用链表结合硬件结构的方式,对缓存空间采用分布式节点分布式,占用资源多的数据部分缓存到片外ddr内,极大地降低了片内资源的消耗;通过dma读取片外ddr内缓存的数据,减少了cpu的工作负担。

此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例的方法的示意性流程图。

图2是本发明一个实施例的系统的示意性框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

下面对本发明中出现的关键术语进行解释。

ddr:双倍速率同步动态随机存储器。

图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种fpga的单向链表数据存储系统。

如图1所示,该方法100包括:

步骤110,将片内ram和片外ddr均划分为多个节点,将片内ram节点和片外ddr节点依次构建成fpga的单向链表,并设置节点的指针;

步骤120,将fpga的寄存器地址配置为单向链表的索引地址;

步骤130,将数据包的配置信息缓存到片内ram节点,所述数据包的数据缓存到片外ddr节点。

可选地,作为本发明一个实施例,所述方法还包括:

根据fpga的存储数据读取指令获取寄存器地址;

根据所述寄存器地址索引到待测数据包所在的ram节点,并读取待测数据包的配置信息;

根据片内ram节点的指针索引到片外ddr节点,并读取待测数据包的数据。

可选地,作为本发明一个实施例,所述方法还包括:

cpu通过总线读取待测数据包的配置信息;

dam通过dma交互模块读取待测数据包的数据。

可选地,作为本发明一个实施例,所述方法还包括:

将所述单向链表的第一个片内ram节点配置为链表头;

所述链表头内输入链表配置信息。

可选地,作为本发明一个实施例,所述数据配置信息包括:数据包大小、数据包数量、数据包是否校验信息和数据校验位。

进一步的,所述链表配置信息包括的单向链表的数据类型,传输通道,优先级,路由信息和目的地址。

为了便于对本发明的理解,下面以本发明一种fpga的单向链表数据存储方法的原理,结合实施例中对一种fpga内存进行管理的过程,对本发明提供的一种fpga的单向链表数据存储方法做进一步的描述。

具体的,所述fpga的单向链表数据存储方法包括:

s1、将片内ram和片外ddr均划分为多个节点,将片内ram节点和片外ddr节点依次构建成fpga的单向链表,并设置节点的指针;

为增大fpga芯片外的片外ddrfpga芯片内的片内ram和,构建了单向链表形式的,采用链表结合硬件结构的方式,对缓存空间采用分布式节点分布式,

形成流水线操作,每个节点即阶段,执行不同的操作,并且按照顺序自动执行,提高了数据读取的工作效率;

s2、将fpga的寄存器地址配置为单向链表的索引地址;

寄存器为fpga内的寄存器模块,所述寄存器内存有第一步索引链表的地址,通过设置寄存器地址,可开启单向链表的流水线操作;所述流水线操作为节点依照指针依次索引,每个节点执行不同的操作,并且按照片内ram节点指针索引片外ddr节点、片外ddr节点指针索引片内的ram节点的顺序自动执行,提高了数据读取的工作效率;

s3、将数据包的配置信息缓存到片内ram节点,所述数据包的数据缓存到片外ddr节点。fpga芯片内的片内ram读取速率快,将占用资源小的信息缓存到片内ram,将占用资源大的信息缓存到片外ddr,节省了配置信息对寄存器的资源占用,解决了单模块寄存器资源紧张的问题。

如图2示,该系统200包括:

结构分配单元210,配置用于将片内ram和片外ddr均划分为多个节点,将片内ram节点和片外ddr节点依次构建成fpga的单向链表,并设置节点的指针;

寄存器配置单元220,配置用于将fpga的寄存器地址配置为单向链表的索引地址;

数据存储单元230,配置用于将数据包的配置信息缓存到片内ram节点,所述数据包的数据缓存到片外ddr节点。

可选地,作为本发明一个实施例,所述系统还包括:

读取指令单元,配置用于根据fpga的存储数据读取指令获取寄存器地址;

地址索引单元,配置用于根据所述寄存器地址索引到待测数据包所在的片内ram节点,并读取待测数据包的配置信息;

数据读取单元,配置用于根据片内ram节点的指针索引到片外ddr节点,并读取待测数据包的数据。

可选地,作为本发明一个实施例,所述系统还包括:

表头配置单元,配置用于将所述单向链表的第一个片内ram节点配置为链表头;

表头信息输入单元,配置用于所述链表头内输入链表配置信息。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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