一种基于FPGA的多任务处理系统及方法技术方案

技术编号:21771279 阅读:28 留言:0更新日期:2019-08-03 21:27
本发明专利技术提供一种基于FPGA的多任务处理系统及方法,所述系统包括:FPGA芯片、主机和PCIE接口,PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;FPGA芯片包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;DMA模块通过多个虚拟通道与主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;通道任务分配器用于接收各个虚拟通道的数据包并将其分配给任务处理器;任务处理器用于处理各虚拟通道中的数据包;通道任务收集器用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道。本发明专利技术通过构建多个虚拟通道能够有效提高数据传输效率,同时,解决了传统单通道易出现数据拥塞的问题。

A Multitask Processing System and Method Based on FPGA

【技术实现步骤摘要】
一种基于FPGA的多任务处理系统及方法
本专利技术涉及计算机
,具体涉及一种基于FPGA的多任务处理系统及方法。
技术介绍
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。PCIE(peripheralcomponentinterconnectexpress)作为一种高速数据传输总线和接口标准,通常用于连接FPGA与主机处理器,由于PCIE本身不支持多通道数据传输和处理,当系统中有大量任务需要传输处理时,单通道数据传输容易造成数据拥塞的现象,并且DMA在读/写数据时是依序进行的,不利于对数据传输和处理的分级管理。另外,如果有大量的某任务数据占据数据流的前端,则只有将该任务数据传输完成后,才能传输其它任务的数据,容易造成FPGA中的部分处理单元处于闲置状态,资源利用率不高。
技术实现思路
:本专利技术针对上述问题,有必要提供一种基于FPGA的多任务处理系统及方法,支持多通道数据传输,实现对多任务数据的快速、有序的传输及处理。本专利技术第一方面提出一种基于FPGA的多任务处理系统,包括:FPGA芯片、主机和PCIE接口,所述PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;所述FPGA芯片,包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;所述DMA模块,通过多个虚拟通道与所述主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;所述通道任务分配器,用于接收各个虚拟通道的数据包并将其分配给任务处理器;所述任务处理器,包括多个处理单元,多个处理单元分别接收由所述通道任务分配器分配得到的数据包并进行处理;所述通道任务收集器,用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道。进一步的,所述主机包括:多个主机发送缓冲区和多个主机接收缓冲区,且多个主机发送缓冲区、多个主机接收缓冲区及多个虚拟通道一一对应;多个主机发送缓冲区,分别用于缓存待传输至FPGA芯片未处理的数据包;多个主机接收缓冲区,分别用于接收经由FPGA芯片处理过的数据包。进一步的,所述FPGA芯片还包括:多个虚拟通道命令字FIFO,且多个虚拟通道命令字FIFO与多个虚拟通道、多个主机发送缓冲区一一对应;多个虚拟通道命令字FIFO,分别用于指示DMA模块在对应的主机发送缓冲区中是否存在需要传输的数据包。进一步的,所述FPGA芯片还包括:多个FPGA接收缓冲区和多个FPGA发送缓冲区,且多个FPGA接收缓冲区、多个FPGA发送缓冲区及多个虚拟通道一一对应;多个FPGA接收缓冲区,用于接收DMA模块传输的数据包并进行缓存处理,以等待通道任务分配器读取;多个FPGA发送缓冲区,用于接收通道任务收集器传输的数据包并进行缓存处理,以等待DMA模块读取。进一步的,所述FPGA芯片还包括:多个虚拟通道状态字FIFO,且多个虚拟通道状态字FIFO与多个虚拟通道、多个FPGA发送缓冲区一一对应;多个虚拟通道状态字FIFO,分别用于指示DMA模块在对应的FPGA发送缓冲区中是否存在需要传输的数据包。进一步的,所述FPGA芯片还包括:多个接收发送基地址寄存器组,且多个接收发送基地址寄存器组与多个虚拟通道一一对应;多个接收发送基地址寄存器组,分别用于存放多个主机发送缓冲区和多个主机接收缓冲区的基地址。进一步的,多个接收发送基地址寄存器组采用指示寄存器、发送数据基地址和接收数据基地址相结合的方法,以完成对寄存器组的赋值。进一步的,每个虚拟通道支持多任务叠加传输,即每个虚拟通道中有不同任务类型的数据包。本专利技术第二方面还提出一种基于FPGA的多任务处理方法,应用于上述多任务处理系统,包括:主机将多个待处理数据包分别存放于对应的主机发送缓冲区中,并写入对应的虚拟通道命令字FIFO;DMA模块根据虚拟通道命令字FIFO指示,按照预定的优先级依序读取多个主机发送缓冲区中的待处理数据包,并将其传输至对应的FPGA接收缓冲区;通道任务分配器读取所有FPGA接收缓冲区中的待处理数据包并将其分配给任务处理器不同的处理单元;各处理单元分别根据预定算法对待处理数据包进行处理;通道任务收集器收集各处理单元处理过的数据包,并将其分配至对应的FPGA发送缓冲区,写入对应的虚拟通道状态字FIFO;DMA模块根据虚拟通道状态字FIFO指示读取所有FPGA发送缓冲区中的处理过的数据包,并将其按照预定的优先级依序写入至对应的主机接收缓冲区。进一步的,在主机将多个待处理数据包分别存放于对应的主机发送缓冲区中之前,还包括:在主机内为每一个虚拟通道申请主机发送缓冲区和主机接收缓冲区;将所述主机发送缓冲区基地址和主机接收缓冲区基地址发送至FPGA芯片,并锁存在接收发送基地址寄存器组中,以供启动各虚拟通道的DMA读写操作时使用。本专利技术具有突出的实质性特点和显著的进步,具体的说:(1)在需要有不同任务处理时,本专利技术的主机与FPGA芯片之间通过PCIE接口,实现了多虚拟通道传输的方式进行数据交换,DMA模块根据不同虚拟通道的优先级实现主机与FPGA芯片各虚拟通道之间数据快速有序传输,相比单通道而言,提高了任务处理器的利用率,进一步提高了接口卡的效率。(2)本专利技术的DMA模块能够按照预定的优先级依序读/写操作,实现对多个虚拟通道的数据传输管理,使多个虚拟通道在传输数据时更加有序,解决了单通道传输数据易于造成数据拥塞的现象。(3)本专利技术通过设定DMA模块对各虚拟通道的读/写优先级控制,可以合理分配不同虚拟通道的数据包至任务处理器中的各处理单元,使得各处理单元的资源利用率最大化,避免因局部处理单元未能及时分配到数据包而造成资源浪费的问题。(4)本专利技术的通道任务分配器将接收缓冲区中数据包按照任务类型的不同分配给任务处理器进行任务的处理,并将处理后的数据包发送给通道任务收集器,通道任务收集器按照任务编号和虚拟通道的编号将处理后的数据包分配至原虚拟通道(即本条数据包流入通道任务分配器时所运用的虚拟通道),使得每个虚拟通道可以传输多个任务,支持多任务叠加传输,满足多通道/多用户、多任务处理场景的需求,进一步满足针对复杂任务的处理需求。(5)本专利技术中的任务处理器可以根据任务分配器分配的任务,同时支持多种任务的并行处理,提高系统处理多种任务的效率。(6)本专利技术的主机通过向虚拟通道命令字FIFO写入一个32位的命令字即可启动DMA模块,启动DMA模块的过程仅需要主机与FPGA芯片一次I/O交互,有效减少了主机与FPGA芯片之间的I/O交互次数,进一步提高传输效率。附图说明:图1示出本专利技术一种基于FPGA的多任务处理系统的框图。图2示出本专利技术一种基于FPGA的多任务处理方法的流程图。具体实施方式:为了使本专利技术能够更加清楚,下面通过具体实施方式,对本专利技术的技术方案做进一步的详细描述。图1示出本专利技术一种基于FPGA的多任务处理系统的框图。如图1所示,本专利技术第一方面提出一种基于FPGA的多任务处理系统,包括:FPGA芯片、主机和PCIE接口,所述本文档来自技高网...

