首页 / 专利库 / 电脑零配件 / 计算机系统 / 软件 / 系统软件 / 操作系统 / 内核 / 一种以太网中具有实时传输功能的上位机及以太网系统

一种以太网中具有实时传输功能的上位机及以太网系统

阅读:1033发布:2020-06-20

专利汇可以提供一种以太网中具有实时传输功能的上位机及以太网系统专利检索,专利查询,专利分析的服务。并且本 说明书 公开一种以太网中具有实时传输功能的上位机及以太网系统,该上位机包括:全局时统模 块 确定全局设备的主时钟,基于时钟同步机制实现时钟同步;应用层模块生成调度表并解析调度表,在应用层模块下行时间触发报文的时刻将该报文下行至 内核 驱动模块,接收来自内核驱动模块的时间触发报文;内核驱动模块接收来自应用层模块的时间触发报文并将该报文下行至第一 硬件 FPGA模块,接收来自第一硬件FPGA模块的时间触发报文并将该报文上行至应用层模块;第一硬件FPGA模块下载调度表,按照调度表接收来自内核驱动模块的时间触发报文,在发送时刻将该报文发送给目标交换机,按照调度表接收来自交换机的时间触发报文,在上行时刻将该报文上行至内核驱动模块。,下面是一种以太网中具有实时传输功能的上位机及以太网系统专利的具体信息内容。

