一种基于FPGA的数据传输系统及方法与流程

文档序号:14879520发布日期:2018-07-07 09:21阅读:218来源:国知局

本申请涉及芯片设计技术领域,特别是涉及一种基于fpga的数据传输系统及方法。



背景技术:

由于fpga具有速度快、效率高、灵活稳定、集成度高以及可反复重构等优点,所以在芯片设计领域,常采用fpga作为平台来进行高速数据传输的设计。在同样的fpga芯片平台中,可以根据用户需求采用不同的数据传输方法设计出不同的数据传输系统。

目前的数据传输系统和方法通常为,上行接口一般为片内总线结构,fpga芯片的上行线路连接cpu,下行线路连接控制器末端等设备,数据在fpga芯片内通过单线路传输,当数据量较大时,通过cpu调节数据传输的先后顺序。

然而,采用目前的数据传输系统和方法时,由于数据在fpga芯片的片内总线接口传递过程中采用单线路传输,输入时钟频率较低,一般为100mhz-200mhz,但上行线路中功能模块较多;而输出时钟频率较高,一般为4ghz,输入输出两端的时钟频率差较大。也就是说,上行数据传输速率较低,但上行功能模块较多,下行数据传输速率较高,造成上行功能模块频繁进入闲置状态,总线利用率低,数据传输效率低。



技术实现要素:

本申请提供了一种基于fpga的数据传输系统及方法,以解决现有技术中上行功能模块频繁进入闲置状态、数据传输效率低的问题。

为了解决上述技术问题,本申请实施例公开了如下技术方案:

一种基于fpga(field-programmablegatearray,现场可编程门阵列)的数据传输系统,所述数据传输系统包括:输入端数据接口、虚拟通道管理模块、多个虚拟通道、仲裁模块以及输出端数据接口;其中,

所述虚拟通道管理模块,用于获取来自所述输入端数据接口的数据包,并根据所述数据包的包头将不同的数据包分别存储到不同的虚拟通道中,以及,读取所述虚拟通道中的数据包并将所述数据包输出至所述仲裁模块;

所述仲裁模块,用于对所述虚拟通道的优先级进行仲裁,并根据所述虚拟通道的优先级顺序将所述数据包传输至输出端数据接口。

可选地,所述虚拟通道管理模块还用于,当不同数据包被存放至同一个虚拟通道中时,对不同数据包添加唯一的id;

所述仲裁模块还用于,根据数据包的id,对同一个虚拟通道中不同数据包的优先级进行仲裁,并根据数据包的优先级顺序进行数据传输。

可选地,所述仲裁模块还用于,根据数据包的id,对同一个虚拟通道中不同数据包的优先级进行仲裁,使id在先的数据包优先传输。

可选地,所述数据传输系统中还包括有冗余虚拟通道,用于以循环使用的方式暂存数据包。

可选地,所述虚拟通道管理模块还用于,检测所述多个虚拟通道的剩余存储空间,当所述多个虚拟通道中任意一个虚拟通道的存储空间不足以继续存放数据包时,将所述任意一个虚拟通道中的下一个数据包存储至所述冗余虚拟通道中。

可选地,所述虚拟通道为利用catalogip工具生成的缓冲寄存器。

一种基于fpga的数据传输方法,所述方法包括如下步骤:

获取数据包;

根据所述数据包的包头,将不同的数据包分别存储到不同的虚拟通道中;

根据虚拟通道的优先级顺序,进行数据包输出。

可选地,根据所述数据包的包头,将不同的数据包分别存储到不同的虚拟通道中,具体包括如下步骤:

当不同的数据包被存放至同一个虚拟通道中时,对所述不同的数据包分别添加唯一的id;

根据所述id,对所述不同的数据包进行仲裁,确定所述不同的数据包在同一个虚拟通道中的优先级顺序。

可选地,根据所述数据包的包头,将不同的数据包分别存储到不同的虚拟通道中之后,所述方法还包括:

