基于光纤的通信方法及系统与流程

文档序号:16847679发布日期:2019-02-12 22:27阅读:236来源:国知局
基于光纤的通信方法及系统与流程

本发明涉及通信技术领域,尤其涉及一种基于光纤的通信方法及系统。



背景技术:

自从进入第三次工业革命以来,电子通信技术得到了迅猛发展。如今电子通讯技术已经渗透到了各行各业中,人们的生活也离不开电子通信技术。经过几十年的发展,电子通信技术也在不断的演变,从模拟通信技术到数字通信技术,从有线通信到无线通信再到光纤通信。

然而不管是哪一种通信技术,通讯信息最终需要被转换成信息载体在物理信道上传输。信息载体在物理信道上传输时总会存在一定的衰减,并且物理信道总是会存在干扰噪声,这是信道的固有特性。在通信系统中,由于物理信道的这些固有特性,信息载体在信道上传输时并不能保证100%的可靠。也就是说对于任一通信系统,其信道的误码都是不可避免的。



技术实现要素:

本发明的主要目的在于提出一种基于光纤的通信方法及系统,旨在解决现有物理信道数据传输错误导致通信失败的技术问题。

为实现上述目的,本发明一方面提供基于光纤的通信方法,所述方法包括:

发送端向接收端发送数据帧并要求接收端回复确认帧,若没有收到确认帧或接收到错误状态,发送端进行数据重传;

接收端接收并对所述数据帧进行校验;当校验所述数据帧出现错误时,向发送端反馈错误状态;

其中,所述发送端和所述接收端采用滑动窗口协议对所述数据帧进行流量控制和错误重传。

进一步的,所述发送端向接收端发送数据帧之前,所述方法还包括:

发送端与接收端双向建立链接。

进一步的,所述发送端与接收端双向建立链接包括发送端与接收端建立链接和接收端与发送端建立链接;

所述发送端与接收端建立链接包括:

发送端向接收端发送同步帧;

接收端接收到所述同步帧后,向发送端回复同步应答帧;

发送端接收到所述同步应答帧后,向接收端发送不携带任何信息的数据帧;

接收端接收到所述数据帧后,向发送端回复确认帧确认发送端与接收端建立链接;

所述接收端与发送端建立链接包括:

接收端向发送端发送同步帧;

发送端接收到所述同步帧后,向接收端回复同步应答帧;

接收端接收到所述同步应答帧后,向发送端发送不携带任何信息的数据帧;

发送端接收到所述数据帧后,向接收端回复确认帧确认接收端与发送端建立链接。

进一步的,发送端与接收端双向建立链接之后,所述方法还包括:

发送端定时向接收端发送实时帧;

其中,所述实时帧用于传输应用层的实时信息,所述实时帧的发送优先级高于所述数据帧,所述实时帧可以打断所述数据帧的传输。

进一步的,所述方法还包括:

发送端对所述数据帧进行校验;

当发送端校验所述数据帧错误时,向接收端重传所述数据帧。

进一步的,所述发送端向接收端发送数据帧包括:

将发送端待下发的数据暂存到fpga的缓存中,在发送窗口允许的情况下,从缓存中读取数据并将其打包成帧发送给接收端;

所述接收端接收并对所述数据帧进行校验;当校验所述数据帧出现错误时,向发送端反馈错误状态包括:

将接收到的数据写入fpga的fifo中,用作数据缓存和跨时钟处理;

从fifo中读出数据进行解析并校验,校验正确时将所述数据写入到接收缓存中,校验错误时将所述数据反馈给发送端。

进一步的,所述数据帧至少包括发送帧序列号、应答确认帧序列号、接收窗口的容量和crc校验码;所述接收到错误状态包括:接收到应答序列号错误,或者,接收到错误应答。

本发明另一方面还提供一种基于光纤的通信系统,包括:

发送端,用于向接收端发送数据帧并要求接收端回复确认帧,若没有收到确认帧或接收到错误状态,发送端进行数据重传;