1.一种以太网中具有实时传输功能的上位机,其特征在于,包括:
全局时统模,被配置为根据预先设定的时钟优先级确定全局网络设备的主时钟,再基于时钟同步机制使得全局网络设备按照所述主时钟实现时钟同步;
应用层模块,被配置为获取全局网络拓扑图,根据所述全局网络拓扑图以及所要处理的时间触发报文的信息,通过调度算法对时间触发报文进行统一调度,生成发送调度表和接收调度表,解析发送调度表得到每条待发送时间触发报文对应的发送时间,根据每条待发送时间触发报文的发送时间和由所述应用层模块到第一硬件FPGA模块的传送时间,得到应用层模块下行待发送时间触发报文的下行时刻,以使得在所述下行时刻,将该条报文通过内核协议栈下行至内核驱动模块,以及接收内核协议栈中的来自内核驱动模块的待接收时间触发报文;
内核驱动模块,被配置为将通过内核协议栈从应用层模块接收下行的待发送时间触发报文通过DMA下行至所述第一硬件FPGA模块,以及将通过DMA接收的第一硬件FPGA模块上行的待接收时间触发报文并将该时间触发报文通过内核协议栈上行至应用层模块;
第一硬件FPGA模块,被配置为下载预先配置好的发送调度表和接收调度表,按照接收调度表中第一硬件FPGA模块接收每条待发送时间触发报文对应的接收时间,从DMA接收来自内核驱动模块的待发送时间触发报文,并对该报文进行校验,校验合格则将该报文进行缓冲,在该报文的发送时刻将该条报文从缓冲区中取出,并对取出的报文进行校验,校验合格则将该条报文发送给目标交换机的第二硬件FPGA模块;按照接收调度表中第一硬件FPGA模块接收每条待接收时间触发报文对应的接收时间,接收来自交换机的第二硬件FPGA模块的待接收时间触发报文,并对该报文进行校验,校验合格则将该报文进行缓冲,在该报文的上行时刻将该条报文从缓冲区中取出,并对取出的报文进行校验,校验合格则将该条报文通过DMA上行至内核驱动模块。
2.根据权利要求1所述的方法,其特征在于,所述全局时统模块是基于硬件FPGA实现的,所述全局时统模块包括:最佳主时钟构建单元、从设备与主时钟同步单元、寄存器配置初始化单元和主时钟故障处理单元,其中:
所述最佳主时钟构建单元,被配置为根据预先配置的时钟优先级,判断第一硬件FPGA模块的时钟是否被配置为主时钟,若所述第一硬件FPGA模块的时钟为主时钟,则向被配置为从时钟的设备发送时间同步报文,使得被配置为从时钟的设备的从时钟与主时钟保持同步;
所述从设备与主时钟同步单元,被配置为当所述第一硬件FPGA模块的时钟为从时钟时,则接收被配置为主时钟的设备发送的时间同步报文,并将该时间同步报文进行解析,结合线延时间以及第一硬件FPGA模块的内部处理时间修正第一硬件FPGA模块的时钟,使得第一硬件FPGA模块的时钟与主时钟保持同步;
所述主时钟故障处理单元,被配置为当被配置为从时钟的设备一段时间没有收到被配置为主时钟的设备发送的时间同步报文时,判断出主时钟发生故障,则依据预先设定好的时钟优先级,将优先级次高的时钟配置为主时钟。
3.根据权利要求1所述的方法,其特征在于,所述应用层模块包括:定时器单元、流量控制单元、调度表解析单元、数据包发送单元和数据包接收单元,其中:
所述调度表解析单元,被配置为解析发送调度表,得到待发送时间触发报文对应的发送时间,根据每条待发送时间触发报文的发送时间和由所述应用层模块到第一硬件FPGA模块的传送时间,得到应用层模块下行待发送时间触发报文的下行时刻,并将该下行时刻发送给定时器单元;
所述定时器单元,被配置为接收调度表解析单元传来的应用层模块下行待发送时间触发报文的下行时刻,并将该下行时刻设定为定时器触发时间,在待发送时间触发报文的发送时刻触发数据包发送单元中的回调函数,以使得数据包发送单元中的回调函数发送该报文;
所述数据包发送单元,被配置为在回调函数触发后,通过回调函数将待发送时间触发报文通过内核协议栈下行至内核驱动模块,并通过回调函数将定时器单元的定时时刻设置为应用层模块下行的下一条待发送时间触发报文的下行时刻;
所述数据包接收单元,接收通过内核协议栈上行的来自内核驱动模块的待接收时间触发报文。
4.根据权利要求1所述的方法,其特征在于,所述内核驱动模块包括:网卡设备驱动初始化单元、数据包上行单元、数据包下行单元和网卡设备驱动释放单元,其中:
所述数据包上行单元,被配置为通过DMA接收从第一硬件FPGA模块上行的待接收时间触发报文,并将该时间触发报文通过内核协议栈上行至应用层模块;
所述数据包下行单元,被配置为通过内核协议栈接收从应用层模块下行的待发送时间触发报文,并将该时间触发报文通过DMA下行至第一硬件FPGA模块。
5.根据权利要求4所述的方法,其特征在于,所述数据包下行单元包括:
获取发送工作子单元,被配置为在接收到应用层模块下行的待发送时间触发报文后,获取该时间触发报文的发送进程的自旋锁;
队列工作子单元,被配置为根据该时间触发报文的数据流id找到存储该时间触发报文的队列,若该队列有空间,则将该时间触发内容拷贝到队列中并更新队列的长度,同时将该时间触发报文的长度信息也保存在队列中;
查询工作子单元,被配置为查询DMA是否空闲,若DMA中正在传输BE报文,在接近该时间触发报文的发送时间时,停止BE报文的发送;
封装工作子单元,被配置为按照SLIP协议封装该时间触发报文为DMA识别的格式,以及打上时间戳;
写寄存器工作子单元,被配置为进行三次写寄存器操作,第一次写寄存器以通知第一硬件FPGA模块该时间触发报文的存储位置,第二次写寄存器以通知第一硬件FPGA模块要传输的时间触发报文大小,第三次写寄存器以通知第一硬件FPGA模块,DMA开始传输该时间触发报文;
释放发送锁工作子单元,被配置为在DMA开始传输该时间触发报文后,释放该时间触发报文的发送进程的自旋锁。
6.根据权利要求4所述的方法,其特征在于,所述数据包上行单元,包括:
第一次中断处理子单元,被配置为接收到在第一硬件FPGA模块接收到待接收时间触发报文时触发的第一次中断信号,将其余中断屏蔽掉,接着读中断寄存器并判断中断状态,若判断第一次中断为时间触发报文请求上行的中断,则读取寄存器获取上行数据的长度;
写寄存器工作子单元,被配置为进行三次写寄存器操作,第一次写寄存器,告知内核驱动模块第一硬件FPGA模块接收到的待接收时间触发报文的存放地址,第二次写寄存器,告知内核驱动模块第一硬件FPGA模块接收内存的大小;第三次写寄存器,通知第一硬件FPGA模块开始向内核驱动模块上行待接收时间触发报文;
第二次中断处理子单元,被配置为接收到在DMA传输结束时触发第二次中断信号,将其余中断屏蔽掉,接着读中断寄存器并判断中断状态,若判断第二次中断为传输结束的中断,则接收第一硬件FPGA模块上行的待接收时间触发报文;
报文上行子单元,被配置为在接收到待接收时间触发报文时,将该时间触发报文上传内核协议栈,从而上行至应用层模块,若接收到的是BE报文,则将BE报文保存在缓存区中,接着放到工作队列workqueue实现的下半部函数中,等待系统空闲后依次上传至内核协议栈中。
7.根据权利要求1所述的方法,其特征在于,所述第一硬件FPGA模块包括:发送接收速率适配单元、数据帧校验单元、数据帧处理单元、优先级仲裁单元、数据帧转换单元和链路容错单元,其中:
所述数据帧校验单元,被配置为判断到达的时间触发报文的每条数据流id和帧长度与接收调度表中储存的每条数据流id和帧长度是否都一致,
若判断结果为报文信息均一致,则判断该时间触发报文的到达时间是否在以接收调度表储存的接收时间点为中心,在左右相邻的一个接收窗口大小的时间范围内,若判断结果为该时间触发报文的到达时间在以接收调度表储存的接收时间点为中心,在左右相邻的一个接收窗口大小的时间范围内,则将该时间触发报文通过交叉开关矩阵crossbar存储到接收调度表预先设定的缓冲区TT buffer中,并且在到达该时间触发报文的发送时刻时,从缓存该报文的缓冲区TT buffer中读取该报文,判断该时间触发报文的数据流id和帧长度与发送调度表中储存的数据流id和帧长度是否都一致,
若判断结果为报文信息均一致,则将该时间触发报文传递到多路选择器,若判断结果为报文信息不一致,则将该条时间触发报文丢弃掉;
若判断结果为该时间触发报文的到达时间不在以接收调度表储存的接收时间点为中心,左右相邻的一个接收窗口大小的时间范围内,则将该时间触发报文丢弃掉;
若判断结果为报文信息不一致,将该时间触发报文丢弃掉;
所述优先级仲裁单元,被配置为选择优先级最高的时间触发报文优先发送,并且通过宽带预留的方式来协调时间触发报文和非时间触发报文的发送,当时间触发报文发送成功后,记录下一次时间触发报文的发送时间,当非时间触发报文到来时,根据下一次时间触发报文的发送时间计算出剩余时间是否足够将到来的非时间触发报文发送出去,若是则将非时间触发报文发送出去,否则将非时间触发报文缓存起来,等待空闲时间发送;
所述链路容错单元,被配置为基于多个路线冗余备份,若有一条时间触发报文的发送路径出现损坏,则通过其他发送路径将时间触发报文进行发送。
8.根据权利要求7所述的方法,其特征在于,所述数据帧校验单元,包括:
待发送时间触发报文的接收窗口校验子单元,被配置为当来自内核驱动模块的待发送时间触发报文被传递到接收窗口时,根据接收调度表中定义的待发送时间触发报文的到达窗口时间、数据流id以及帧长度对到达的待发送时间触发报文进行校验,校验合格则将该报文缓存到接收调度表中设定的缓冲区TT buffer;
待发送时间触发报文的发送窗口校验子单元,被配置为当到达待发送时间触发报文的发送时刻,从缓存该报文的缓冲区TT buffer读取该报文,根据发送调度表中定义的待发送时间触发报文的帧长度和数据流id对该报文进行校验,校验合格则将该报文传递给多路选择器,通过所述多路选择器将该报文发送给目标交换机的第二硬件FPGA模块;
待接收时间触发报文的接收窗口校验子单元,被配置为当来自交换机的第二硬件FPGA模块的待接收时间触发报文被传递到接收窗口时,根据接收调度表中定义的待接收时间触发报文的到达窗口时间、数据流id以及帧长度对到达的待接收时间触发报文进行校验,校验合格则将该报文缓存到接收调度表中设定的缓冲区TT buffer;
待接收时间触发报文的发送窗口校验子单元,被配置为当到达待接收时间触发报文的发送时刻,从缓存该报文的缓冲区TT buffer读取该报文,根据发送调度表中定义的待接收时间触发报文的帧长度和数据流id对该报文进行校验,校验合格则将该报文传递给多路选择器,通过所述多路选择器将该报文上行给内核驱动模块。
9.一种以太网系统,其特征在于,包括至少两个执行权利要求1-8中任一项的上位机和至少一个交换机。
10.根据权利要求9所述的系统,其特征在于,所述交换机,包括:
第二硬件FPGA模块,被配置为下载预先配置好的接收调度表和发送调度表,根据接收调度表对接收到的时间触发报文进行校验,校验成功后将该时间触发报文储存到缓冲区,根据发送调度表,找到当前时刻所需要发送的时间触发报文,并对该时间触发报文进行校验,校验成功后将该时间触发报文发送到预先设定的交换机的第二硬件FPGA模块或者目标上位机的第一硬件FPGA模块。

说明书全文

一种以太网中具有实时传输功能的上位机及以太网系统

技术领域