检测所述虚拟通道的剩余存储空间;

当所述虚拟通道的剩余存储空间不足以继续存放数据包时,将无法存放的数据包暂存至冗余虚拟通道中,所述冗余虚拟通道用于以循环使用的方式暂存数据包;

无法存放的数据包输出完毕后,释放冗余虚拟通道。

可选地,所述虚拟通道为利用catalogip工具生成的缓冲寄存器。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请提供一种基于fpga的数据传输系统,该数据传输系统包括输入端数据接口、虚拟通道管理模块、多个虚拟通道、仲裁模块以及输出端数据接口。通过输入端数据接口获取到数据包之后,虚拟通道管理模块根据数据包的包头将不同的数据包分别存储到不同的虚拟通道中,然后读取虚拟通道中的数据包并将数据包输出至仲裁模块,通过仲裁模块对虚拟通道的优先级进行强制仲裁,根据虚拟通道的优先级顺序将数据包传输至输出端数据接口。本申请实施例中设置有多个虚拟通道,每个虚拟通道对应fpga中的一个功能模块,多个虚拟通道的设置能够在上行数据传输中实现多行程多通道传输,避免现有技术中数据传输过程出现单通道数据包移除、上行功能模块频繁进入闲置状态的现象,从而大大提高数据传输效率。虚拟通道管理模块的设置,能够根据数据包的包头将不同的数据包存储至不同的虚拟模块中,实现虚拟通道与数据包的一一对应,并控制虚拟通道中的数据传输至仲裁模块,有利于后续仲裁模块对虚拟通道中的数据进行处理,提高数据传输效率。而仲裁模块的设置,能够对多个虚拟通道进行优先级排序,从而避免由于多个虚拟通道的设置所引起的数据堵塞现象,有利于提高数据传输的效率。

本申请提供一种基于fpga的数据传输方法,首先获取数据包,然后根据数据包的包头,将不同的数据包分别存储到不同的虚拟通道中;最后根据虚拟通道的优先级顺序,进行数据包输出。本申请实施例通过将所获取的数据包分别存储到不同的虚拟通道中,能够实现多行程多通道的数据传输,大大提高输入端的数据传输效率。对虚拟通道进行强制仲裁,根据虚拟通道的优先级顺序进行数据包输出,能够有效避免数据包堵塞现象,从而提高数据传输效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

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

图1为本申请实施例所应用的一种基于fpga的数据传输系统的结构示意图;

图2为本申请实施例所应用的一种基于fpga的数据传输方法的流程示意图;

图3为本申请实施例所应用的另一种基于fpga的数据传输方法的流程示意图。

符号表示:

1-输入端数据接口、2-虚拟通道管理模块、3-虚拟通道、4-仲裁模块、5-输出端数据接口。

具体实施方式

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

fpga为专用集成电路领域中的一种半定制电路,具有速度快、效率高、灵活稳定、集成度高、可反复重构等优点,所以在芯片设计领域,通常采用fpga来实现高速数据传输的设计。另外,fpga也可作为正式流片前的小规模试产,由于fpga内部存在固化功能模块以及各类型常用ip,还是作为研发设计的优秀平台。本申请实施例中以alteracyclonev型fpga为例。

虚拟通道,是一种通信电路,可以在两个或多个端点之间传送atm(asynchronoustransfermode,异步传输模式)信元。端点之间的虚通道可以是用户到用户的链接,也可以是用户到网络的连接,还可以是网强到网络的连接。

为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。

实施例一

参见图1,图1为本申请实施例所应用的一种基于fpga的数据传输系统的结构示意图。由图1可知,本申请实施例中的数据传输系统主要包括:输入端数据接口1、虚拟通道管理模块2、多个虚拟通道3、仲裁模块4以及输出端数据接口5共五个部分。其中,虚拟通道管理模块2用于获取来自输入端数据接口1的数据包,本申请实施例的数据包中存储有不同包头的数据;虚拟通道管理模块2获取到数据包后,根据数据包的包头将不同的数据包分别存储到不同的虚拟通道3中,虚拟通道管理模块2还用于,读取虚拟通道3中的数据包并将数据包输出至仲裁模块4。仲裁模块4用于对虚拟通道3的优先级进行仲裁,并根据虚拟通道3的优先级顺序将数据包传输至输出端数据接口。

