一种基于片上网络的多通道数据采集的数据缓存方法转让专利

申请号 : CN202110569709.3

文献号 : CN113296731B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 姜书艳吕若莹赵寅帆黄乐天

申请人 : 电子科技大学

摘要 :

本发明公开了一种基于片上网络的多通道数据采集的数据缓存方法,该方法包括对片上网络输出的数据包进行解包,得到包括传感器数据、传感器ID和时间戳的解包数据;将包括多个主存RAM的RAM组按照UDP周期顺序依次将传感器数据写入各个主存RAM;在每个主存RAM写入数据的UDP周期后等待一个UDP周期,再在下一UDP周期将所有数据读出,并在下一UDP周期将所有数据清零后继续写入数据。本发明能够实现多路数据在经过片上网络传输后数据的有序缓存,以及同步传输多个不同采样速率的传感器的采集数据。

权利要求 :

1.一种基于片上网络的多通道数据采集的数据缓存方法,其特征在于,包括以下步骤:S1、对片上网络输出的数据包进行解包,得到包括传感器数据、传感器ID和时间戳的解包数据;

S2、将包括多个主存RAM的RAM组按照UDP周期顺序依次将传感器数据写入各个主存RAM;具体包括:设置四个相同的第一主存RAM、第二主存RAM、第三主存RAM和第四主存RAM组成RAM组;

在第一个UDP周期将传感器数据写入第一主存RAM;

在第二个UDP周期将传感器数据写入第二主存RAM;

在第三个UDP周期将传感器数据写入第三主存RAM;

在第四个UDP周期将传感器数据写入第四主存RAM;

S3、在每个主存RAM写入数据的UDP周期后等待一个UDP周期,再在下一UDP周期将所有数据读出,并在下一UDP周期将所有数据清零后返回步骤S2。

2.根据权利要求1所述的基于片上网络的多通道数据采集的数据缓存方法,其特征在于,所述步骤S2中将传感器数据写入各个主存RAM具体包括:提取传感器数据对应时间戳的高两位译码作为片选信号;

利用传感器ID划分基地址;

提取传感器数据对应时间戳的低十一位译码作为地址偏移;

生成传感器存储地址;

按存储地址存储传感器数据。

3.根据权利要求2所述的基于片上网络的多通道数据采集的数据缓存方法,其特征在于,所述传感器存储地址的计算公式具体为:存储地址=数据通道数*传感器ID+时间戳低十一位译码。

4.根据权利要求2所述的基于片上网络的多通道数据采集的数据缓存方法,其特征在于,所述步骤S2中按存储地址存储传感器数据时采用零阶保持插值法对传感器数据进行处理。

5.根据权利要求4所述的基于片上网络的多通道数据采集的数据缓存方法,其特征在于,所述采用零阶保持插值法对传感器数据进行处理具体包括:按存储地址存储当前到达的传感器数据后,将当前存储的传感器数据依次存储到后续存储地址,直到下一次传感器数据到达时继续存储新到达的传感器数据。

6.根据权利要求4或5所述的基于片上网络的多通道数据采集的数据缓存方法,其特征在于,所述步骤S2中按存储地址存储传感器数据之前还包括:利用主存RAM控制器生成数据有效位,并添加到传感器数据的最高位;

利用数据寄存器将传感器数据读取至数据缓存模块;

利用数据寄存器判断传感器数据的最高位是否位数据有效位;若是,则将该传感器数据写入数据寄存器的对应存储地址;否则将该传感器数据不写入数据寄存器。

7.根据权利要求2所述的基于片上网络的多通道数据采集的数据缓存方法,其特征在于,所述步骤S3具体包括:设置每个主存RAM在接收数据、等待最慢数据、UDP传输和清零的四个工作状态中依次切换。

8.根据权利要求7所述的基于片上网络的多通道数据采集的数据缓存方法,其特征在于,所述步骤S3中每个主存RAM在四个工作状态中依次切换具体包括:在每个主存RAM开始写入数据的一个UDP周期执行接收数据工作状态,开始接收传感器数据;

在每个主存RAM执行接收数据工作状态后的一个UDP周期执行等待最慢数据工作状态,等待最慢到达的传感器数据;