[0001] 本发明涉及以太网领域,具体而言,涉及一种以太网中具有实时传输功能的上位机及以太网系统。

背景技术

[0002] 工业数据实时传输是工业自动化领域的重要问题之一。近年来,以太网技术因其高带宽、低成本等特点在工厂、轨道交通等领域得到广泛应用。但当前工业以太网技术仍存在一些问题,给工控环境带来了安全隐患。传统以太网数据传输流程为:数据从应用层发出,经以太网网卡传输到交换机,再由交换机转发至目的终端网卡,最后由网卡上行到应用层开始处理。当出现冲突的时候需要采用带冲突检测的载波监听/多路访问(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)协议解决通信介质访问资源争用问题,这种传输机制不能满足工业控制领域对控制报文传输实时性、确定性的需求。虽然各个厂家提出的解决方案能够满足普通的实时数据传输要求,但是这些方案在易用性、成本以及性能上都明显不足。特别是当前大数据计算等与工业控制领域两级融合的背景下,不仅需要保证大数据传输,而且要保证关键控制数据传输的实时性、确定性。现有的实时以太网解决方案都显得不从心。IEEE 802指定的时间敏感网络(Time Sensitive Networking,TSN)标准有着高带宽、高可靠性等优势,能够很好的保证实时数据传输,但是只保证了交换机内部的实时数据传输。而在形态上,以太网系统包括以太网交换机和以太网接口卡,现有方案没有实现一个完整的解决方案。

发明内容

