高精度记录网卡接收时间的方法

文档序号:6373743阅读:197来源:国知局
专利名称:高精度记录网卡接收时间的方法
高精度记录网卡接收时间的方法
技术领域
本发明涉及ー种高精度记录网卡接收时间的方法。
背景技木现有网卡收包时间的測量方法,采用CPU软处理的方式,具体为网卡芯片收到数据包后,会产生中断,CPU在响应中断后,判断收到的数据包是否正确,并记录下CPU响应中断时的时间。这个响应时间来自CPU内部一个定时器的时间。从网卡中断到CPU响应终端这两个动作间的时间被忽略了,这个时间值受CPU负载影响非常大,随CPU负载率的变化而变化,CPU运行负担重时,容易出现记录时间偏差大的问题,而且測量时间值是随机的。如
果CPU是ARM类型的CPU,这个时间能达到几十到几百微秒,如果是DSP类型的CPU,则时间也会达到几到几十微秒。对于数据包间隔时间只有几百微秒的情况来说,误差几十微秒是难以容忍的。

发明内容本发明要解决的技术问题,在于提供ー种高精度记录网卡接收时间的方法。本发明是这样实现的高精度记录网卡接收时间的方法,包括如下步骤步骤I、网卡在收到数据包时,数据接收中断从低电平跳变到高电平,一整形电路捕获该上升沿信号并输出ー单脉冲触发信号;步骤2、所述单脉冲触发信号触发ー时间发生器中的时间记录器,所述时间记录器立即将所述时间发生器的当前时间记录为ー时标信息,然后再将所述时标信息发送至FIFO缓冲区;所述时标信息精确到微秒;步骤3、CPU通过总线读取数据包的内容,同时CPU通过总线访问所述FIFO缓冲区,读取所述时标信息,获得网卡接收所述数据包的时间,即获得对应所述数据包的时标信
O进ー步地,所述时间发生器通过一年月日时分秒计数器和一 O. I微秒计数器产生精度为O. I微秒的时间;所述时间发生器中年月日时分秒计数器的当前时间由一配置寄存器配置,CPU通过总线访问所述配置寄存器配置当前时间;同时,所述年月日时分秒计数器和O. I微秒计数器的驱动时钟来自内部有源钟振或外部秒脉冲信号,通过所述配置寄存器设置驱动时钟的来源内部有源钟振或外部秒脉冲信号。进ー步地,所述年月日时分秒计数器和O. I微秒计数器的驱动时钟来自内部有源钟振时,所述O. I微秒计数器的驱动时钟是所述内部有源钟振经第一分频器产生的IOMHz的信号,所述年月日时分秒计数器的驱动时钟是所述内部有源钟振经第二分频器产生的内部秒脉冲信号;当内部秒脉冲信号到来时,所述O. I微秒计数器清零。进ー步地,所述年月日时分秒计数器和O. I微秒计数器的驱动时钟来自外部秒脉冲信号时,所述O. I微秒计数器的驱动时钟是所述外部秒脉冲信号依次经过脉冲宽度计数器和补偿倍频器后产生的IOMhz信号,所述年月日时分秒计数器的驱动时钟由外部秒脉冲
信号直接提供。进ー步地,所述总线为16位并行总线。本发明具有如下优点在网卡产生数据接收中断的同时,立即记录该中断所对应的时标,这个时标包括年、月、日、时、分、秒、微秒信息,送入FIFO缓冲区,这样即使CPU没有立即响应该中断,该中断所对应的时标已经完整的记录下来。CPU在响应中断的时候,读取数据包内容,同时读取时间记录器内部FIFO即可获得对应数据包的精确时标,这个时标精度优于O. I微秒(分辨率16. 67纳秒)。 本发明记录网卡接收时间不再依赖CPU,因此CPU代码的调整变化对实际的測量精度没有影响。即使原来使用实时性很差的ARM CPU,采用本发明记录方法后,同样可以得到非常高的时间精度,且CPU不再需要额外开销时间变量,并且能够自动更新,降低了 CPU占用率,因此CPU也不再需要开销ー个定时器来获得微秒量级的信息。

