一种基于Intel万兆网卡实现采样数据流低延迟传输的方法与流程

文档序号:14612716发布日期:2018-06-05 21:14阅读:489来源:国知局
一种基于Intel万兆网卡实现采样数据流低延迟传输的方法与流程

本发明属于软件无线电、卫星导航模拟器技术领域,特别是涉及基于Intel ES82599万兆网卡的采样数据生成软件与数模转换硬件之间的一种高速率、低延迟、低抖动的实时数据传输方法。



背景技术:

卫星导航信号模拟是一种模拟发射接收机收到的卫星射频信号的设备,它能够方便的对接收机等设备进行测试验证,是卫星导航领域重要的的测试设备之一。一个导航模拟器主要有两部分组成:数学仿真模块和信号生成模块。其中信号生成模块中的一个重要环节是按照一定采样率生成离散采样数字信号然后进行模数转换成模拟信号。

目前对于导航模拟器的实现主流实现方法是采用PC(Personal Computer)服务+信号生成设备的系统架构,如图1所示。

在这种实现架构中,数学仿真软件运行在PC服务上,完成卫星导航系统的仿真,生成动态控制参数下发给信号生成设备,信号生成设备中的FPGA(Field-Programmable Gate Array,缩写:FPGA)程序再使用这些动态参数来控制其内部的NCO(Numerically Controlled Oscillator,缩写:NCO)等部件产生离散采样数字信号,然后发送给DAC(Digital to Analog Converter,缩写:DAC)进行模数转换,最后产生射频信号发送出去。数学仿真软件和信号生成设备之间由于只传输动态参数等控制信息,通信数据量比较少,采用百兆网口、千兆网口、USB口等通信链路就可以满足通信需求,此外由于采样数据的生成都在FPGA中实现,对数学仿真软件和信号生成设备之间通信的抖动性、实时性要求也较低。但是这个系统架构有明显的缺点:

(1)开发难度大,调试困难。因为采样信号生成主要在FPGA中实现,对于信号体制或客户需求更改都要涉及到修改和调试FPGA程序。甚至不同体制信号的生成需要维护不同的硬件平台。

(2)灵活性不够。由于信号生成设备只能专用于卫星导航信号生成,如要用于矢量信号、干扰信号等场合时就需要修改硬件或嵌入式程序。使得信号生成设备不能作为一个通用的信号生成平台使用,不够灵活。

(3)扩展能力受限。一旦信号生成设备设计定型,那么这个硬件平台的资源(比如FPGA资源)就定了,如果功能实现需要增加FPGA等资源,就只能重新设计硬件。

基于以上缺点,一种基于软件无线电技术的导航模拟器系统架构被越来越多的设计人员采用,如图2所示。

在这种架构中,前述系统架构中信号生成设备FPGA实现的功能被移到PC服务器端实现,采用软件编程的方式实现或采用显卡(GPU)的通用硬件编程实现。而原来的信号生成设备就变为了一个功能简单、通用的数模转换设备。由PC服务器完成整个卫星模拟以及采样数据生成,最后再将采样数据下发给数模转换设备实现模拟射频信号的输出。这种架构基本上采用通用的硬件平台,很好的解决了前述架构中开发难度大、灵活性不够、扩展能力受限等缺点,受到越来越多设计人员的重视。

但是在基于软平台的导航模拟器系统架构中,有一个关键技术瓶颈就是PC服务器与数模转换设备的之间的数据传输问题。以100M带宽、16比特量化位、I/Q(In/Out,输入/输出端口)两个支路信号来计算,单路数模转换的数据率就达到了3.2Gbps(100Mx16bitx2),而一台导航模拟器一般要模拟四个频点的信号,也就是4路数模转换数据流,总通信数据量达到12.8Gbps,另外在一些高实时闭环仿真场合还要求数据的传输实时性达到毫秒级别,对于这种级别的数据传输量和实时性要求使用千兆网络和USB方式是无法实现的。

