本发明专利技术公开了一种基于PCIe的DMA数据传输方法及系统,该方法包括:接收上位机发送的控制指令;其中,控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;根据控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输;可见,本发明专利技术通过根据控制指令从多个DMA通道中选择对应的DMA通道对数据进行传输,可以使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe总线的链路进行独立传输,不同种类的数据可以使用单独的DMA通道进行传输,避免了对每一种数据进行封包解包等复杂的处理方式,减少了时间消耗,提升了用户体验。
【技术实现步骤摘要】
一种基于PCIe的DMA数据传输方法及系统
本专利技术涉及数据传输
,特别涉及一种基于PCIe的DMA数据传输方法及系统。
技术介绍
随着现代社会科技的发展,PCIe总线作为一种高性能局部总线广泛应用于计算机系统中,目前几乎所有商业级和工业级的计算机生产商都在其生产的计算机系统中提供了PCIe总线接口。这个总线标准将取代原来的PCI和AGP总线,成为新一代计算机系统的标准总线接口。PCIe总线具有带宽大、可扩展性强的优点,并且在系统软件上与PCI总线协议兼容。FPGA(Field-ProgrammableGateArray,现场可编程门阵列)是一种可编程电路元器件,随着集成电路(IC)制造工艺的提升,FPGA芯片中的资源越来越多,运算能力和功能越来越强大,因此,FPGA在信号采集、数据存储、雷达、通信等电子系统中的应用越来越广泛。当FPGA需要与计算机系统进行大量数据交换时,通常利用FPGA中的高速串行收发器来实现PCIe数据收发。当利用PCIe总线实现FPGA与计算机之间的数据传输时,通常采用直接内存存取(DMA,DirectMemoryAccess)传输方式来加快数据传输速度,降低CPU负荷。DMA控制器可以将数据从一个地址空间(计算机)搬移到另一个地址空间(FPGA),搬移过程不需要CPU参与,因此节省了CPU资源。现有技术中,市场上基于PCIe的DMA数据传输方法基本上都是单通道的,但当数据种类较多时,单通道DMA传输无法针对各种数据做单独处理,因此针对多种数据的应用需要对每一种数据进行封包解包,标记数据种类和长度等信息,处理起来比较复杂,耗费时间较长,不利于用户体验。因此,如何通过PCIe总线使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe链路独立传输,是现今急需解决的问题。
技术实现思路
本专利技术的目的是提供一种基于PCIe的DMA数据传输方法及系统,以使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe链路独立传输。为解决上述技术问题,本专利技术提供一种基于PCIe的DMA数据传输方法,包括:接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。可选的,所述根据所述控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输,包括:对所述控制指令进行解帧和命令解析,获取从事务请求;对所述从事务请求进行处理,生成DMA参数;根据所述DMA参数,生成DMA控制信号;根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写。可选的,所述根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写,包括:若所述DMA控制信号中包含DMA读指令,则生成读请求包;将所述读请求包发送至所述上位机;通过所述PCIe总线接收所述上位机发送的带有数据的读完成包,并将所述读完成包中的所述数据写入到所述DMA控制信号对应的DMA通道的FIFO中;其中,所述读完成包中的所述数据为所述读请求包对应的所述上位机的缓存空间中的数据;若所述DMA控制信号中包含DMA写指令,则将所述DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过所述PCIe总线发送至所述上位机;其中,每个所述DMA通道均存在独立的FIFO。可选的,所述接收上位机发送的控制指令之前,还包括:所述上位机对所述缓存空间进行配置。可选的,所述根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输之后,还包括:传输结束后,产生中断信息;将所述中断信息以MSI中断方式或继承中断INTx方式发送到上位机。此外,本专利技术还提供了一种基于PCIe的DMA数据传输系统,包括:接收模块,用于接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;DMA控制模块,用于根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。可选的,所述DMA控制模块,包括:从事务子模块,用于对所述控制指令进行解帧和命令解析,获取从事务请求;从事务管理子模块,用于对所述从事务请求进行处理,生成DMA参数;DMA管理子模块,用于根据所述DMA参数,生成DMA控制信号;DMA核子模块,用于根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写。可选的,所述DMA核子模块,包括:读请求包生成单元,用于若所述DMA控制信号中包含DMA读指令,则生成读请求包;发送单元,用于将所述读请求包发送至所述上位机;DMA读单元,通过所述PCIe总线接收所述上位机发送的带有数据的读完成包,并将所述读完成包中的所述数据写入到所述DMA控制信号对应的DMA通道的FIFO中;其中,所述读完成包中的所述数据为所述读请求包对应的所述上位机的缓存空间中的数据;DMA写单元,用于若所述DMA控制信号中包含DMA写指令,则将所述DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过所述发送单元发送至所述上位机;其中,每个所述DMA通道均存在独立的FIFO。可选的,所述DMA核子模块,还包括:中断生成单元,用于传输结束后,产生中断信息;所述从事务管理子模块,还包括:中断控制单元,用于将所述中断信息以MSI中断方式或继承中断INTx方式发送到上位机。可选的,该系统还包括:PCIeIP核模块,用于将所述PCIe总线上的高速串行差分电信号转换为FPGA内部的逻辑信号。本专利技术所提供的一种基于PCIe的DMA数据传输方法,包括:接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立;可见,本专利技术通过根据控制指令从多个DMA通道中选择对应的DMA通道对数据进行传输,可以使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe总线的链路进行独立传输,不同种类的数据可以使用单独的DMA通道进行传输,避免了对每一种数据进行封包解包等复杂的处理方式,减少了时间消耗,提升了用户体验。此外,本专利技术还提供了一种基于PCIe的DMA数据传输系统,同样具有上述有益效果。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例所提供的一种基于PCIe的DMA数据传输方法的流程图;图2为本专利技术实施例所提供的另一种基于PCIe的DMA数据传输方法的流程图;图3为本专利技术本文档来自技高网...

【技术保护点】
一种基于PCIe的DMA数据传输方法,其特征在于,包括:接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。
【技术特征摘要】
1.一种基于PCIe的DMA数据传输方法,其特征在于,包括:接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。2.根据权利要求1所述的基于PCIe的DMA数据传输方法,其特征在于,所述根据所述控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输,包括:对所述控制指令进行解帧和命令解析,获取从事务请求;对所述从事务请求进行处理,生成DMA参数;根据所述DMA参数,生成DMA控制信号;根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写。3.根据权利要求2所述的基于PCIe的DMA数据传输方法,其特征在于,所述根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写,包括:若所述DMA控制信号中包含DMA读指令,则生成读请求包;将所述读请求包发送至所述上位机;通过所述PCIe总线接收所述上位机发送的带有数据的读完成包,并将所述读完成包中的所述数据写入到所述DMA控制信号对应的DMA通道的FIFO中;其中,所述读完成包中的所述数据为所述读请求包对应的所述上位机的缓存空间中的数据;若所述DMA控制信号中包含DMA写指令,则将所述DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过所述PCIe总线发送至所述上位机;其中,每个所述DMA通道均存在独立的FIFO。4.根据权利要求3所述的基于PCIe的DMA数据传输方法,其特征在于,所述接收上位机发送的控制指令之前,还包括:所述上位机对所述缓存空间进行配置。5.根据权利要求1至4任一项所述的基于PCIe的DMA数据传输方法,其特征在于,所述根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输之后,还包括:传输结束后,产生中断信息;将所述中断信息以MSI中断方式或继承中断INTx方式发送到上位机。6.一种基于...
【专利技术属性】
技术研发人员:谢丽佳,
申请(专利权)人:湖南博匠信息科技有限公司,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。