在每个主存RAM执行等待最慢数据工作状态后的一个UDP周期执行UDP传输工作状态,将主存RAM写入的所有传感器数据读出,送往外部网络节点进行UDP传输;

在每个主存RAM执行UDP传输工作状态后的一个UDP周期执行清零工作状态,将主存RAM写入的所有传感器数据清零,并返回执行接收数据工作状态。

说明书 :

一种基于片上网络的多通道数据采集的数据缓存方法

技术领域

[0001] 本发明涉及多通道数据缓存技术领域,具体涉及一种基于片上网络的多通道数据采集的数据缓存方法。

背景技术

[0002] 基于片上网络的多通道数据采集,由于片上网络不是固定路由,且通常在多个端口采用乒乓式仲裁,会导致多路数据通路的数据包,通过片上网络传输之后,数据包会发生错序。这种错序拥有两种维度,一是空间上的错序,二是时间上的错序。空间上的错序指对多路数据通路而言,它们进入网络的顺序与它们出网络的顺序会不同。例如,若20路通路进入网络的顺序是按照从第一路到第二十路依次进入的,那么这些数据包离开网络的顺序不会是从第一路到第二十路依次离开。时间上的错序是指对同一路数据通路而言,先进入网络的数据包,有可能比后进入网络的数据包后出网络。因此,在进行数据缓存时,要充分考虑片上网络会产生两个维度的错序。
[0003] 此外,由于前端的传感器有各种各样的类型,导致数据的采样速度不尽相同。比如温度传感器与振动传感器,它们的采样速率大相径庭。典型的温度传感器(如gw50型)的采样频率在200‑1000Hz之间。而振动传感器的频率在100KHz以上。数据采集系统应该要能兼容这类采样速率相差非常大的传感器同时接入。为了能完成这个目标,数据缓存策略也必须要于其适应。

发明内容

[0004] 针对现有技术中的上述不足,本发明提供了一种基于片上网络的多通道数据采集的数据缓存方法。
[0005] 为了达到上述发明目的,本发明采用的技术方案为:
[0006] 一种基于片上网络的多通道数据采集的数据缓存方法,包括以下步骤:
[0007] S1、对片上网络输出的数据包进行解包,得到包括传感器数据、传感器ID和时间戳的解包数据;
[0008] S2、将包括多个主存RAM的RAM组按照UDP周期顺序依次将传感器数据写入各个主存RAM;
[0009] S3、在每个主存RAM写入数据的UDP周期后等待一个UDP周期,再在下一UDP周期将所有数据读出,并在下一UDP周期将所有数据清零后返回步骤S2。
[0010] 进一步地,所述步骤S2具体包括:
[0011] 设置四个相同的第一主存RAM、第二主存RAM、第三主存RAM和第四主存RAM组成RAM组;
[0012] 在第一个UDP周期将传感器数据写入第一主存RAM;
[0013] 在第二个UDP周期将传感器数据写入第二主存RAM;
[0014] 在第三个UDP周期将传感器数据写入第三主存RAM;
[0015] 在第四个UDP周期将传感器数据写入第四主存RAM。
[0016] 进一步地,所述步骤S2中将传感器数据写入各个主存RAM具体包括:
[0017] 提取传感器数据对应时间戳的高两位译码作为片选信号;
[0018] 利用传感器ID划分基地址;
[0019] 提取传感器数据对应时间戳的低十一位译码作为地址偏移;
[0020] 生成传感器存储地址;
[0021] 按存储地址存储传感器数据。
[0022] 进一步地,所述传感器存储地址的计算公式具体为:
[0023] 存储地址=数据通道数*传感器ID+时间戳低十一位译码。
[0024] 进一步地,所述步骤S2中按存储地址存储传感器数据时采用零阶保持插值法对传感器数据进行处理。
[0025] 进一步地,所述采用零阶保持插值法对传感器数据进行处理具体包括:
[0026] 按存储地址存储当前到达的传感器数据后,将当前存储的传感器数据依次存储到后续存储地址,直到下一次传感器数据到达时继续存储新到达的传感器数据。
[0027] 进一步地,所述步骤S2中按存储地址存储传感器数据之前还包括:
[0028] 利用主存RAM控制器生成数据有效位,并添加到传感器数据的最高位;
[0029] 利用数据寄存器将传感器数据读取至数据缓存模块;
[0030] 利用数据寄存器判断传感器数据的最高位是否位数据有效位;若是,则将该传感器数据写入数据寄存器的对应存储地址;否则将该传感器数据不写入数据寄存器。
[0031] 进一步地,所述步骤S3具体包括:
[0032] 设置每个主存RAM在接收数据、等待最慢数据、UDP传输和清零的四个工作状态中依次切换。
[0033] 进一步地,所述步骤S3中每个主存RAM在四个工作状态中依次切换具体包括:
[0034] 在每个主存RAM开始写入数据的一个UDP周期执行接收数据工作状态,开始接收传感器数据;
[0035] 在每个主存RAM执行接收数据工作状态后的一个UDP周期执行等待最慢数据工作状态,等待最慢到达的传感器数据;
[0036] 在每个主存RAM执行等待最慢数据工作状态后的一个UDP周期执行UDP传输工作状态,将主存RAM写入的所有传感器数据读出,送往外部网络节点进行UDP传输;
[0037] 在每个主存RAM执行UDP传输工作状态后的一个UDP周期执行清零工作状态,将主存RAM写入的所有传感器数据清零,并返回执行接收数据工作状态。
[0038] 本发明具有以下有益效果:
[0039] (1)本发明采用设置的RAM存储策略,将片上网络传来的数据被解包后按照一定的存储规则缓存至RAM中,解决了数据包在经过片上网络的竞争传输由于而导致多路路数据通路的数据数据包发生错序的问题,实现了多路数据在经过片上网络传输后数据的有序缓存。
[0040] (2)本发明采用零阶保持插值法对传输速率低的数据进行补点,解决了不同采样速率传感器的数据同步问题,实现了同步传输多个不同采样速率的传感器的采集数据。

