一种数据流通信方法及系统技术方案

技术编号:39244962 阅读:16 留言:0更新日期:2023-10-30 11:57
本发明专利技术公开了一种数据流通信方法及系统,该方法解决了FPGA缓存资源有限时,Li nux非实时操作系统与FPGA的PC I E传输带宽很低的问题。最终实现了Li nux非实时操作系统与FPGA通过PC I E进行高速实时数据通信,降低了PC I E高速实时数据流通信中对FPGA缓存资源的依赖。在实际应用场景中,能达到降低成本,降低功耗的目的。的目的。的目的。

【技术实现步骤摘要】
一种数据流通信方法及系统


[0001]本专利技术涉及电子
,特别是涉及一种基于Linux非实时操作系统的PCIE与FPGA的高速实时数据流通信方法及系统。

技术介绍

[0002]FPGA(Field Programmable Gate Array)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
[0003]FPGA数据以中断或者查询方式通过PCIE总线发送至Linux非实时操作系统。当FPGA在等待中断或查询响应期间,需要将数据进行缓存。由于Linux非实时操作系统响应中断和查询操作时间误差较大,为了满足高速数据传输不丢失,FPGA需要进行大量数据缓存。
[0004]然而,在很多应用场景中,FPGA无法进行大量数据缓存,从而导致FPGA到Linux非实时操作系统的数据传输带宽很低,限制系统数据处理能力。
[0005]因此,如何提供一种高速实时数据流通信方法,不需要通过中断或查询方式,使FPGA数据能够实时发送至Linux非实时操作系统,是迫切需要本领域技术人员解决的技术问题。

技术实现思路