可采用的传输方式有PCIe(Peripheral Component Interconnect Express)和万兆光纤。采用PCIe方式需要在PC服务端定制传输板卡硬件、传输距离有限且技术复杂度较高。相对而言万兆光纤方案更具通用性,首先通用的万兆网卡市场更普及可以避免定制硬件,成本较低;其次使用光纤传输距离更远,抗干扰能力更强。但是一般使用万兆网卡传输的需要使用厂家提供的网卡驱动来进行数据的收发,甚至数据流还会经过操作系统的TCP/IP协议栈,这都会严重降低万兆光纤网口的数据传输效率和实时性,时延抖动很大。



技术实现要素:

本发明的目的是针对上述已有技术的不足,提出一种基于intel万兆网卡的高速率低延迟的采样数据传输方法。通过开发一个万兆网卡的底层驱动替换Intel厂商的原版驱动,采用共享内存方式实现零拷贝,使用intel ES82599芯片的分块DMA(Direct Memory Access,直接内存存取)引擎直接进行数据收发,有效的提高了数据发送的吞吐量和实时性。具体技术方案如下:

一种基于Intel万兆网卡实现采样数据流低延迟传输的方法,包括以下步骤:

(S1)加载驱动程序,初始化Intel万兆网卡硬件寄存器,使其处于混杂VLAN(Virtual Local Area Network,虚拟局域网)收发模式,并在主机内存中分配一个数据缓存块队列和一个发送包头队列;

(S2)将数据缓存块队列中的每个缓存节点映射到应用程序的内存空间;

(S3)在数模转换设备端实现每1ms向Intel万兆网卡发送时标报文;

(S4)驱动程序收到数模转换设备发送的1ms时标报文中断后,解析时标报文中的时间戳信息;

(S5)驱动程序设置1ms定时到达标记,并通过事件的方式通知应用程序开始产生1ms的采样数据;

(S6)根据时间戳信息从数据缓存块队列中获取对应该时刻的缓存节点数据;

(S7)将缓存节点数据以1000字节为单位进行划块,每一块对应一个以太网发送帧的包体;在每个包体前附着一个从所述发送包头队列中获取的发送包头数据,组成一个以太网发送帧;

(S8)逐一将每个以太网发送帧的包头和包体分别赋值给两个不同的DMA发送描述符,并将DMA发送描述符配置到Intel万兆网卡的DMA引擎寄存器空间,启动数据发送。

优选地,所述数据缓存块队列由多个数据缓存节点组成,每个数据缓存节点包括一片物理连续的1ms数据缓存区;所述发送包头队列由多个包头节点组成,每个包头节点包括一个以太网帧头和自定义数据头。

优选地,所述Intel万兆网卡为intel ES82599万兆网卡。

所述数据缓存块队列和发送包头队列均为FIFO(Fisrt In First Out,先入先出)队列;自定义数据为保证采样数据正确性的冗余数据;

与现有技术相比,上述技术方案具有以下优点:

本发明所提供的一种基于intel万兆网卡的高速率低延迟的采样数据传输方法,抛弃了intel原版底层驱动,传输数据流无需通过TCP/IP协议栈,利用内存映射直接将发送缓存映射给应用程序操作,并利用数模转换设备的定时时标来驱动数据发送,直接在中断例程中配置发送的DMA描述符,并采用每帧分片的发送方式,有效的提高了发送的吞吐量和减小了发送抖动延迟,实测单10G万兆光口的发送速率可以到达线速的98%,1ms数据块发送抖动小于20us,并且可以实现单台服务配置多块万兆网卡实现多达60Gpbs甚至上100Gbps的传输速率。本发明充分的利用了ES82599芯片的DMA引擎,采用内存零拷贝技术降低了PC服务器端的CPU负荷,解决了基于软平台的导航模拟源系统中大数据传输的关键问题。

附图说明

图1为本发明方法流程图;

图2为现有技术中基于硬平台的导航模拟器系统架构示意框图;

图3为现有技术中基于软平台的导航模拟器系统架构示意框图。

具体实施方式

本发明的核心是提供一种基于Intel万兆网卡的高速率低延迟的采样数据传输方法,可以满足基于软平台的导航模拟器中采样数据生成软件与数模转换设备之间高速率、低延迟、低抖动数据传输的要求。为了使本发明的上述目的、特征和优点能够更为显而易见,下面结合附图对本发明的具体实施方式做详细说明。