接收端,用于接收并对所述数据帧进行校验;当校验所述数据帧出现错误时,向发送端反馈错误状态;

其中,所述发送端和所述接收端采用滑动窗口协议对所述数据帧进行流量控制和错误重传。

进一步的,所述发送端还用于定时向接收端发送实时帧;

其中,所述实时帧用于传输应用层的实时信息,所述实时帧的发送优先级高于所述数据帧,所述实时帧可以打断所述数据帧的传输。

进一步的,所述发送端包括:

缓存模块,用于将发送端待下发的数据暂存到fpga的缓存中;

发送模块,用于在发送窗口允许的情况下,从缓存中读取数据并将其打包成帧发送给接收端;

第一crc计算模块,用于对数据帧进行校验;当校验所述数据帧错误时,向接收端重传所述数据帧;

所述接收端包括:

写入模块,用于将接收到的数据先被写入fpga的fifo中,用作数据缓存和跨时钟处理;

第二crc计算模块,用于从fifo中读出数据进行解析并校验,校验正确时将所述数据写入到接收缓存中,并向发送端回复确认帧,校验错误时向发送端回复错误状态。

本发明提供的基于光纤的通信方法及系统,链路层帧采用了滑动窗口的机制用以保障数据帧的正确、可靠传输。发送端在发送一帧数据后,要求接收端回复一个确认帧,如果若没有收到确认帧或接收到错误状态,发送端需要对数据进行重传,从而保证了数据传输的正确、可靠性。本发明与现有的tcp/ip协议相比,发送端在发送数据帧的同时定时发送实时帧,当通信节点的网络出现阻塞时,可以通过实时帧传输一些关键信息。

附图说明

图1为本发明实施例一提供的一种基于光纤的通信方法流程图;

图2为本发明实施例二提供的一种基于光纤的通信方法流程图;

图3为本发明实施例二发送端与接收端建立链接示意图;

图4为本发明实施例二提供的滑动窗口流量控制示意图;

图5为本发明实施例三提供的基于光纤的通信系统结构示意图;

图6为本发明实施例三发送端的fpga逻辑电路结构示意图;

图7为本发明实施例三接收端的fpga逻辑电路结构示意图;

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。

本发明中通信协议分为3层:应用层、数据链路层和物理层。发送数据时,应用层将数据下发到数据链路层;数据链路层将应用层数据打包成固定格式下发到物理层;物理层负责将传输到。接收时数据流向和发送时相反。

其中,应用层数据为节点间交付的有效数据,本技术方案确保通信节点应用层的数据能够可靠地进行传输,具体包括发送端能正确的将数据传输给接收端,接收端接收到的数据是正确的。此外,本发明在数据链路层定义了实时帧和数据帧,可以为应用层提供不同的服务。物理层仅负责完成数据的交付。

本发明的可靠通信主要是通过数据链路层实现的。链路层在发送数据帧时,要求接收端反馈接收状态。如果接收端出现接收错误的情况,发送端将进行数据重传。节点接收到一个数据帧时,数据链路层会对接收到的数据帧进行校验,检查数据帧是否出错。如果接收数据帧正确,数据链路层将数据帧上报给应用层;如果接收数据帧出错,数据链路层将反馈一个错误状态到发送端,要求发送端进行数据重传。

本发明的通信协议由fpga逻辑实现,通信信道选用光纤。由于fpga数据处理速度快以及低延时的特性,加上光纤抗干扰强。采用本发明所构建的通信系统可以拥有良好的抗干扰、传输速率高、响应快的特点。

下面对本发明的具体实施方式进行详细说明。

实施例一

本发明实施例一提供一种基于光纤的通信方法,如图1所示,所述方法包括:

s1、发送端向接收端发送数据帧并要求接收端回复确认帧;

s2、接收端接收并对所述数据帧进行校验;当校验所述数据帧出现错误时,向发送端反馈错误状态;

s3、若没有收到确认帧或接收到错误状态,发送端进行数据重传;