[0006]鉴于上述问题,本专利技术提供用于克服上述问题或者至少部分地解决上述问题的一种数据流通信方法及系统。解决了FPGA缓存空间有限时,传输带宽很低的问题,提高FPGA到Linux非实时操作系统的PCIE实时传输带宽。
[0007]本专利技术提供了如下方案:
[0008]一种数据流通信方法,包括:
[0009]应用于Linux非实时操作系统,所述方法包括:
[0010]确定内核空间中大小为m KB的n个连续地址空间;
[0011]将每一个所述连续地址空间的信息制作成对应的循环传输索引表并存储到内核空间;所述循环传输索引表内容包括索引编号、起始地址、结束地址、连续空间大小、下一个循环传输索引表地址;
[0012]通过寄存器将第一个所述循环传输索引表发送至FPGA器件,以便所述FPGA器件通过DMA从所述内核空间读取所述循环传输索引表信息,并依据所述循环传输索引表控制DMA进行FPGA数据传输操作,并在完成传输后,将当前索引编号和对应编号的数据传输长度写入所述寄存器;
[0013]通过查询所述寄存器中的索引编号和数据传输长度的变化情况,判断所述FPGA器件当前是否发送数据;
[0014]确定索引编号发生变化,根据已读取和最新查询的索引编号,将FPGA数据从所述
循环传输索引表对应的所述地址空间中提取。
[0015]优选地:将最后一个所述循环传输索引表的所述下一个循环传输索引表地址填为第一个所述循环传输索引表地址,以便将确定的连续地址空间串成循环链表。
[0016]优选地:完成数据提取后,将已读取的所述循环传输索引表对应的索引编号更新为最新查询的索引编号。
[0017]优选地:所述n和m满足如下约束条件:
[0018][0019]式中:n为分配的传输空间个数,m为分配的单个传输空间的大小,B为PCIE每秒传输带宽,T
config
为单个传输空间DMA配置时间,T
maxDelay
为数据传输最大延时要求,T
maxThreadDelay
为Linux非实时系统线程调度最大时延,T
copy
为数据拷贝时间,(m
×
n)<CMA。
[0020]优选地:当FPGA数据已发送完毕,且当前循环传输索引表对应的实际数据传输未达到m KB时,将DMA实际传输数据长度和当前索引编号填入所述寄存器。
[0021]优选地:采用功能接口函数使循环传输索引表内核空间地址映射到用户空间地址,所述功能接口函数用于将循环传输索引表的多个独立地址空间依次映射到用户空间的一个连续地址空间上。
[0022]优选地:所述通过查询所述寄存器中的索引编号和数据传输长度的变化情况包括:
[0023]通过调用驱动程序的接口,在线程中实时查询所述寄存器的信息,所述信息包括索引编号和对应编号的数据传输长度。
[0024]优选地:确定索引编号发生变化,根据已读取和最新查询的索引编号,将FPGA数据从所述循环传输索引表对应的所述地址空间中提取包括:
[0025]确定索引编号发生变化时,遍历已读取的索引编号到当前索引编号,将对应的内存映射空间数据拷贝至应用空间缓冲区。
[0026]优选地:完成最新索引编号对应数据拷贝后,提取的数据交给应用程序的其他线程进行数据处理,当前数据传输线程释放CPU。
[0027]一种数据流通信系统,应用于Linux非实时操作系统,所述系统包括:
[0028]连续地址空间确定单元,用于确定内核空间中大小为m KB的n个连续地址空间;
[0029]循环传输索引表生成单元,用于将每一个所述连续地址空间的信息制作成对应的循环传输索引表并存储到内核空间;所述循环传输索引表内容包括索引编号、起始地址、结束地址、连续空间大小、下一个循环传输索引表地址;
[0030]循环传输索引表发送单元,用于通过寄存器将第一个所述循环传输索引表发送至FPGA器件,以便所述FPGA器件通过DMA从所述内核空间读取所述循环传输索引表信息,并依据所述循环传输索引表控制DMA进行FPGA数据传输操作,并在完成传输后,将当前索引编号和对应编号的数据传输长度写入所述寄存器;
[0031]发送数据判断单元,用于通过查询所述寄存器中的索引编号和数据传输长度的变化情况,判断所述FPGA器件当前是否发送数据;
[0032]FPGA数据提取单元,用于确定索引编号发生变化,根据已读取和最新查询的索引编号,将FPGA数据从所述循环传输索引表对应的所述地址空间中提取。
[0033]根据本专利技术提供的具体实施例,本专利技术公开了以下技术效果:
[0034]本申请实施例提供的一种数据流通信方法及系统,该方法解决了FPGA缓存资源有限时,Linux非实时操作系统与FPGA的PCIE传输带宽很低的问题。最终实现了Linux非实时操作系统与FPGA通过PCIE进行高速实时数据通信,降低了PCIE高速实时数据流通信中对FPGA缓存资源的依赖。在实际应用场景中,能达到降低成本,降低功耗的目的。
[0035]当然,实施本专利技术的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
[0036]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]图1是本专利技术实施例提供的一种数据流通信方法的流程图;
[003本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据流通信方法,其特征在于,应用于Linux非实时操作系统,所述方法包括:确定内核空间中大小为mKB的n个连续地址空间;将每一个所述连续地址空间的信息制作成对应的循环传输索引表并存储到内核空间;所述循环传输索引表内容包括索引编号、起始地址、结束地址、连续空间大小、下一个循环传输索引表地址;通过寄存器将第一个所述循环传输索引表发送至FPGA器件,以便所述FPGA器件通过DMA从所述内核空间读取所述循环传输索引表信息,并依据所述循环传输索引表控制DMA进行FPGA数据传输操作,并在完成传输后,将当前索引编号和对应编号的数据传输长度写入所述寄存器;通过查询所述寄存器中的索引编号和数据传输长度的变化情况,判断所述FPGA器件当前是否发送数据;确定索引编号发生变化,根据已读取和最新查询的索引编号,将FPGA数据从所述循环传输索引表对应的所述地址空间中提取。2.根据权利要求1所述的数据流通信方法,其特征在于,将最后一个所述循环传输索引表的所述下一个循环传输索引表地址填为第一个所述循环传输索引表地址,以便将确定的连续地址空间串成循环链表。3.根据权利要求1所述的数据流通信方法,其特征在于,完成数据提取后,将已读取的所述循环传输索引表对应的索引编号更新为最新查询的索引编号。4.根据权利要求1所述的数据流通信方法,其特征在于,所述n和m满足如下约束条件:(B
×
T
config
)<m<(B
×
(T
maxDelay

T
maxThreadDelay

T
copy
)(B
×
T
maxDelay
)
×
(m
×
n)<CMA式中:n为分配的传输空间个数,m为分配的单个传输空间的大小,B为PCIE每秒传输带宽,T
config
为单个传输空间DMA配置时间,T
maxDelay
为数据传输最大延时要求,T
maxThreadDelay
为Linux非实时系统线程调度最大时延,T
copy
为数据拷贝时间,(m
×...

【专利技术属性】
技术研发人员:彭杰文张自圃何向霄李泽银李中曹睿袁霞李龙杰陈润星魏鑫
申请(专利权)人:中国兵器装备集团自动化研究所有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1