下面參照附图结合实施例对本发明作进ー步的说明。图I为本发明高精度记录网卡接收时间的方法的示意图。图2为本发明高精度记录网卡接收时间的方法的流程示意图。
具体实施方式请參阅图I和图2所示,对本发明进行详细阐述。高精度记录网卡接收时间的方法,包括如下步骤步骤I、网卡在收到数据包时,数据接收中断从低电平跳变到高电平,一整形电路捕获该上升沿信号并输出ー单脉冲触发信号;当内部有源钟振为60MHz钟振时,所述脉冲信号的宽度为16. 67纳秒;步骤2、所述单脉冲触发信号触发ー时间发生器中的时间记录器,所述时间记录器立即将所述时间发生器的当前时间记录为ー时标信息,然后再将所述时标信息发送至FIFO缓冲区;所述时标信息精确到微秒;所述时间记录器可以把时标信息组帧成4个字(双字节)的时标,第一字为低16位微秒信息,第二字高8位微秒信息和年信息,第三字为秒和分信息,第四字为月日时信息,所述组帧方式可自定义。所述FIFO缓冲区可以是IKbyteFIFO,能够存储250个时标信息;步骤3、CPU通过总线读取数据包的内容,同时CPU通过总线访问所述FIFO缓冲区,读取所述时标信息,获得网卡接收所述数据包的时间,即获得对应所述数据包的时标信息。所述总线可以是16位总线,CPU与所述FIFO缓冲区采用16位并行总线的方式进行通讯时,其中包括10位地址线、16位数据线、I个片选线、I个写使能、I个读使能信号。4个字的时标信息CPU只需要通过总线访问四次FIFO缓冲区即可获得。CPU还通过总线从网卡读取数据包,然后整合数据包内容和网卡接收数据包的时间,传给系统。在本实施例中,所述时间发生器通过一年月日时分秒计数器和一 0. I微秒计数器产生精度为0. I微秒的时间。所述年月日时分秒计数器能够从2000年I月I日O时O分O秒计数到2099年12月31日23时59分59秒,包含多个60进制和24进制计数器,所述计数器设计上能够自动识别闰年,如果为闰年,则自动増加2月29日。所述时间发生器中年月日时分秒计数器的当前时间由一配置寄存器配置,CPU可通过总线访问所述配置寄存器配置当前时间。同时,所述年月日时分秒计数器和O. I微秒计数器的驱动时钟可以来自内部有源钟振或外部秒脉冲信号,通过所述配置寄存器设置驱动时钟的来源内部有源钟振或外部秒脉冲信号。现以内部有源钟振为60MHz的高稳定度钟振为例,其精度为O. 5PPM,相当于I秒钟的时间,最多偏差O. 5微秒,有源钟振自身由于环境因素带来的漂移非常小。当所述年月日时分秒计数器和O. I微秒计数器的驱动时钟来自内部有源钟振时所述O. I微秒计数器的驱动时钟是所述内部有源钟振经第一分频器产生的IOMHz的信号,
当所述内部有源钟振为60MHz的钟振时,所述第一分频器为六分频器,所述IOMHz的信号使得ー个计数值正好对应O. I微秒;所述年月日时分秒计数器的驱动时钟是所述内部有源钟振经第二分频器产生的内部秒脉冲信号,所述第二分频器为60000000分频器,即将60MHz时钟变成IHz时钟,即内部秒脉冲信号。当所述年月日时分秒计数器的当前时间设置成功后,在内部秒脉冲驱动下自动更新计数。当内部秒脉冲信号到来时,所述O. I微秒计数器清零。当所述年月日时分秒计数器和O. I微秒计数器的驱动时钟来自外部秒脉冲信号时所述O. I微秒计数器的驱动时钟是所述外部秒脉冲信号依次经过脉冲宽度计数器和补偿倍频器后产生的IOMhz信号;所述脉冲宽度计数器获取外部秒脉冲信号两个上升沿之间的间隔时间(即秒脉冲时间宽度)在60MHz时钟驱动下的计数值。假如外部秒脉冲信号与内部秒脉冲信号一致,则计数值为60000000 ;如果外部秒脉冲宽度比内部秒脉冲宽度宽I微秒,1/0. 01667=60,则计数值为60000060 ;如果外部秒脉冲宽度比内部秒脉冲宽度窄I微秒,则计数值为59999940。所述补偿倍频器,根据脉冲宽度计数器的值,将外部秒脉冲信号,补偿倍频成IOMHz信号。如果计数值刚好为60000000,则倍频器在60MHz时钟驱动下自动计数到6后,就输出ー个脉冲,因此对应一秒钟,有10000000个脉冲。如果计数值为60000060,这个值除以10000000得到的值是6. 000006,不是整数,不能按普通的方式进行处理。因此补偿倍频器每间隔1000000次计数吋,就把计数宽度改成7,其他时候仍使用宽度6,这样最终一秒钟仍然输出1000000个秒脉沖。因此,所述补偿倍频器的输出是ー个脉冲间隔(上一个脉冲与下一个脉冲的时间宽度)可调的IOMHz信号,是通过外部秒脉冲宽度计算还原出来的。当所述年月日时分秒计数器的当前时间设置成功后,在内部秒脉冲信号或外部秒脉冲驱动下自动更新计数。当内部脉秒冲信号或外部秒脉冲信号到来时,所述年月日时分秒计数器使时钟跳过I秒,且将所述O. I微秒计数器清零,从O微秒开始计吋。需要说明的是,在本发明实施前,需要进行初始化工作,首先通过CPU访问总线对配置寄存器进行配置,配置寄存器再将当前时间配置到所述年月日时分秒计数器,然后通过配置寄存器设置驱动时间的来源,最后打开所述年月日时分秒计数器和O. I微秒计数器。对于网卡,首先要初始化网卡寄存器,再清所述FIFO缓冲区,然后打开网卡接收中断。本发明在网卡产生数据接收中断的同时,立即记录该中断所对应的时标,这个时标包括年、月、日、时、分、秒、微秒信息,送入FIFO缓冲区,这样即使CPU没有立即响应该中断,该中断所对应的时标已经完整的记录下来。CPU在响应中断的时候,读取数据包内容,同时读取时间记录器内部FIFO即可获得对应数据包的精确时标,这个时标精度优于O. I微秒(分辨率16. 67纳秒)本发明记录网卡接收时间不再依赖CPU,因此CPU代码的调整变化对实际的測量精度没有影响。即使原来使用实时性很差的ARM CPU,采用本发明记录方法后,同样可以得到非常高的时间精度,且CPU不再需要额外开销时间变量,并且能够自动更新,降低了 CPU占用率,因此CPU也不再需要开销ー个定时器来获得微秒量级的信息。虽然以上描述了本发明的具体实施方式
,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本 领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
权利要求
1.高精度记录网卡接收时间的方法,其特征在于包括如下步骤 步骤I、网卡在收到数据包时,数据接收中断从低电平跳变到高电平,一整形电路捕获该上升沿信号并输出一单脉冲触发信号; 步骤2、所述单脉冲触发信号触发一时间发生器中的时间记录器,所述时间记录器立即将所述时间发生器的当前时间记录为一时标信息,然后再将所述时标信息发送至FIFO缓冲区;所述时标信息精确到微秒; 步骤3、CPU通过总线读取数据包的内容,同时CPU通过总线访问所述FIFO缓冲区,读取所述时标信息,获得网卡接收所述数据包的时间,即获得对应所述数据包的时标信息。
2.根据权利要求I所述的高精度记录网卡接收时间的方法,其特征在于所述时间发生器通过一年月日时分秒计数器和一 O. I微秒计数器产生精度为O. I微秒的时间;所述时间发生器中年月日时分秒计数器的当前时间由一配置寄存器配置,CPU通过总线访问所述配置寄存器配置当前时间;同时,所述年月日时分秒计数器和O. I微秒计数器的驱动时钟来自内部有源钟振或外部秒脉冲信号,通过所述配置寄存器设置驱动时钟的来源内部有源钟振或外部秒脉冲信号。
3.根据权利要求2所述的高精度记录网卡接收时间的方法,其特征在于所述年月日时分秒计数器和O. I微秒计数器的驱动时钟来自内部有源钟振时,所述O. I微秒计数器的驱动时钟是所述内部有源钟振经第一分频器产生的IOMHz的信号,所述年月日时分秒计数器的驱动时钟是所述内部有源钟振经第二分频器产生的内部秒脉冲信号;当内部秒脉冲信号到来时,所述O. I微秒计数器清零。
4.根据权利要求2所述的高精度记录网卡接收时间的方法,其特征在于所述年月日时分秒计数器和O. I微秒计数器的驱动时钟来自外部秒脉冲信号时,所述O. I微秒计数器的驱动时钟是所述外部秒脉冲信号依次经过脉冲宽度计数器和补偿倍频器后产生的IOMHz信号,所述年月日时分秒计数器的驱动时钟由外部秒脉冲信号直接提供。
5.根据权利要求I所述的高精度记录网卡接收时间的方法,其特征在于所述总线为16位并行总线。
全文摘要
本发明提供一种高精度记录网卡接收时间的方法,首先网卡在收到数据包时,数据接收中断从低电平跳变到高电平,一整形电路捕获该上升沿信号并输出一单脉冲触发信号;其次,所述单脉冲触发信号触发一时间发生器中的时间记录器,所述时间记录器立即将所述时间发生器的当前时间记录为一时标信息,然后再将所述时标信息发送至FIFO缓冲区;最后CPU通过总线读取数据包的内容,同时CPU通过总线访问所述FIFO缓冲区,读取所述时标信息,获得网卡接收所述数据包的时间,即获得对应所述数据包的时标信息。本发明在网卡产生数据接收中断的同时,立即记录该中断所对应的时标,记录时间精度高,且降低了CPU占用率。
文档编号G06F11/34GK102855172SQ20121025806
公开日2013年1月2日 申请日期2012年7月24日 优先权日2012年7月24日
发明者倪时龙, 王云茂, 陈晶 申请人:福建亿榕信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1