【技术保护点】
1.一种基于FPGA的多任务处理系统,其特征在于,包括:FPGA芯片、主机和PCIE接口,所述PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;所述FPGA芯片,包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;所述DMA模块,通过多个虚拟通道与所述主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;所述通道任务分配器,用于接收各个虚拟通道的数据包并将其分配给任务处理器;所述任务处理器,包括多个处理单元,多个处理单元分别接收由所述通道任务分配器分配得到的数据包并进行处理;所述通道任务收集器,用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道。

【技术特征摘要】
1.一种基于FPGA的多任务处理系统,其特征在于,包括:FPGA芯片、主机和PCIE接口,所述PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;所述FPGA芯片,包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;所述DMA模块,通过多个虚拟通道与所述主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;所述通道任务分配器,用于接收各个虚拟通道的数据包并将其分配给任务处理器;所述任务处理器,包括多个处理单元,多个处理单元分别接收由所述通道任务分配器分配得到的数据包并进行处理;所述通道任务收集器,用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道。2.根据权利要求1所述的一种基于FPGA的多任务处理系统,其特征在于,所述主机包括:多个主机发送缓冲区和多个主机接收缓冲区,且多个主机发送缓冲区、多个主机接收缓冲区及多个虚拟通道一一对应;多个主机发送缓冲区,分别用于缓存待传输至FPGA芯片未处理的数据包;多个主机接收缓冲区,分别用于接收经由FPGA芯片处理过的数据包。3.根据权利要求2所述的一种基于FPGA的多任务处理系统,其特征在于,所述FPGA芯片还包括:多个虚拟通道命令字FIFO,且多个虚拟通道命令字FIFO与多个虚拟通道、多个主机发送缓冲区一一对应;多个虚拟通道命令字FIFO,分别用于指示DMA模块在对应的主机发送缓冲区中是否存在需要传输的数据包。4.根据权利要求1所述的一种基于FPGA的多任务处理系统,其特征在于,所述FPGA芯片还包括:多个FPGA接收缓冲区和多个FPGA发送缓冲区,且多个FPGA接收缓冲区、多个FPGA发送缓冲区及多个虚拟通道一一对应;多个FPGA接收缓冲区,用于接收DMA模块传输的数据包并进行缓存处理,以等待通道任务分配器读取;多个FPGA发送缓冲区,用于接收通道任务收集器传输的数据包并进行缓存处理,以等待DMA模块读取。5.根据权利要求4所述的一种基于FPGA的多任务处理系统,其特征在于,所述FPGA芯片还包括:多个虚拟通道状态字FIFO,且多个虚拟通道状态字FIFO与多个虚拟通道...

【专利技术属性】
技术研发人员:苏庆会吴世勇王斌李银龙杨光余军武元杰王凯霖徐诺
申请(专利权)人:郑州信大捷安信息技术股份有限公司
类型:发明
国别省市:河南,41

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

1