System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及fpga,具体涉及一种基于fpga实现数据源流控的方法及系统。
技术介绍
1、数据源,可以简单理解为数据源头,提供了应用程序所需要的数据。数据源保证了应用程序与交互模块之间交互的规范和协议,数据源中包含了用户的验证信息和交互时所需的一些特性配置,简而言之,数据源即是产生用户数据的源头,可以是各类实际应用硬件(例如能够实时产生图像数据的摄像头)。
2、fpga芯片广泛应用于通信、数字信号处理、视频图像处理以及告诉接口设计等领域;数据源在产生数据后,通常需要将产生的数据进行存储或发送至其他外部设备,也就是将数据从数据源发送至接收设备(可以是存储设备,也可以是其他的单独外部设备),而数据源将数据发送至接收设备时,由于接收设备的网卡可能会同时接收大量的数据,进而导致接收设备在接收来自数据源的数据的过程中出现数据拥堵,而数据拥堵容易导致数据源发送至接收设备的数据出现丢失情况,但现有技术中尚没有如何避免因接收设备出现数据拥堵而导致出现数据丢失的情况的方案。
技术实现思路
1、本专利技术的主要目的是提供一种基于fpga实现数据源流控的方法及系统,旨在解决因接收设备出现数据拥堵而导致出现数据丢失的问题。
2、本专利技术提出的技术方案为:
3、一种基于fpga实现数据源流控的方法,应用于基于fpga实现数据源流控的系统;所述系统包括fpga模块、发送设备和接收设备;发送设备通信连接于fpga模块;接收设备包括网卡模块;网卡模块通信连接于fpga模块;
4、fpga模块搭建状态机,以使状态机进入初始状态;
5、fpga模块接收来自发送设备的应用数据,并将应用数据拆分生成多个数据块,其中,每个数据块的大小一致;
6、当网卡模块的缓存单元的剩余容量小于阈值容量时,接收设备生成流控需求信号并发送至fpga模块;
7、当接收到流控需求信号时,fpga模块生成流控允许信号,并输入状态机;
8、在初始状态下,状态机在fpga模块将应用数据拆分生成多个数据块之后对数据块进行封装以生成数据帧;
9、生成数据帧后,状态机进入识别状态;
10、在识别状态下,状态机判断是否接收到了流控允许信号;
11、若是,状态机进入第一流控状态,并删除流控允许信号;
12、若否,状态机将数据帧发送至网卡模块,且状态机再次进入初始状态;
13、在第一流控状态下,状态机基于计数器和时钟信号等待第一预设时长之后再将数据帧发送至网卡模块,然后进入初始状态。
14、优选的,所述在初始状态下,状态机在fpga模块将应用数据拆分生成多个数据块之后对数据块进行封装以生成数据帧,包括:
15、状态机为数据块添加数据帧头,在数据帧头和数据块之间添加第一校验符,在数据块之后添加第二校验符,在第二校验符之后添加数据帧尾以得到数据帧,其中,第一校验符和第二校验符用于接收设备接收到数据帧后判断数据帧的完整性。
16、优选的,接收设备还包括存储模块;所述当网卡模块的缓存单元的剩余容量小于阈值容量时,接收设备生成流控需求信号并发送至fpga模块,包括:
17、接收设备实时获取网卡模块的缓存单元在当前时刻的剩余容量和阈值容量之间的差值,并标记为容量差值;
18、接收设备获取数据自缓存单元输入至存储模块的平均速度;
19、当剩余容量小于或等于阈值容量时,接收设备生成流控需求信号,并基于容量差值和平均速度计算流控延时时长;
20、接收设备将流控需求信号、流控延时时长和平均速度打包发送至fpga模块;
21、所述方法,还包括:
22、接收到流控需求信号后,fpga模块基于流控延时时长和平均速度计算第一预设时长,其中,第一预设时长为根据容量差值确定的流控延时时长。
23、优选的,所述当剩余容量小于或等于阈值容量时,接收设备生成流控需求信号,并基于容量差值和平均速度计算流控延时时长的计算公式为:
24、,
25、式中,为流控延时时长,单位为纳秒;为容量差值,单位为字节;为平均速度,单位为字节每纳秒;a为修正常数,取正数,单位为纳秒。
26、优选的,每个数据帧的大小一致;所述接收到流控需求信号后,fpga模块基于流控延时时长和平均速度计算第一预设时长,包括:
27、fpga模块基于计数器和时钟信号得到状态机在初始状态下进行数据块封装所耗费的时长,并标记为第一目标时长,基于计数器和时钟信号得到状态机处于识别状态所耗费的时长,并标记为第二目标时长;
28、fpga模块基于数据帧的大小、第一目标时长和第二目标时长计算得到未进行流控延时的正常传输速度:
29、,
30、式中,为正常传输速度,单位字节每纳秒;为单个数据帧的大小,单位为字节;为第一目标时长,单位为纳秒;为第二目标时长,单位为纳秒;
31、fpga模块获取自身与接收设备之间的通信延时时长,并基于通信延时时长、平均速度、正常传输速度和流控延时时长计算第一预设时长:
32、,
33、式中,为第一预设时长,单位为纳秒;为fpga模块与接收设备之间的通信延时时长,单位为纳秒。
34、优选的,数据帧头包括唯一的帧序列号;所述方法,还包括:
35、fpga模块将第一校验符和第二校验符发送至接收设备;
36、接收设备将接收到的第一校验符标记为第一验证符,将接收到的第二校验符标记为第二验证符;
37、接收设备接收到数据帧之后,判断数据帧是否满足如下条件:数据帧内的第一校验符和第一验证符一致,且数据帧内的第二校验符和第二验证符一致;
38、若否,接收设备生成与数据帧对应的错误信息并发送至fpga模块,其中,错误信息包括数据帧的帧序列号。
39、优选的,还包括:
40、fpga模块获取过去第一预设时间段内接收到的来自接收设备的错误信息的数量,标记为丢包数量;
41、当丢包数量大于阈值数量时,fpga模块生成第一流控信号,并输入状态机;
42、所述生成数据帧后,状态机进入识别状态,之后还包括:
43、在识别状态下,状态机判断是否接收到了第一流控信号;
44、若是,状态机进入第二流控状态;
45、若否,执行所述在识别状态下,状态机判断是否接收到了流控允许信号,及之后的步骤;
46、在第二流控状态下,状态机基于计数器和时钟信号等待第二预设时长之后再将数据帧发送至网卡模块,然后进入初始状态,其中,第二预设时长为根据丢包数量确定的流控延时时长。
47、优选的,还包括:
48、fpga模块基于计数器和时钟信号得到状态机在初始状态下进行数据块封装所耗费的时长,并标记为第一目标时长,基本文档来自技高网...
【技术保护点】
1.一种基于FPGA实现数据源流控的方法,其特征在于,应用于基于FPGA实现数据源流控的系统;所述系统包括FPGA模块、发送设备和接收设备;发送设备通信连接于FPGA模块;接收设备包括网卡模块;网卡模块通信连接于FPGA模块;FPGA模块包括计数器;所述方法,包括:
2.根据权利要求1所述的一种基于FPGA实现数据源流控的方法,其特征在于,所述在初始状态下,状态机在FPGA模块将应用数据拆分生成多个数据块之后对数据块进行封装以生成数据帧,包括:
3.根据权利要求1所述的一种基于FPGA实现数据源流控的方法,其特征在于,接收设备还包括存储模块;所述当网卡模块的缓存单元的剩余容量小于阈值容量时,接收设备生成流控需求信号并发送至FPGA模块,包括:
4.根据权利要求3所述的一种基于FPGA实现数据源流控的方法,其特征在于,所述当剩余容量小于或等于阈值容量时,接收设备生成流控需求信号,并基于容量差值和平均速度计算流控延时时长的计算公式为:
5.根据权利要求4所述的一种基于FPGA实现数据源流控的方法,其特征在于,每个数据帧的大小一致;所述接
6.根据权利要求3所述的一种基于FPGA实现数据源流控的方法,其特征在于,数据帧头包括唯一的帧序列号;所述方法,还包括:
7.根据权利要求6所述的一种基于FPGA实现数据源流控的方法,其特征在于,还包括:
8.根据权利要求7所述的一种基于FPGA实现数据源流控的方法,其特征在于,还包括:
9.根据权利要求3所述的一种基于FPGA实现数据源流控的方法,其特征在于,所述接收设备实时获取网卡模块的缓存单元在当前时刻的剩余容量和阈值容量之间的差值,并标记为容量差值,之后还包括:
10.一种基于FPGA实现数据源流控的系统,其特征在于,应用如权利要求1-9中任一项所述的基于FPGA实现数据源流控的方法;所述系统包括FPGA模块、发送设备和接收设备;发送设备通信连接于FPGA模块;接收设备包括网卡模块;网卡模块通信连接于FPGA模块;FPGA模块包括计数器。
...【技术特征摘要】
1.一种基于fpga实现数据源流控的方法,其特征在于,应用于基于fpga实现数据源流控的系统;所述系统包括fpga模块、发送设备和接收设备;发送设备通信连接于fpga模块;接收设备包括网卡模块;网卡模块通信连接于fpga模块;fpga模块包括计数器;所述方法,包括:
2.根据权利要求1所述的一种基于fpga实现数据源流控的方法,其特征在于,所述在初始状态下,状态机在fpga模块将应用数据拆分生成多个数据块之后对数据块进行封装以生成数据帧,包括:
3.根据权利要求1所述的一种基于fpga实现数据源流控的方法,其特征在于,接收设备还包括存储模块;所述当网卡模块的缓存单元的剩余容量小于阈值容量时,接收设备生成流控需求信号并发送至fpga模块,包括:
4.根据权利要求3所述的一种基于fpga实现数据源流控的方法,其特征在于,所述当剩余容量小于或等于阈值容量时,接收设备生成流控需求信号,并基于容量差值和平均速度计算流控延时时长的计算公式为:
5.根据权利要求4所述的一种基于fpga实现数据源流控的...
【专利技术属性】
技术研发人员:黄枭,
申请(专利权)人:湖南博匠信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。