[0003] 本说明书提供一种以太网中具有实时传输功能的上位机及系统,用以克服现有技术中存在的至少一个技术问题。
[0004] 为了实现上述目的,本说明书实施例提供一种以太网中具有实时传输功能的上位机,包括:全局时统模,被配置为根据预先设定的时钟优先级确定全局网络设备的主时钟,再基于时钟同步机制使得全局网络设备按照所述主时钟实现时钟同步;应用层模块,被配置为获取全局网络拓扑图,根据所述全局网络拓扑图以及所要处理的时间触发报文的信息,通过调度算法对时间触发报文进行统一调度,生成发送调度表和接收调度表,解析发送调度表得到每条待发送时间触发报文对应的发送时间,根据每条待发送时间触发报文的发送时间和由所述应用层模块到第一硬件FPGA模块的传送时间,得到应用层模块下行待发送时间触发报文的下行时刻,以使得在所述下行时刻,将该条报文通过内核协议栈下行至内核驱动模块,以及接收内核协议栈中的来自内核驱动模块的待接收时间触发报文;内核驱动模块,被配置为将通过内核协议栈从应用层模块接收下行的待发送时间触发报文通过DMA下行至所述第一硬件FPGA模块,以及将通过DMA接收的第一硬件FPGA模块上行的待接收时间触发报文并将该时间触发报文通过内核协议栈上行至应用层模块;第一硬件FPGA模块,被配置为下载预先配置好的发送调度表和接收调度表,按照接收调度表中第一硬件FPGA模块接收每条待发送时间触发报文对应的接收时间,从DMA接收来自内核驱动模块的待发送时间触发报文,并对该报文进行校验,校验合格则将该报文进行缓冲,在该报文的发送时刻将该条报文从缓冲区中取出,并对取出的报文进行校验,校验合格则将该条报文发送给目标交换机的第二硬件FPGA模块;按照接收调度表中第一硬件FPGA模块接收每条待接收时间触发报文对应的接收时间,接收来自交换机的第二硬件FPGA模块的待接收时间触发报文,并对该报文进行校验,校验合格则将该报文进行缓冲,在该报文的上行时刻将该条报文从缓冲区中取出,并对取出的报文进行校验,校验合格则将该条报文通过DMA上行至内核驱动模块。
[0005] 可选地,所述全局时统模块是基于硬件FPGA实现的,所述全局时统模块包括:最佳主时钟构建单元、从设备与主时钟同步单元、寄存器配置初始化单元和主时钟故障处理单元,其中:所述最佳主时钟构建单元,被配置为根据预先配置的时钟优先级,判断第一硬件FPGA模块的时钟是否被配置为主时钟,若所述第一硬件FPGA模块的时钟为主时钟,则向被配置为从时钟的设备发送时间同步报文,使得被配置为从时钟的设备的从时钟与主时钟保持同步;所述从设备与主时钟同步单元,被配置为当所述第一硬件FPGA模块的时钟为从时钟时,则接收被配置为主时钟的设备发送的时间同步报文,并将该时间同步报文进行解析,结合线延时间以及第一硬件FPGA模块的内部处理时间修正第一硬件FPGA模块的时钟,使得第一硬件FPGA模块的时钟与主时钟保持同步;所述主时钟故障处理单元,被配置为当被配置为从时钟的设备一段时间没有收到被配置为主时钟的设备发送的时间同步报文时,判断出主时钟发生故障,则依据预先设定好的时钟优先级,将优先级次高的时钟配置为主时钟。
[0006] 可选地,所述应用层模块包括:定时器单元、流量控制单元、调度表解析单元、数据包发送单元和数据包接收单元,其中:所述调度表解析单元,被配置为解析发送调度表,得到待发送时间触发报文对应的发送时间,根据每条待发送时间触发报文的发送时间和由所述应用层模块到第一硬件FPGA模块的传送时间,得到应用层模块下行待发送时间触发报文的下行时刻,并将该下行时刻发送给定时器单元;所述定时器单元,被配置为接收调度表解析单元传来的应用层模块下行待发送时间触发报文的下行时刻,并将该下行时刻设定为定时器触发时间,在待发送时间触发报文的发送时刻触发数据包发送单元中的回调函数,以使得数据包发送单元中的回调函数发送该报文;所述数据包发送单元,被配置为在回调函数触发后,通过回调函数将待发送时间触发报文通过内核协议栈下行至内核驱动模块,并通过回调函数将定时器单元的定时时刻设置为应用层模块下行的下一条待发送时间触发报文的下行时刻;所述数据包接收单元,接收通过内核协议栈上行的来自内核驱动模块的待接收时间触发报文。
[0007] 可选地,所述内核驱动模块包括:网卡设备驱动初始化单元、数据包上行单元、数据包下行单元和网卡设备驱动释放单元,其中:所述数据包上行单元,被配置为通过DMA接收从第一硬件FPGA模块上行的待接收时间触发报文,并将该时间触发报文通过内核协议栈上行至应用层模块;所述数据包下行单元,被配置为通过内核协议栈接收从应用层模块下行的待发送时间触发报文,并将该时间触发报文通过DMA下行至第一硬件FPGA模块。
[0008] 可选地,所述数据包下行单元包括:获取发送工作子单元,被配置为在接收到应用层模块下行的待发送时间触发报文后,获取该时间触发报文的发送进程的自旋锁,防止非时间触发报文干扰时间触发报文的正常传输;队列工作子单元,被配置为根据该时间触发报文的数据流id找到存储该时间触发报文的队列,若该队列有空间,则将该时间触发内容拷贝到队列中并更新队列的长度,同时将该时间触发报文的长度信息也保存在队列中;查询工作子单元,被配置为查询DMA是否空闲,若DMA中正在传输BE报文,在接近该时间触发报文的发送时间时,停止BE报文的发送;封装工作子单元,被配置为按照SLIP协议封装该时间触发报文为DMA识别的格式,以及打上时间戳;写寄存器工作子单元,被配置为进行三次写寄存器操作,第一次写寄存器以通知第一硬件FPGA模块该时间触发报文的存储位置,第二次写寄存器以通知第一硬件FPGA模块要传输的时间触发报文大小,第三次写寄存器以通知第一硬件FPGA模块,DMA开始传输该时间触发报文;释放发送锁工作子单元,被配置为在DMA开始传输该时间触发报文后,释放该时间触发报文的发送进程的自旋锁。
[0009] 可选地,所述数据包上行单元,包括:第一次中断处理子单元,被配置为接收到在第一硬件FPGA模块接收到待接收时间触发报文时触发的第一次中断信号,将其余中断屏蔽掉,接着读中断寄存器并判断中断状态,若判断第一次中断为时间触发报文请求上行的中断,则读取寄存器获取上行数据的长度;写寄存器工作子单元,被配置为进行三次写寄存器操作,第一次写寄存器,告知内核驱动模块第一硬件FPGA模块接收到的待接收时间触发报文的存放地址,第二次写寄存器,告知内核驱动模块第一硬件FPGA模块接收内存的大小;第三次写寄存器,通知第一硬件FPGA模块开始向内核驱动模块上行待接收时间触发报文;第二次中断处理子单元,被配置为接收到在DMA传输结束时触发第二次中断信号,将其余中断屏蔽掉,接着读中断寄存器并判断中断状态,若判断第二次中断为传输结束的中断,则接收第一硬件FPGA模块上行的待接收时间触发报文;报文上行子单元,被配置为在接收到待接收时间触发报文时,将该时间触发报文上传内核协议栈,从而上行至应用层模块,若接收到的是BE报文,则将BE报文保存在缓存区中,接着放到工作队列workqueue实现的下半部函数中,等待系统空闲后依次上传至内核协议栈中。
[0010] 可选地,所述第一硬件FPGA模块包括:发送接收速率适配单元、数据帧校验单元、数据帧处理单元、优先级仲裁单元、数据帧转换单元和链路容错单元,其中:所述数据帧校验单元,被配置为判断到达的时间触发报文的每条数据流id和帧长度与接收调度表中储存的每条数据流id和帧长度是否都一致,
[0011] 若判断结果为报文信息均一致,则判断该时间触发报文的到达时间是否在以接收调度表储存的接收时间点为中心,在左右相邻的一个接收窗口大小的时间范围内,[0012] 若判断结果为该时间触发报文的到达时间在以接收调度表储存的接收时间点为中心,在左右相邻的一个接收窗口大小的时间范围内,则将该时间触发报文通过交叉开关矩阵crossbar存储到接收调度表预先设定的缓冲区TT buffer中,并且在到达该时间触发报文的发送时刻时,从缓存该报文的缓冲区TT buffer中读取该报文,判断该时间触发报文的数据流id和帧长度与发送调度表中储存的数据流id和帧长度是否都一致,[0013] 若判断结果为报文信息均一致,则将该时间触发报文传递到多路选择器,[0014] 若判断结果为报文信息不一致,则将该条时间触发报文丢弃掉;
[0015] 若判断结果为该时间触发报文的到达时间不在以接收调度表储存的接收时间点为中心,左右相邻的一个接收窗口大小的时间范围内,则将该时间触发报文丢弃掉;
[0016] 若判断结果为报文信息不一致,将该时间触发报文丢弃掉;
[0017] 所述优先级仲裁单元,被配置为选择优先级最高的时间触发报文优先发送,并且通过宽带预留的方式来协调时间触发报文和非时间触发报文的发送,当时间触发报文发送成功后,记录下一次时间触发报文的发送时间,当非时间触发报文到来时,根据下一次时间触发报文的发送时间计算出剩余时间是否足够将到来的非时间触发报文发送出去,若是则将非时间触发报文发送出去,否则将非时间触发报文缓存起来,等待空闲时间发送;所述链路容错单元,被配置为基于多个路线冗余备份,若有一条时间触发报文的发送路径出现损坏,则通过其他发送路径将时间触发报文进行发送。
[0018] 可选地,所述数据帧校验单元,包括:待发送时间触发报文的接收窗口校验子单元,被配置为当来自内核驱动模块的待发送时间触发报文被传递到接收窗口时,根据接收调度表中定义的待发送时间触发报文的到达窗口时间、数据流id以及帧长度对到达的待发送时间触发报文进行校验,校验合格则将该报文缓存到接收调度表中设定的缓冲区TT buffer;待发送时间触发报文的发送窗口校验子单元,被配置为当到达待发送时间触发报文的发送时刻,从缓存该报文的缓冲区TT buffer读取该报文,根据发送调度表中定义的待发送时间触发报文的帧长度和数据流id对该报文进行校验,校验合格则将该报文传递给多路选择器,通过所述多路选择器将该报文发送给目标交换机的第二硬件FPGA模块;待接收时间触发报文的接收窗口校验子单元,被配置为当来自交换机的第二硬件FPGA模块的待接收时间触发报文被传递到接收窗口时,根据接收调度表中定义的待接收时间触发报文的到达窗口时间、数据流id以及帧长度对到达的待接收时间触发报文进行校验,校验合格则将该报文缓存到接收调度表中设定的缓冲区TT buffer;待接收时间触发报文的发送窗口校验子单元,被配置为当到达待接收时间触发报文的发送时刻,从缓存该报文的缓冲区TT buffer读取该报文,根据发送调度表中定义的待接收时间触发报文的帧长度和数据流id对该报文进行校验,校验合格则将该报文传递给多路选择器,通过所述多路选择器将该报文上行给内核驱动模块。
[0019] 为达到上述目的,本说明书实施例还提供了一种以太网中具有实时数据传输功能的系统,包括至少两个上位机和至少一个交换机,当所述上位机和交换机工作时,实时数据可按时传输。
[0020] 可选地,所述交换机,包括:第二硬件FPGA模块,被配置为下载预先配置好的接收调度表和发送调度表,根据接收调度表对接收到的时间触发报文进行校验,校验成功后将该时间触发报文储存到缓冲区,根据发送调度表,找到当前时刻所需要发送的时间触发报文,并对该时间触发报文进行校验,校验成功后将该时间触发报文发送到预先设定的交换机的第二硬件FPGA模块或者目标上位机的第一硬件FPGA模块。
[0021] 本说明书实施例的有益效果如下:
[0022] 本说明书实施例中,通过全局时统模块确定全局设备的主时钟,再基于时钟同步机制实现时钟同步,通过应用层模块生成调度表并解析调度表,在应用层模块下行时间触发报文的时刻将该报文下行至内核驱动模块,接收来自内核驱动模块的时间触发报文,通过内核驱动模块接收从应用层模块下行的时间触发报文并将该报文下行至第一硬件FPGA模块,接收从第一硬件FPGA模块上行的时间触发报文并将该报文上行至应用层模块,通过第一硬件FPGA模块下载调度表,按照调度表接收来自内核驱动模块的时间触发报文,在发送时刻将该报文发送给目标交换机,按照调度表接收来自交换机的时间触发报文,在上行时刻将该报文上行至内核驱动模块。因此,采用本说明书实施例提供的方案,在上位机端添加了实时传输机制,保证了实时数据在以太网系统中确定性、实时性的传输。
[0023] 本说明书实施例的创新点包括:
[0024] 1、全局时统模块确定全局设备的主时钟,基于时钟同步机制实现时钟同步;应用层模块生成调度表并解析调度表,在应用层模块下行时间触发报文的时刻将该报文下行至内核驱动模块,接收来自内核驱动模块的时间触发报文;内核驱动模块接收从应用层模块下行的时间触发报文并将该报文下行至第一硬件FPGA模块,接收从第一硬件FPGA模块上行的时间触发报文并将该报文上行至应用层模块;第一硬件FPGA模块下载调度表,按照调度表接收来自内核驱动模块的时间触发报文,在发送时刻将该报文发送给目标交换机,按照调度表接收来自交换机的时间触发报文,在上行时刻将该报文上行至内核驱动模块。通过以上模块可以在上位机端添加实时扩展机制,使得实时数据按照调度表准时传输到目的终端,实现实时数据在传统以太网系统中实时性、确定性传输,是本说明书实施例的创新点之一。
[0025] 2、全局时统模块是基于硬件FPGA实现的,无论是第一硬件FPGA做主时钟还是交换机做主时钟,时统精度都在亚微秒级别,通过实验测试发现在网络中通过网络测试仪IXIA打了大量干扰报文,时统精度也不会受到很大的影响,证明全局时统模块还具有抗干扰性,适应于复杂的工业环境中使用,在全局时统模块还添加了主时钟故障处理模块,在主时钟出现故障时,及时发现主时钟故障并按照时钟优先级,选择优先级仅次于主时钟的从时钟作为主时钟,使得每时每刻全局网络设备都与主时钟保持时钟同步,实现了具备精确性以及可靠性的时统模块,是本说明书实施例的创新点之一。
[0026] 3、应用层模块解析生成的调度表,将调度表中规定的发送时刻与从应用层模块到第一硬件FPGA模块的传输时间进行结合,得到应用层下行实时数据的下行时间,再借由定时器单元将实时数据按时地将实时数据下行,保证实时数据在规定时间到达第一硬件FPGA模块,是本说明书实施例的创新点之一。
[0027] 4、内核驱动模块在下行数据时,为实时数据预留发送时间,将接收到实时数据下行,保证实时数据在规定时间到达第一硬件FPGA模块,是本说明书实施例的创新点之一。
[0028] 5、内核驱动模块在处理第一硬件FPGA模块上行的数据时,优先处理实时数据,为应用层处理实时数据预留充足的时间,并将中断粒度细化,将非实时数据交由中断下半段处理,减少中断时间,是本说明书实施例的创新点之一。
[0029] 6、第一硬件FPGA模块按照以调度表规定的接收时间为中心,左右相邻的一个接收窗口大小的时间范围,接收到达的实时数据,通过对实时数据进行缓存,直到调度表规定的发送时刻才将实时数据进行发送,降低应用层模块与内核驱动模块带来的不确定因素,是本说明书实施例的创新点之一。
[0030] 7、第一硬件FPGA模块中的优先级仲裁单元,选择优先级最高的时间触发报文优先发送,并且通过宽带预留的方式来协调时间触发报文和非时间触发报文的发送,避免周期性发送的实时数据因为其它数据的传输占用带宽而导致地时延增加,进一步提高了实时数据传输的实时性,但是在数据高流量传输时,FIFO缓存区里可能已经有了BE报文,这时转发时间触发报文会产生抖动,因此在时间触发报文发送的时候,统一采取排空策略,等待一个最长BE帧的发送时间,确保FIFO缓存区中是空的,然后再发送时间触发报文帧,这样便可以在稍微牺牲一定的时延的情况下,将时间触发报文发送的抖动降低下来,是本说明书实施例的创新点之一。
[0031] 8、第一硬件FPGA模块中的链路容错单元支持多个线路冗余备份,假设有N条冗余链路,那么只要时间触发数据发送路径中还有一条路径没有被破坏,时间触发报文就可以不丢包的到达目的终端,同时性能不受任何影响,是本说明书实施例的创新点之一。附图说明
[0032] 为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0033] 图1示出了本说明书实施例中在以太网系统中实时数据传输的示意图;
[0034] 图2示出了本说明书实施例中数据传输总体架构图。