输入端数据接口1获取来自上级的数据包,并将数据包首先传输至虚拟通道管理模块2,由虚拟通道管理模块2先对数据包进行处理后再传输至不同的虚拟通道3。具体地,虚拟通道管理模块2根据所获取的数据包的包头对数据包进行分类,包头规定了数据包所对应的fpga中的功能模块,通过虚拟通道管理模块2将不同数据包分别存储到不同的虚拟通道3中,就能够实现不同功能模块与不同虚拟通道的一一对应,不同功能模块的数据包通过其对应的虚拟通道进行传输,从而实现fpga中不同功能模块的分区管理,有利于提高数据传输效率。

本申请实施例中多个虚拟通道3的设置,从逻辑上相当于将数据通过多行程多通道传输,能够避免上行数据传输中只有单通道数据传输的现象,从而大大提高数据传输效率。本申请实施例中的虚拟通道3采用多ram(randomaccessmemory,随机存储器)缓存的方式来实现。本申请实施例中的虚拟通道3可以设置为利用catalogip工具生成的缓冲寄存器,也就是利用catalogip工具生成ram以替代现有技术中的缓冲寄存器buffer。

继续参见图1可知,本申请实施例的数据传输系统中还包括仲裁模块4。虚拟通道管理模块2将不同数据包分别存储至不同虚拟通道3中后,还读取虚拟通道3中的数据包并将所读取的数据包输出至仲裁模块4。仲裁模块4获取不同虚拟通道3中的数据包后,对虚拟通道3的优先级进行仲裁,即强制仲裁多个虚拟通道的优先级。例如数据传输系统中有三个虚拟通道3,分别为vc0、vc1、vc2,仲裁模块4可以规定三个虚拟通道的优先级顺序为:vc0>vc1>vc2,即先将vc0通道中的数据包传输至输出端数据接口5,然后将vc1通道中的数据包传输至输出端数据接口5,最后将vc2通道中的数据包传输至输出端数据接口5。仲裁模块4的设置,能够避免因多个虚拟通道3同时传输数据包所导致的数据堵塞现象,有利于提高数据传输效率。

进一步地,由于每个虚拟通道3中会存放多个不同的数据包,所以,本申请实施例中的虚拟通道管理模块2还用于,当不同数据包被存放至同一个虚拟通道3中时,对不同数据包添加唯一的id。相应地,仲裁模块4还用于,根据数据包的id,对同一个虚拟通道3中不同数据包的优先级进行仲裁,并根据数据包的优先级顺序进行数据传输。本申请实施例通过虚拟通道管理模块2和仲裁模块4的设置,能够有效解决单个虚拟通道3中数据包的传输问题,有效避免数据堵塞现象,有利于提高数据传输效率。

另外,为适应大量高速数据传输的情况,本申请实施例中还设置有冗余虚拟通道,用于以循环使用的方式暂存数据包。也就是说,本申请实施例中的冗余虚拟通道只用于代替虚拟通道3暂存数据包,而且并不固定代替某一个虚拟通道进行数据存储。

在虚拟通道3的存储空间不足时,本申请实施例中的数据传输系统通过虚拟通道管理模块2启动冗余虚拟通道。因此,本申请实施例中的虚拟通道管理模块2还用于,检测多个虚拟通道3的剩余存储空间,当多个虚拟通道3中任意一个虚拟通道的存储空间不足以继续存放数据包时,将该任意一个虚拟通道中的下一个数据包存储至冗余虚拟通道中。当暂存到冗余虚拟通道中的数据包传输完毕后,冗余虚拟通道被释放,继续作为另一个存储空间不足以继续存放数据包的虚拟通道的备用虚拟通道。