其中,所述发送端和所述接收端采用滑动窗口协议对所述数据帧进行流量控制和错误重传。

滑动窗口协议的基本原理就是在任意时刻,发送端都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收端也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送端窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。接收端的窗口的大小意味着接收端还有多大的缓冲区可以用于接收数据。发送端可以通过滑动窗口的大小来确定应该发送多少字节的数据。

本发明提供的基于光纤的通信方法,链路层帧采用了滑动窗口的机制用以保障数据帧的正确、可靠传输。发送端在发送一帧数据后,要求接收端回复一个确认帧,如果若没有收到确认帧或接收到错误状态,发送端需要对数据进行重传,从而保证了数据传输的正确、可靠性。

实施例二

如图2所示为本发明实施例二提供的基于光纤的通信方法,所述方法包括:

s101、发送端与接收端双向建立链接。

链路层在传输应用层加入了滑动窗口协议,因此链路层在发送数据帧前必须要先与对方建立链接,否则链路层不会响应应用层的传输请求。

本实施例中,所述发送端与接收端双向建立链接包括发送端与接收端建立链接和接收端与发送端建立链接;

其中,所述发送端与接收端建立链接包括:

发送端向接收端发送同步帧;

接收端接收到所述同步帧后,向发送端回复同步应答帧;

发送端接收到所述同步应答帧后,向接收端发送不携带任何信息的数据帧;

接收端接收到所述数据帧后,向发送端回复确认帧确认发送端与接收端建立链接;

所述接收端与发送端建立链接包括:

接收端向发送端发送同步帧;

发送端接收到所述同步帧后,向接收端回复同步应答帧;

接收端接收到所述同步应答帧后,向发送端发送不携带任何信息的数据帧;

发送端接收到所述数据帧后,向接收端回复确认帧确认接收端与发送端建立链接。

具体的,建立链接的过程如图3所示,对于发送端a而言,系统上电后,链路层会自动发送一个同步帧,接收端b在收到发送端a的同步帧后,回应一个同步应答帧,表示收到同步请求。发送端a接收到接收端b的同步应答后,发送一个不携带任何信息的数据帧给接收端b,接收端b再回应一个ack帧给发送端a。发送端a如果能正确收到接收端b的ack帧,则表示发送端a与接收端b建立链接。对于接收端b而言也是会有同样的一个与发送端a建立链接的过程,在此不再赘述。

上述同步帧、同步应答帧、ack帧都均为数据帧。

至此,发送端a与接收端b双向建立链接。

s102、发送端定时向接收端发送实时帧;

其中,所述实时帧用于传输应用层的实时信息,所述实时帧的发送优先级高于所述数据帧,所述实时帧可以打断所述数据帧的传输。

在一种具体实施方式中,实时帧长度固定为3个字节。链路层要求节点每隔10us时间发送一个实时帧。实时帧的发送不需要应用层发起,链路层会自行定时发送。表1所示为实时帧的具体格式。

表1实时帧格式

实时帧用来传输应用层的实时信息,实时帧的发送优先级高于断数据帧,实时帧可以打断数据帧的传输。在传输一个数据帧的过程中间,如有一个实时帧需要被发送,当前数据帧将会停止,等到实时帧发送完毕后在继续发送被中断的数据帧。

本发明中,实时帧不存在通信阻塞的情况。实时帧的crc16生成多项式为:x16+x12+x5+1。

s103、发送端向接收端发送数据帧并要求接收端回复确认帧,若没有收到确认帧或接收到错误状态,发送端进行数据重传;

本实施例中,所述数据帧至少包括发送帧序列号、应答确认帧序列号、接收窗口的容量和crc校验码;数据帧的具体格式如表2所示。

表2数据帧格式

其中,发送帧序列号seq的初值seq=16’h1000。发送完len长度数据/命令后,再发送下一帧时,发送帧序列号seq的值设置为seq=seq+len。