具体实施方式

[0035] 下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036] 本说明书实施例基于IEEE 1588提出的时钟同步机制,实现了全局时统模块,作为基础模块,使用FPGA实现了4口网卡,之后实现了基于网卡的内核驱动模块,建立应用层模块与第一硬件FPGA模块数据传输的桥梁,通过网络协议栈与应用层模块实现报文交互,通过DMA实现与第一硬件FPGA模块的数据传输,以实时数据传输为第一优先级,对于非实时数据通过建立缓存、中断下半部处理等机制使得其传输不会影响到实时数据传输,并且保证非实时数据从内核驱动模块下行至第一硬件FPGA模块以及从第一硬件FPGA模块上行至内核驱动模块的速率都在千兆平,整体数据传输的时延在1ms以内,整体抖动在微秒级别。
[0037] 图1示出了本说明书实施例中在以太网系统中实时数据传输的示意图。如图1所示,基于全局时统模块确定的主时钟,实时数据按时从初始发送数据的上位机的应用层模块发出,通过内核协议栈下行至内核驱动模块,再通过DMA通道下行至第一硬件FPGA模块,实时数据按时从第一硬件FPGA模块发出,传输到交换机的第二硬件FPGA模块,实时数据经过至少一个交换机,按时到达目的终端的第一硬件FPGA模块,再通过DMA通道按时上行至内核驱动模块,最后通过内核协议栈上行至应用层模块,完成了对实时数据的传输,基于全局时统模块,使得以太网络中的设备对时间的认知保持一致,之后通过在应用层模块、内核驱动模块和第一硬件FPGA模块中添加实时优化机制,满足实时数据传输的实时性、确定性。
[0038] 在一个具体实施例中,基于硬件FPGA实现全局时统模块,在系统刚启动的时刻,设定的时钟优先级,选定主时钟,上位机通过PCI-E总线对配置为主时钟的设备发送配置信息,配置为主时钟的设备根据配置信息周期性向链路中发送时间同步报文,配置为从时钟的设备在每个端口都会接收时间同步报文并缓存到接收队列中,被配置为从时钟的设备通过解析时钟同步报文,同时结合线延以及自身内部处理时间来修正自己的时钟,使得自身时钟与主时钟保持时钟同步。全局时统模块是实现实时传输机制的基础,只有在搭建了一个高精度并且具备高可靠性的时统模块的情况下,实时数据的传输才有实现的可能,对实时数据的调度才有平台基础,且无论是第一硬件FPGA做主时钟还是交换机做主时钟,时统精度都在亚微秒级别,实现了具备精确性以及可靠性的时统模块。
[0039] 在一个具体实施例中,应用层模块获取全局网络拓扑图,根据所述全局网络拓扑图以及所要处理的时间触发报文的信息,通过调度算法对时间触发报文进行统一调度,生成发送调度表和接收调度表,发送调度表中定义了实时流在一个周期内的发送点以及实时流的发送周期,实时数据的发送周期都是2的整数次幂,全局时统里的时间则是从0至(232-1),因此可以把所有的实时数据统一起来考虑,记宏周期为所有实时数据的周期的最小公倍数,在宏周期内将所有实时数据的发送点标记出来,因为实时数据的发送周期都是2的整数次幂,所以宏周期必然也是2的整数次幂,而全局时统的时间范围是[0,232–1],全局时统的时间间隔必然也是宏周期的整数倍,因此可以将全局时统的时间划分成很多个宏周期,而且实时数据在每个宏周期内的发送位置必然都是相同的。接着将全局时统与Linux高精度定时器联合起来使用,通过实时化Linux,使Linux的内核空间成为一个完全可抢占的内核空间,从而使高精度定时器能够在精确的时间点回调,使定时器提前50us回调,之后通过do while忙等待的方式,直到到达精确发送时间点才进行发送,从而实现高精度发包。在每次计算下一次发送时刻的时候,使用全局同步时钟计算时间间隔,防止产生累积误差。应用层模块基于定时器,在下行时刻将实时数据下行至内核驱动模块,使得实时数据可以在有界时间内到达内核驱动模块。
[0040] 在一个具体实施例中,内核驱动模块将第一硬件FPGA封装为net_device结构体,建立起应用层与第一硬件FPGA数据传输的桥梁,一方面将应用层下行的数据包发送给第一硬件FPGA模块,另一方面接收第一硬件FPGA上行的数据包,发送给应用层模块。数据包的发送流程是应用程序采取发送动作,数据包经过网络协议栈到达驱动,接着由内核驱动层下发到第一硬件FPGA。通过将nf2c_tx函数赋值给nf2c_netdev_ops结构体的ndo_start_xmit函数变量,数据包从网络协议栈出来之后,会直接执行nf2c_tx函数。该函数会接收两个参数,一个是sk_buff类型的skb变量,数据包下发至内核驱动层之后会被封装成sk_buff类型,里面可以获取数据包的内容、长度等各种信息;另一个参数则是net_device类型的dev,通过这个参数可以获取设备信息。进入函数之后,首先会调用check_udp_tt_frame函数通过ethertype是否为0x88D7判断该数据包是否是时间触发报文,如果是TT报文,那么首先会通过spin_lock_irqsave()函数获取发送锁,根据数据流id找到存储该报文的队列,判断存储该时间触发报文的队列是否有空间。因为时间触发报文周期性发送,发送速度相对较慢,因此正常情况下都会有空间,如果没有空间说明系统有异常。之后将该报文内容拷贝到队列中,并且更新队列的长度,同时将报文的长度等信息也保存起来。接着调用nf2c_send()函数,开始准备发送该报文,会通过atomic_add_return()对发送过程变量dma_tx_in_progress进行原子加1操作,如果发现加完之后不等于1,说明当前有信道中有报文正在进行DMA传输,必须要等待该DMA传输结束之后才会发送。对于时间触发报文会在接近发送时间的时候,停止BE报文的发送,等待时间触发报文发送结束之后才开始恢复BE报文的发送。接下来会按照SLIP协议封装时间触发报文为DMA识别的格式帧,同时打上时间戳。接着进行三次写寄存器操作,第一次写寄存器,通知第一硬件FPGA数据存储位置;第二次写寄存器,通知第一硬件FPGA要传输的数据大小;第三次写寄存器则是发送指令,通知第一硬件FPGA开始传输数据,最后通过spin_unlock_irqrestore()函数释放发送锁。由此数据包发送流程结束,通过有序的数据包发送流程将实时数据下行至内核驱动层,实现了对实时数据的快速转发,为第一硬件FPGA模块对实时数据的处理预留了充足的时间,保证实时数据传输的实时性。
[0041] 在一个具体实施例中,内核驱动模块的数据包的接收过程则是从DMA取出第一硬件FPGA上行的数据,接着再将数据上传内核协议栈,通过内核协议栈送到应用层完成数据的处理。当第一硬件FPGA收到数据包的时候便会触发中断信号,驱动层收到中断信号之后,首先通过nf2_disable_irq()屏蔽掉中断,接着读中断寄存器,判断中断的状态。如果发现中断状态为IC_RX_PEND,则知道当前中断是请求上行数据,接着读寄存器获取上行长度upload_len。接着写三次寄存器,第一次写寄存器,通知第一硬件FPGA接收地址,即之前开辟的物理内存映射的逻辑内存地址,用来存放接收的数据包;第二次写寄存器通知第一硬件FPGA接收内存的大小,是这次DMA可传输的最大长度,上行的数据量不能超过SW_FPGA_RX_BUF_SIZE;第三次写寄存器的操作则是发送指令,通知第一硬件FPGA开始上传数据包,第一硬件FPGA收到指令之后开始通过PCI总线向内存写数据,这个过程全程不需要CPU参与,之后开启中断,完成第一次中断的全部操作。DMA上传结束之后,硬件会发来第二次中断通知内核驱动程序进行数据处理,收到第二次中断之后,依旧是首先屏蔽掉中断,接着读中断寄存器,获取当前中断状态。如果中断状态为IC_RX_DONE,说明传输结束,接收完硬件封装的数据包,开始进行解析,调用nf2c_upload_frames()开始处理数据帧。这时分两种情况:第一种是上传的数据之中包含时间触发报文,那么会将时间触发报文立即上传内核协议栈,交给应用层处理;第二种情况是上传的数据之中只有普通的BE报文,对于BE报文,因为不需要保证实时性以及确定性,所以希望中断尽可能早的结束,会把数据帧保存在缓存区内,接着放到工作队列workqueue实现的下半部函数中,等系统空闲后再依次上传到内核协议栈里。通过有序的数据包接收流程,实现实时数据的快速转发,为应用层模块处理实时数据预留充足的时间,并且将中断粒度细化,将非实时数据交由中断下半段处理,减少中断处理时间,减少非实时数据对内核空间的占用,使非实时数据传输不会影响到实时数据的传输,提高实时数据传输的准确性。
[0042] 在一个具体实施例中,第一硬件FPGA模块和第二硬件模块需要保证实时数据按照调度表规定的时刻点传输,上位机通过指令将调度表的内容写到调度表ram中,第一硬件FPGA模块和第二硬件模块的每一个端口都会存储一个接收调度表和发送调度表。接收调度表定义了实时数据帧到达端口的时间,数据流id,帧长度以及发送周期。当一个实时数据帧被传递到接收窗口时,接收窗口模块会首先去调度表的随机存储器ram中找到该实时数据帧的,同时判断实时数据到达的时间是否在以调度表定义的接收时间点为中心,左右一个接收窗口大小的时间范围内,如果这些都满足,那么认为该实时数据帧是合法的数据帧,通过交叉开关矩阵crossbar将之存储到调度表中定义的用来存储这条实时数据帧的缓冲区TT_buffer中,否则会丢弃掉这条实时数据帧。而发送调度表则定义了实时数据帧从端口发出的时间,数据流的id,帧长度以及该帧存储的缓冲区TT_buffer。当到达实时数据帧的发送时间时,发送窗口模块控制交叉开关矩阵crossbar找到该实时数据帧缓存的缓冲区TT_buffer,读取一帧,并判断长度、数据流id是否与发送调度表一致,假如一致,那么会将该帧传递给多路选择器发送出去。第一硬件FPGA模块对到达的实时数据进行校验,保证了实时传输的确定性,并根据发送调度表,按时将实时数据发送出去,保证了实时数据的实时性,实现了在上位机端添加实时传输机制,从而实现了传统以太网系统的实时数据传输。
[0043] 图2示出了本说明书实施例中数据传输总体架构图,如图2所示,数据传输总体架构包括5个模块,包括:全局时统模块,应用层模块,内核驱动模块,第一硬件FPGA模块和第二硬件FPGA模块,其中,所述全局时统模块包括:最佳主时钟构建单元、从设备与主时钟同步单元、寄存器配置初始化单元和主时钟故障处理单元,所述应用层模块包括:定时器单元、流量控制单元、调度表解析单元、数据包发送单元和数据包接收单元,所述内核驱动模块包括:网卡设备驱动初始化单元、数据包上行单元、数据包下行单元和网卡设备驱动释放单元,所述第一硬件FPGA模块包括:发送接收速率适配单元、数据帧校验单元、数据帧处理单元、优先级仲裁单元、数据帧转换单元和链路容错单元,所述第二硬件FPGA模块包括:发送接收速率适配单元、数据帧校验单元、数据帧处理单元、优先级仲裁单元、数据帧转换单元和链路容错单元,基于以上的模块和模块所包括的单元,实现实时数据在以太网系统中的传输。
[0044] 在一个具体实施例中,全局时统模块根据预先设定的时钟优先级确定全局网络设备的主时钟,再基于时钟同步机制使得全局网络设备按照所述主时钟实现时钟同步,在复杂的网络拓扑中实现灵活的时钟同步。
[0045] 在一个具体实施例中,最佳主时钟构建单元根据预先配置的时钟优先级,判断第一硬件FPGA模块的时钟是否被配置为主时钟,若所述第一硬件FPGA模块的时钟为主时钟,则向被配置为从时钟的设备发送时间同步报文,使得被配置为从时钟的设备的从时钟与主时钟保持同步;从设备与主时钟同步单元,在所述第一硬件FPGA模块的时钟为从时钟时,接收被配置为主时钟的设备发送的时间同步报文,并将该时间同步报文进行解析,结合线延时间以及第一硬件FPGA模块的内部处理时间修正第一硬件FPGA模块的时钟,使得第一硬件FPGA模块的时钟与主时钟保持同步;主时钟故障处理单元,当被配置为从时钟的设备一段时间没有收到被配置为主时钟的设备发送的时间同步报文时,判断出主时钟发生故障,则依据预先设定好的时钟优先级,将优先级次高的时钟配置为主时钟。全局时统模块基于以上三个单元实现全局时钟同步,无论是第一硬件FPGA做主时钟还是交换机做主时钟,时统精度都在亚微秒级别,具有很强的抗干扰能力,工业极端环境下依旧能保证很高的精度,全局时统模块可以实现多个主时钟切换,不会因为一个主时钟故障影响时间触发数据的传输,保证了实时数据传输的可靠性。
[0046] 在一个具体实施例中,应用层模块获取全局网络拓扑图,根据所述全局网络拓扑图以及所要处理的时间触发报文的信息,通过调度算法对时间触发报文进行统一调度,生成发送调度表和接收调度表,实时数据在设备中按照调度表中定义的全局时间点进行传输,由此实现网络中关键数据传输的可预测性,避免资源冲突,从而实现确定性通信;解析发送调度表得到每条待发送时间触发报文对应的发送时间,根据每条待发送时间触发报文的发送时间和由所述应用层模块到第一硬件FPGA模块的传送时间,得到应用层模块下行待发送时间触发报文的下行时刻,以使得在所述下行时刻,将该条报文通过内核协议栈下行至内核驱动模块,确保实时数据在有界时间内到达内核驱动模块;接收内核协议栈中的来自内核驱动模块的待接收时间触发报文,完成了对实时数据的传输。
[0047] 在一个具体实施例中,调度表解析单元解析发送调度表,得到待发送时间触发报文对应的发送时间,根据每条待发送时间触发报文的发送时间和由所述应用层模块到第一硬件FPGA模块的传送时间,得到应用层模块下行待发送时间触发报文的下行时刻,并将该下行时刻发送给定时器单元;定时器单元接收调度表解析单元传来的应用层模块下行待发送时间触发报文的下行时刻,并将该下行时刻设定为定时器触发时间,在待发送时间触发报文的发送时刻触发数据包发送单元中的回调函数,以使得数据包发送单元中的回调函数发送该报文;数据包发送单元在回调函数触发后,通过回调函数将待发送时间触发报文通过内核协议栈下行至内核驱动模块,并通过回调函数将定时器单元的定时时刻设置为应用层模块下行的下一条待发送时间触发报文的下行时刻。应用层模块通过以上三个单元实现对实时数据的按时下行,保证实时数据在有界时间内到达内核驱动模块;数据包接收单元,接收通过内核协议栈上行的来自内核驱动模块的待接收时间触发报文,完成了对实时数据的传输。
[0048] 在一个具体实施例中,内核驱动模块将通过内核协议栈从应用层模块接收下行的待发送时间触发报文通过DMA下行至所述第一硬件FPGA模块,以及将通过DMA接收的第一硬件FPGA模块上行的待接收时间触发报文并将该时间触发报文通过内核协议栈上行至应用层模块。利用内核驱动模块对实时数据的快速转发,为第一硬件FPGA模块和应用层模块对实时数据的处理预留了充足的时间,保证实时数据传输的实时性。
[0049] 在一个具体实施例中,数据包上行单元通过DMA接收从第一硬件FPGA模块上行的待接收时间触发报文,并将该时间触发报文通过内核协议栈上行至应用层模块;数据包下行单元通过内核协议栈接收从应用层模块下行的待发送时间触发报文,并将该时间触发报文通过DMA下行至第一硬件FPGA模块。内核驱动模块通过数据包上行单元和数据包下行单元对实时数据进行快速转发,对下行的非实时数据进行缓存等待空闲时间发送,对上行的非实时数据交由中断下半部分处理,减少中断处理时间,实现在传输实时数据的同时,保证实时数据不丢包,并且非实时数据也能以高流量传输,提高了传统以太网系统对实时数据和非实时数据传输的兼容性。
[0050] 在一个具体实施例中,第一硬件FPGA模块下载预先配置好的发送调度表和接收调度表,按照接收调度表中第一硬件FPGA模块接收每条待发送时间触发报文对应的接收时间,从DMA接收来自内核驱动模块的待发送时间触发报文,并对该报文进行校验,校验合格则将该报文进行缓冲,在该报文的发送时刻将该条报文从缓冲区中取出,并对取出的报文进行校验,校验合格则将该条报文发送给目标交换机的第二硬件FPGA模块;按照接收调度表中第一硬件FPGA模块接收每条待接收时间触发报文对应的接收时间,接收来自交换机的第二硬件FPGA模块的待接收时间触发报文,并对该报文进行校验,校验合格则将该报文进行缓冲,在该报文的上行时刻将该条报文从缓冲区中取出,并对取出的报文进行校验,校验合格则将该条报文通过DMA上行至内核驱动模块。第一硬件FPGA模块对到达的实时数据按照调度表进行校验和传输,保证了实时数据传输的确定性和实时性;
[0051] 在一个具体实施例中,第二硬件FPGA模块下载预先配置好的接收调度表和发送调度表,根据接收调度表对接收到的时间触发报文进行校验,校验成功后将该时间触发报文储存到缓冲区,根据发送调度表,找到当前时刻所需要发送的时间触发报文,并对该时间触发报文进行校验,校验成功后将该时间触发报文发送到预先设定的交换机的第二硬件FPGA模块或者目标上位机的第一硬件FPGA模块,交换机端的第二硬件FPGA模块对到达的实时数据按照调度表进行校验和传输,保证了实时数据传输的确定性和实时性。
[0052] 在一个具体实施例中,数据帧校验单元,判断到达的时间触发报文的每条数据流id和帧长度与接收调度表中储存的每条数据流id和帧长度是否都一致,
[0053] 若判断结果为报文信息均一致,则判断该时间触发报文的到达时间是否在以接收调度表储存的接收时间点为中心,在左右相邻的一个接收窗口大小的时间范围内,[0054] 若判断结果为若判断结果为该时间触发报文的到达时间在以接收调度表储存的接收时间点为中心,在左右相邻的一个接收窗口大小的时间范围内,则将该时间触发报文通过交叉开关矩阵crossbar存储到接收调度表预先设定的缓冲区TT buffer中,并且在到达该时间触发报文的发送时刻时,从缓存该报文的缓冲区TT buffer中读取该报文,判断该时间触发报文的数据流id和帧长度与发送调度表中储存的数据流id和帧长度是否都一致,[0055] 若判断结果为报文信息均一致,则将该时间触发报文传递到多路选择器,[0056] 若判断结果为报文信息不一致,则将该条时间触发报文丢弃掉;
[0057] 若判断结果为该时间触发报文的到达时间不在以接收调度表储存的接收时间点为中心,左右相邻的一个接收窗口大小的时间范围内,则将该时间触发报文丢弃掉;
[0058] 若判断结果为报文信息不一致,将该时间触发报文丢弃掉。
[0059] 本具体实施例根据接收调度表按时到达的实时数据进行校验,保证了实时传输的确定性,并根据发送调度表,按时将实时数据发送出去,保证了实时数据的实时性。
[0060] 在一个具体实施例中,优先级仲裁单元选择优先级最高的时间触发报文优先发送,并且通过宽带预留的方式来协调时间触发报文和非时间触发报文的发送,当时间触发报文发送成功后,记录下一次时间触发报文的发送时间,当非时间触发报文到来时,根据下一次时间触发报文的发送时间计算出剩余时间是否足够将到来的非时间触发报文发送出去,若是则将非时间触发报文发送出去,否则将非时间触发报文缓存起来,等待空闲时间发送。但是在高流量的时候,可能依然会出现时间触发报文在发送的时候,FIFO缓存区里已经有了BE报文,因为FIFO缓存区里BE报文的大小可能从0bytes~1518byte长度不等,所以TT报文转发的时候最大可能会产生1518byte/BW时间的抖动。因此TT报文发送的时候,统一采取排空策略,等待一个最长BE帧的发送时间,确保FIFO中是空的,然后在发送TT帧,这样便可以在稍微牺牲一定的时延的情况下,将时间触发报文发送的抖动降低下来。
[0061] 在一个具体实施例中,链路容错单元基于多个路线冗余备份,若有一条时间触发报文的发送路径出现损坏,则通过其他发送路径将时间触发报文进行发送,保证时间触发报文不丢包的到达目的终端,同时性能不受任何影响。
[0062] 在一个具体实施例中,基于全局时统模块确定的主时钟,实时数据按时从初始发送数据的上位机的应用层模块发出,通过内核协议栈下行至内核驱动模块,再通过DMA通道下行至第一硬件FPGA模块,实时数据按时从第一硬件FPGA模块发出,传输到交换机的第二硬件FPGA模块,实时数据经过至少一个交换机,按时到达目的终端的第一硬件FPGA模块,再通过DMA通道按时上行至内核驱动模块,最后通过内核协议栈上行至应用层模块,完成了对实时数据的传输,基于全局时统模块,使得以太网络中的设备对时间的认知保持一致,之后通过在应用层模块、内核驱动模块和第一硬件FPGA模块中添加实时优化机制,满足实时数据传输的实时性、确定性,使得传统以太网系统也能实现实时数据传输,更能适应真实的工业环境。
[0063] 本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0064] 本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0065] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