如图1所示,为本发明方法的流程示意图,以Intel ES82599万兆网卡为例,具体步骤如下:

(S1)加载驱动程序,初始化ES82599硬件寄存器,使其处于混杂VLAN收发模式。ES82599工作在混杂模式而非正常单点接收模式,只有在这种混杂工作模式下,ES82599网卡才能收到数模转换设备上报的定时时标报文。不同于普通的网卡驱动对于中断处理采用DPC处理的方式,为了提高接收和发送响应的实时性,本发明中开发的驱动程序对数据的收发处理均在中断例程中执行。

分配物理地址连续的1ms数据缓存块队列。物理地址连续的内存空间是ES82599 DMA引擎和应用程序共享同一片内存空间,实现内存零拷贝的基础。在数据量比较大的情况下,减少内存拷贝可以大大降低CPU的负荷,提高了系统性能。

同时由于传输数据除了有效的采样数据外还需要以太网帧帧头以及一些保证采样数据正确性的冗余数据,这些数据全部使用一个包头队列来存储,通过事先分配好包头队列和填充好相关字段,可以减少实际发送时每个包头重复填充数据的操作。包头包括64个字节,其中各字段按照如下格式自定义:

(S2)将1ms数据缓存块队列中的每个缓存节点空间映射到应用程序空间,使得应用程序(或GPU程序)可以像访问本地内存一样将生成的采样数据填充到1ms数据缓存中。实施例中可以采用使用Windwos WDK内存映射接口进行映射。

(S3)等待数模转换设备上报1ms定时时标报文,该时标报文包括时间戳计数,精确到1ms,用于驱动万兆网卡的定时发送。ms为毫秒单位。

(S4)接收到数模转换设备上报的1ms定时时标报文后,就进入中断处理例程,解析定时时标报文中的时间戳信息。

(S5)驱动程序设置1ms定时到达标记,并通过事件的方式通知应用程序开始产生1ms的采样数据;

(S6)根据时间戳信息从1ms发送缓存队列中获取对应该时刻的1ms缓存块节点数据;

(S7)将1ms缓存块数据按照1000字节划块,每一块对应一个以太网发送帧的包体部分;每个包体要组成以太网帧发送时需要对应一个发送帧头,这个帧头从发送包头队列中获取。包头中的Vlan号根据每个采样数据流的单独设置进行修改,包头中的Vlan号是指每个包的以太网帧头中的Vlan ID,在实施例中,相同Vlan ID包表示这些包是属于同一路数据流,因为一个万兆网接口可以同时传输多路数据流,通过Vlan ID来区分不同数据流。

(S8)将包头和包体分别对应各自一个发送DMA描述符。依次循环将1ms数据拆分得到的所有包体包头都各自对应一个发送DMA描述符;将所有的发送描述符写入ES82599的DMA发送引擎,启动发送数据。

根据驱动程序设置的1ms定时到达标记,并通过事件的方式通知应用程序开始产生下1ms的采样数据。中断例程处理完成,等待数模转换设备上报下1ms定时时标报文。

综上所述,本发明方法能够按照数模转换设备上报的1ms定时时标报文的驱动,定时、高速率、低抖动、低延迟的传输采样数据给数模转换设备,将发送缓存直接映射到引用程序空间,从而避免了数据从用户态到内核态空间的拷贝操作,提高了数据的传输效率。本发明直接在中断处理例程中进行发送描述的配置,而不是采用DPC(Delay Process Call,延迟处理调用)过程或内核线程的方式处理,可以很好的保证定时发送的抖动在10us量级,因此整个发送的实时延迟完全取决于数模转发设备上报的时标间隔。本发明将一个以太网帧分为包头和包体两步分,这两部分存储的物理地址不连续,如果采用一个连续的物理空间在进行DMA传输的就需要一次数据拷贝,而使用ES82599的分片DMA技术则可以避免一次数据拷贝操作。

以上实施例的说明只是用于帮助理解本发明及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些该进和修饰也落入了本发明权利要求的保护范围内。

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