应答确认帧序列号cfmd_seq:接收端在收到一帧数据后后,需要回应一个应答帧。回复的应答序列号为cfmd_seq=seq+len,其中seq和len为接收到的信息。

接收窗口的容量:表示接收缓存的可用余量。发送端在打包一个链路层帧时,需要把自身的接收窗口的容量发送给接收端。

帧载荷:帧载荷内容为应用层数据。

帧载荷的长度:表示帧载荷字段携带的数据量。

crc32校验:在普通帧中加入crc32校验,用于错误重传机制。crc32计算范围为整个帧的所有内容,即表2中的0至n+6words。数据帧crc32的生成项多项式为:x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1。

本发明的通信协议由fpga逻辑实现,通信信道选用光纤。所述发送端向接收端发送数据帧包括:

将发送端待下发的数据暂存到fpga的缓存中,在发送窗口允许的情况下,从缓存中读取数据并将其打包成帧发送给接收端。

由于fpga数据处理速度快以及低延时的特性,加上光纤抗干扰强。本发明具有良好的抗干扰、传输速率高、响应快的特点。

本实施例中,所述发送端和所述接收端采用滑动窗口协议对所述数据帧进行流量控制和错误重传。滑动窗口协议的基本原理就是在任意时刻,发送端都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收端也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送端窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。接收端的窗口的大小意味着接收端还有多大的缓冲区可以用于接收数据。发送端可以通过滑动窗口的大小来确定应该发送多少字节的数据。

具体的,如图4所示,发送端hosta的初始窗口大小为2048。当发送端hosta连续发送两个字长为256的帧,并且没有收到接收端hostb的ack帧确认的情况下,发送窗口减小为1536。当发送端hosta收到接收端hostb的确认帧,确认前面两帧数据已经发送成功,并且接收端hostb的接收窗口大小为2048,发送端hosta的发送窗口大小恢复为2048。

本发明中,流量控制只是针对应用层而言的,链路层会自动完成应用层数据的流量控制,避免应用层出现数据堵塞的情况。发送端与接收端在建立链接的过程中,会把各自的接收窗口告知对方,并且在后续的通信过程中,发送端发出的所有帧都需要携带接收窗口信息。这样建立链接的双方在互相通信的过程中就可以实时了解对方可用的接收缓存到底有多少。发送端会根据接收端的接收窗口大小来发送数据,以确保所发送数据不会大于接收窗口。

如果接收端窗口为0,则发送端不会再响应应用层的数据/命令发送请求,而是间隔一定时间一直发送不携带任何信息的数据帧,以此来不断查询接收端的接收窗口。直到接收端接收窗口有余量时,发送端才能给应用层提供数据/命令发送服务。

本发明中,错误重传的机制由链路层自动完成。发送端在发送完一帧数据后,在以下3种情况下需要进行数据重传:

1、没有收到ack应答;

2、应答的序列号不符合要求;

3、收到一个错误应答;

s104、接收端接收并对所述数据帧进行校验;当校验所述数据帧出现错误时,向发送端反馈错误状态;

具体的,本步骤包括:

s1041、将接收到的数据写入fpga的fifo中,用作数据缓存和跨时钟处理;

s1042、从fifo中读出数据进行解析和校验,校验正确时将所述数据写入到接收缓存中,校验错误时将所述数据反馈给发送端。

s105、发送端对所述数据帧进行校验,当发送端校验所述数据帧错误时,向接收端重传所述数据帧。

本发明提供的基于光纤的通信方法,链路层帧采用了滑动窗口的机制用以保障数据帧的正确、可靠传输。发送端在发送一帧数据后,要求接收端回复一个确认帧,如果若没有收到确认帧或接收到错误状态,发送端需要对数据进行重传,从而保证了数据传输的正确、可靠性。本发明与现有的tcp/ip协议相比,发送端在发送数据帧的同时定时发送实时帧,当通信节点的网络出现阻塞时,可以通过实时帧传输一些关键信息。