其中,本申请实施例中虚拟通道管理模块2检测多个虚拟通道3的剩余存储空间是否足以继续存放数据包的标准,可以参考数据包的长度和虚拟通道3的深度。即:所要存储的数据包的长度大于虚拟通道3的深度时,判定该虚拟通道3的剩余存储空间不足;所要存储的数据包的长度小于或等于虚拟通道3的深度时,判定该虚拟通道3的剩余存储空间充足。

实施例二

参见图2,图2为本申请实施例所应用的一种基于fpga的数据传输方法的流程示意图。由图2可知,本申请实施例中的数据传输方法主要包括如下步骤:

s1:获取数据包。

本申请实施例的数据包中存储有不同包头的数据。这些数据包的包头规定了数据包所对应的fpga中的功能模块,也就是通过查看数据包的包头即可获知该数据包来自fpga上行通道中的哪一个功能模块。

s2:根据数据包的包头,将不同的数据包分别存储到不同的虚拟通道中。

本申请实施例中不同的虚拟通道具有不同的优先级顺序。为提高上行数据传输通道中的数据传输效率,将不同的数据包分别存储至不同的虚拟通道中,相当于采用多行程多通道进行数据传输,能够大大提高数据传输效率。

另外,通过步骤s2,将不同功能模块的数据包通过其对应的虚拟通道进行传输,能够实现fpga中不同功能模块的分区管理,也有利于提高数据传输效率。

由于同一个虚拟通道中会存放多个数据包,因此步骤s2又包括如下步骤:

s21:当不同的数据包被存放至同一个虚拟通道中时,对不同的数据包分别添加唯一的id。

s22:根据所添加的id,对不同的数据包进行仲裁,确定不同的数据包在同一个虚拟通道中的优先级顺序。

由步骤s21-s22可知,本申请实施例中不同数据包在同一个虚拟通道中也具有优先级顺序,这种方法能够避免单个虚拟通道中进行数据包传输时发生数据堵塞现象,从而有效提高数据传输的效率。

继续参见图2可知,将不同的数据包分别存储到不同的虚拟通道中之后,进入步骤s6:根据虚拟通道的优先级顺序,进行数据包输出。

由于步骤s2中多个虚拟通道同时进行数据传输,因此,后续对虚拟通道进行读取时,为避免数据堵塞,本申请实施例是根据虚拟通道的优先级顺序进行读取。

本申请实施例中数据传输的原理在图1所示的实施例一中已经详细阐述,两者可以互相参照,再次不再赘述。

实施例三

在图2所示实施例的基础之上参见图3,图3为本申请实施例所应用的另一种基于fpga的数据传输方法的流程示意图。

由图3可知,本申请实施例中在步骤s2和步骤s6之间,还包括如下步骤:

s3:检测虚拟通道的剩余存储空间。

s4:当虚拟通道的剩余存储空间不足以继续存放数据包时,将无法存放的数据包暂存至冗余虚拟通道中。其中,冗余虚拟通道用于以循环使用的方式暂存数据包。

s5:无法存放的数据包输出完毕后,释放冗余虚拟通道。

由以上步骤s3-s5可知,本申请实施例中通过检测虚拟通道的剩余存储空间进行冗余存储,从而避免高速数据传输中虚拟通道存储空间不足而导致的数据堵塞,能够进一步提高数据传输的效率,有利于提高fpga的资源使用率。而且本申请实施例中的冗余虚拟通道以循环方式使用,即该冗余虚拟通道并不固定代替某一个虚拟通道进行数据存储,而是根据各个虚拟通道的剩余存储空间检测情况,灵活调整冗余虚拟通道的使用,有利于资源的灵活调度。

该实施例未详细描述的部分可参照图1和图2所示的实施例一以及实施例二,三者之间可以互相参照,在此不再详细阐述。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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