附图说明

[0041] 图1为本发明的数据缓存方法流程示意图;
[0042] 图2为本发明中四个主存RAM的工作状态切换示意图;
[0043] 图3为本发明中不同速率的传感器数据存储的UDP数据包示意图;
[0044] 图4为本发明中零阶保持插值法插值后的UDP数据包示意图;
[0045] 图5为本发明中主存RAM执行工作状态转移示意图。

具体实施方式

[0046] 下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
[0047] 参照图1,本发明实施例提供了一种基于片上网络的多通道数据采集的数据缓存方法,包括以下步骤S1至S3:
[0048] S1、对片上网络输出的数据包进行解包,得到包括传感器数据、传感器ID和时间戳的解包数据;
[0049] 在本实施例中,本发明将从片上网络输出的数据包先进入解包器进行解包,得到包括传感器数据、传感器ID和十三位时间戳的解包数据。利用得到的解包数据,按照本发明设定的存储逻辑写入主存RAM中进行缓存。然后再将传感器数据从主存RAM中读取出来,进行数据的缓存。
[0050] S2、将包括多个主存RAM的RAM组按照UDP周期顺序依次将传感器数据写入各个主存RAM;
[0051] 在本实施例中,步骤S2具体包括:
[0052] 设置四个相同的第一主存RAM、第二主存RAM、第三主存RAM和第四主存RAM组成RAM组;
[0053] 在第一个UDP周期将传感器数据写入第一主存RAM;
[0054] 在第二个UDP周期将传感器数据写入第二主存RAM;
[0055] 在第三个UDP周期将传感器数据写入第三主存RAM;
[0056] 在第四个UDP周期将传感器数据写入第四主存RAM。
[0057] 具体而言,本发明采用4块相同的,存储深度为400的主存RAM组成一个大的RAM组。在存储传感器数据时,按照主存RAM工作的单位时间采用UDP传输一次的时间,即UDP周期顺序依次将传感器数据写入各个主存RAM。
[0058] 本实施例中将传感器数据写入各个主存RAM具体包括:
[0059] 提取传感器数据对应时间戳的高两位译码作为片选信号;
[0060] 利用传感器ID划分基地址;
[0061] 提取传感器数据对应时间戳的低十一位译码作为地址偏移;
[0062] 生成传感器存储地址,传感器存储地址的计算公式具体为:
[0063] 存储地址=数据通道数*传感器ID+时间戳低十一位译码;
[0064] 按存储地址存储传感器数据。
[0065] 具体而言,对每个主存RAM用传感器ID来划分地址,当需要存储20路数据通道的传感器数据时,对每一个相同的传感器ID分配连续的20个地址;然后生成传感器存储地址,表示为
[0066] 存储地址=20*传感器ID+时间戳低十一位译码
[0067] 即,将时间戳高两位译码作为片选信号,用传感器ID划分基地址,将时间戳低11位译码作为地址偏移,来生成传感器数据应存储的地址。
[0068] 用传感器ID来划分基地址能解决数据包在空间上错位的问题;用时间戳的低11位当作地址偏移,能解决数据包在时间上错位的问题;每个主存RAM的深度和UDP帧里的有效数据个数设置为一样。每当一个主存RAM存入了相应的传感器数据,就将其全部读出,用一个UDP数据帧,将其全部传出去。
[0069] 为了兼容不同速率的传感器数据,对于本发明中的UDP数据包和主存RAM中数据所在位置的不仅具有空间含义,还具有时间含义。从上存储地址可以看出,不仅传感器ID是偏移量,时间戳也是偏移量。因此传感器数据在主存RAM中存储位置的不同,直接代表了其被采样的时间不同。
[0070] 如图2所示,若是一个采样率为1MHz和一个采样率为500KHz的传感器同时接入时,其按照以上公式存入RAM中,就会是这样的状态。若是1M能将20个位置,每个都填满,那500K就只能填满一半。由于UDP数据包需要将每个位置填满,故对500K来说,就还有一半的空位需要填入。这时,500K就需要进行补点。因此本发明在按存储地址存储传感器数据时采用零阶保持插值法对传感器数据进行处理。
[0071] 本实施例中采用零阶保持插值法对传感器数据进行处理具体包括:
[0072] 按存储地址存储当前到达的传感器数据后,将当前存储的传感器数据按时间戳顺序依次存储到后续存储地址,直到下一次传感器数据到达时继续存储新到达的传感器数据。
[0073] 本发明采用零阶保持插值法对传感器数据进行处理后,传感器数据写入UDP数据包中,如图3所示。
[0074] 通过采用上述方法,就能解决不同采样速率传感器的问题。在理论上,只要确定了时间戳的单位时间大小,那就能无误差传输采样频率是单位时间对应的整数倍分频的传感器的数据了。UDP数据头之间的差异构成大刻度,不同数据所在位置的差异构成小刻度。
[0075] 此外,本发明在按存储地址存储传感器数据之前还包括:
[0076] 利用主存RAM控制器生成数据有效位,并添加到传感器数据的最高位;
[0077] 利用数据寄存器将传感器数据读取至数据缓存模块;
[0078] 利用数据寄存器判断传感器数据的最高位是否位数据有效位;若是,则将该传感器数据写入数据寄存器的对应存储地址;否则将该传感器数据不写入数据寄存器。
[0079] S3、在每个主存RAM写入数据的UDP周期后等待一个UDP周期,再在下一UDP周期将所有数据读出,并在下一UDP周期将所有数据清零后返回步骤S2。
[0080] 在本实施例中,由于时间上的错序,会导致有些数据包,从片上网络中出来的时间非常晚,很有可能导致当主存RAM中的其余数据已经准备读出时,其还未到达主存RAM。因此,本发明针对片上网络的最大延时不超过一个UDP传输周期,即片上网络中最慢的数据包到达的时间会比下一次UDP传输结束的时间要早的情形,对每个主存RAM的工作状态切换逻辑进行设计。
[0081] 本发明的步骤S3具体包括:
[0082] 设置每个主存RAM在接收数据、等待最慢数据、UDP传输和清零的四个工作状态中依次切换。
[0083] 本实施例中每个主存RAM在四个工作状态中依次切换具体包括:
[0084] 在每个主存RAM开始写入数据的一个UDP周期执行接收数据工作状态,开始接收传感器数据;
[0085] 在每个主存RAM执行接收数据工作状态后的一个UDP周期执行等待最慢数据工作状态,等待最慢到达的传感器数据;
[0086] 在每个主存RAM执行等待最慢数据工作状态后的一个UDP周期执行UDP传输工作状态,将主存RAM写入的所有传感器数据读出,送往外部网络节点进行UDP传输;
[0087] 在每个主存RAM执行UDP传输工作状态后的一个UDP周期执行清零工作状态,将主存RAM写入的所有传感器数据清零,并返回执行接收数据工作状态。
[0088] 具体而言,对于每个主存RAM,对其设置四个工作状态,分别是接收数据、等待最慢数据、UDP传输和清零,并且控制主存RAM在这四个工作状态中依次切换。接收数据和等待最慢数据的工作状态均可以让片上网络中的传感器数据包按照生成的存储地址写入主存RAM。由于最慢的数据包慢于一次UDP传输周期,因此,即使是在UDP周期最末才进入网络的数据包,也一定能在下一个UDP周期结束之前到达主存RAM。在等待最慢数据包工作状态结束之后,片上网络中已经没有残余的上一UDP周期的数据包了。因此可以将这个主存RAM中的数据全部写出了。在UDP传输工作状态中将该主存RAM中的所有传感器数据都读取出来,送往外部网络节点进行UDP传输。最后在清零工作状态中将之前主存RAM中所写的所有传感器数据都清零。
[0089] 通过上述主存RAM的工作状态切换控制,就能解决数据包错序带来的问题。
[0090] 下面结合具体实例对本发明基于片上网络的多通道数据采集的数据缓存方法进行具体说明。
[0091] 将各个主存RAM工作状态的UDP周期循环分别用00,01,10,11来表示,对应于data_gene_time。
[0092] 当data_gene_time=00时,把从片上网络出来的数据存到ram00中;
[0093] 当data_gene_time=01时,把从片上网络出口出来的数据存到ram01中;
[0094] 当data_gene_time=10时,把从片上网络出口出来的数据存到ram10中;
[0095] 当data_gene_time=11时,把从片上网络出口出来的数据存到ram11中。
[0096] 当下一个data_gene_time为00的UDP数据包过来时,ram00完成清零,可继续接收数据。
[0097] 从片上网络出来的数据用data_gene表示,用data_gene_time来控制ram的片选,具体如表1所示。
[0098] 表1、RAM端口的输入控制表
[0099]data_gene_time din0 din1 din2 din3
00 data_gene 0 0 0
01 0 data_gene 0 0
10 0 0 data_gene 0
11 0 0 0 data_gene
[0100] RAM会循环执行4个操作,1)接收数据,2)等待最慢的数据,3)UDP包传输,4)清零;我们可以将1)和2)合并为一个状态,称其为IDLE_STORE,UDP包传输状态为UDP_TRANS,清零状态为RESET_REM,他们的状态转移图如下图5所示。
[0101] 其中,RAM_ID指的是4个RAM的地址,分别为00,01,10,11,rams_state表示的是UDP数据包的循环,从00‑11。由于对RAM的状态控制来说,从接收数据到UDP包的传输需要2个大周期,所以只有当rams_state=RAM_ID+2时,UDP_valid有效,如表2所示。
[0102] 表2
[0103]
[0104] 同样地,从接收数据到清零状态需要3个大周期,所以只有当rams_state=RAM_ID+3时,RESET_valid有效。具体如表3所示。
[0105] 表3
[0106]
[0107] 本发明对传感器数据进行零阶保持的具体实施过程为:
[0108] 1.设置寄存器的深度为20,用来寄存对应的20路数据通道的数据。
[0109] 2.在数据被存入主存RAM前,利用RAM控制器生成2bit的2’b11,将其添加在数据的最高两位,并和数据一起写入主存RAM中。这两位是作为数据有效位,表示RAM中的这个位置确实被写入过数据。
[0110] 3.在读取主存RAM中的数据时可以通过判断读取出来的20bit数据的最高两位是否为2’b11来判断数据是否有效;在20bit的数据被读取进数据缓存模块之后,寄存器控制器通过数据的最高两位来判断。
[0111] 4.若其是2’b11,就将低18位数据写入寄存器中的对应通道的地址中。若是其不为2’b11,就不会将此时的数据写入寄存器中,也就是对应通道的地址中的数据不变,保持。
[0112] 通过上述流程实现了兼容不同速率的传感器数据的方法。针对采样频率是单位时间对应的整数倍分频的传感器的数据,采用零阶保持的方法,即传输速率低的数据在下一次数据来临之前,保持现有的数据。。
[0113] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0114] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0115] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0116] 本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
[0117] 本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。