基于上述各个方法实施例,本发明还提供以下装置实施例。

实施例三

本发明实施例三提供一种基于光纤的通信系统,如图5所示,该系统包括:

发送端51,用于向接收端发送数据帧并要求接收端回复确认帧,若没有收到确认帧或接收到错误状态,发送端进行数据重传;

接收端52,用于接收并对所述数据帧进行校验;当校验所述数据帧出现错误时,向发送端反馈错误状态;

其中,所述发送端51和所述接收端52采用滑动窗口协议对所述数据帧进行流量控制和错误重传。

进一步的,所述发送端51还用于定时向接收端52发送实时帧;

其中,所述实时帧用于传输应用层的实时信息,所述实时帧的发送优先级高于所述数据帧,所述实时帧可以打断所述数据帧的传输。

具体的,所述发送端51包括:

缓存模块,用于将发送端待下发的数据暂存到fpga的缓存中;

发送模块,用于在发送窗口允许的情况下,从缓存中读取数据并将其打包成帧发送给接收端;

第一crc计算模块,用于对数据帧进行校验;当校验所述数据帧错误时,向接收端重传所述数据帧;

发送端51的fpga逻辑电路结构如图6所示,其中,linkfsm为链接状态机,txwindowctrl为发送窗口控制模块,txcache为发送缓存模块,txfsm为发送状态机,framepackage为帧打包模块,crc为crc校验模块,phy为物理层。工作时,发送端51将应用层下发的数据暂存到fpga内部的缓存中,如果发送窗口允许的情况下,发送端51从缓存中读取数据并将其打包成链路层的帧后下发到物理层。本发明发送端51通过fpga逻辑实现,通信信道选用光纤。由于fpga数据处理速度快以及低延时的特性,加上光纤抗干扰强。本发明具有良好的抗干扰、传输速率高、响应快的特点。

发送端在进行帧格式打包时,每一帧最大可携带的帧载荷为256个字节。在打包过程中如果遇到发送缓存为空或已经打包的数据和接收端的接收缓存相等时,发送端会停止继续从发送缓存中读取数据,直接把已经打包好的数据组成一个数据帧发送出去。

所述接收端52包括:

写入模块,用于将接收到的数据先被写入fpga的fifo中,用作数据缓存和跨时钟处理;

第二crc计算模块,用于从fifo中读出数据进行解析并校验,校验正确时将所述数据写入到接收缓存中,并向发送端回复确认帧,校验错误时向发送端回复错误状态。

接收端52的fpga逻辑电路结构如图7所示,其中,phy为物理层,crc为crc校验模块,fifo为先入先出缓存模块,rxfsm为接收状态机,framedecode为帧解码模块,rxwindowctrl为接收窗口控制模块,rxcache为接收缓存模块。接收状态机rxfsm与发送端51连接。工作时,物理层(phy)上报给链路层的数据先被写入到fpga的fifo中,用作数据缓存和跨时钟域处理。接收端从fifo读出数据进行链路层帧格式解析和校验。如果校验crc32正确,接收端将会把playload字段中的数据(应用层数据)写入到接收缓存中。如果校验crc32错误,接收端将丢弃当前帧的数据,并将错误信息通知发送端,向发送端反馈一个ack帧。本发明接收端52通过fpga逻辑实现,通信信道选用光纤。由于fpga数据处理速度快以及低延时的特性,加上光纤抗干扰强。本发明具有良好的抗干扰、传输速率高、响应快的特点。

本发明提供的基于光纤的通信方法及系统,链路层帧采用了滑动窗口的机制用以保障数据帧的正确、可靠传输。发送端在发送一帧数据后,要求接收端回复一个确认帧,如果若没有收到确认帧或接收到错误状态,发送端需要对数据进行重传,从而保证了数据传输的正确、可靠性。本发明与现有的tcp/ip协议相比,发送端在发送数据帧的同时定时发送实时帧,当通信节点的网络出现阻塞时,可以通过实时帧传输一些关键信息。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

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