CN109246021B - 一种基于fpga的点对点数据可靠传输系统和方法 - Google Patents
一种基于fpga的点对点数据可靠传输系统和方法 Download PDFInfo
- Publication number
- CN109246021B CN109246021B CN201811089459.8A CN201811089459A CN109246021B CN 109246021 B CN109246021 B CN 109246021B CN 201811089459 A CN201811089459 A CN 201811089459A CN 109246021 B CN109246021 B CN 109246021B
- Authority
- CN
- China
- Prior art keywords
- message
- sending
- link
- messages
- receiving
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本发明提出了一种基于FPGA的点对点数据可靠传输系统和方法,通过在接收和发送过程中采用虚拟通道技术,多个虚拟通道的组合使用可有效利用物理链路的带宽,虚拟通道的个数可以根据具体应用环境而灵活设定,实现最高的性能资源比;通过在虚拟通道中采用以报文为单位的握手协议,对发送报文进行顺序编号,每个发送报文必定对应一个带相同编号的接收确认报文才能完成传输,从而保证发送报文不丢失、不错序;通过设置链路管理模块,在通讯双方均准备好时才进行数据传输,具备链路错误报告功能和错误恢复功能;整个系统在接收和发送过程中采用虚拟通道技术,每个虚拟通道均遵循握手协议,可以保证数据不丢失、不错序以及通讯协议简单可靠。
Description
技术领域
本发明涉及通讯领域,尤其涉及一种基于FPGA的点对点数据可靠传输系统和方法。
背景技术
点对点可靠数据传输,目前广泛使用的比较成熟的传输方案是PCIe总线、RapidIO总线和基于以太网上的TCP协议总线等,以上传输方式并不是完全针对点对点传输,实现起来总体上比较复杂,需要大量的资源才能实现,且功耗较高。另外PCIe总线需要高速收发器、RapidIO总线基于高速收发器或并行总线、TCP协议总线基于成熟的以太网,对使用的硬件环境具有诸多限制,在中低速数据传输领域不具硬件成本优势和功耗优势。现需一种在保证数据不丢失、不错序的情况下使传输协议简单且可靠的点对点数据传输系统和方法。
发明内容
有鉴于此,本发明提出了一种在保证数据不丢失、不错序的情况下使传输协议简单且可靠的点对点数据传输系统和方法。
本发明的技术方案是这样实现的:本发明提供了一种基于FPGA的点对点数据可靠传输方法,其包括以下步骤:
S101、发送端发送用户报文和链路管理报文,对用户报文按照顺序进行编号,在发送端建立N个发送虚拟通道,将用户报文按照编号顺序逐一、均匀地发送到对应的发送虚拟通道中;
S102、N个发送虚拟通道对进入本通道内的用户报文按照先后顺序进行二次编号,称为“二级报文编号”,各发送虚拟通道遵循握手协议,并按照用户报文的二级报文编号顺序将用户报文发送出去,发送虚拟通道在发送一个用户报文后,接收到接收端发送的确认报文后发送下一个用户报文;
S103、发送端将各发送虚拟通道发送的用户报文、链路管理报文和接收端的确认报文按顺序合并成LVDS信号,并将LVDS信号发送到发送链路上;
S104、接收端接收链路上的LVDS信号,发送确认报文,从LVDS信号中恢复出链路管理报文、确认报文和用户报文,将确认报文发送到N个发送虚拟通道,按报文中的虚拟通道号将恢复后的用户报文分配到对应的接收虚拟通道上,将对端确认报文发送给N个发送虚拟通道;
S105、接收端按照用户报文编号顺序依次从N个接收虚拟通道提取报文并合并为用户报文数据流。
在以上技术方案的基础上,优选的,S101中发送端将用户报文按照顺序发送到对应的发送虚拟通道中的分配规则是:
S201、对用户报文按照0~65535顺序进行编号,报文编号循环利用,即报文编号从0开始,编号到65535后,下一个报文的编号是0;
S202、为N个发送虚拟通道和接收虚拟通道按0~N-1的顺序编号;
S203、按照报文编号顺序逐一、均匀地分配到N个发送虚拟通道上。
在以上技术方案的基础上,优选的,S102中同一个发送虚拟通道内的二级报文编号按照从0开始的顺序进行编号。
更进一步优选的,S102中各发送虚拟通道遵循握手协议的规则是:
S301、某发送虚拟通道发送用户报文,等待接收端接收;
S302、接收端的每个接收虚拟通道维持一个本地二级报文编号,当接收虚拟通道接收的用户报文中携带的二级报文编号与该接收虚拟通道维持的本地二级报文编号相同时,向发送端发送正确且匹配的确认报文;
S303、若接收虚拟通道接收的用户报文中携带的二级报文编号与该接收虚拟通道维持的本地二级报文编号不相等时,向发送端发送错误的确认报文,表示未正确接收匹配的用户报文;
S304、若发送端在规定的时间内收到正确且匹配的确认报文,则继续发送下一个用户报文,若在规定的时间内未接收到正确的确认报文,则重新发送用户报文。
更进一步优选的,S104中将恢复后的用户报文发送到对应的接收虚拟通道中的规则是:
S401、每个接收虚拟通道接收具有相同虚拟通道号的发送虚拟通道发送的用户报文;
S402、接收虚拟通道按照二级报文编号顺序接收二级报文编号与该接收虚拟通道维持的本地二级报文编号相同的用户报文。
在以上技术方案的基础上,优选的,S105中合并为用户报文数据流的规则是:各个接收虚拟通道接收的用户报文按照报文的接收顺序被存入接收缓存,然后按照其报文编号的顺序进行合并输出。
本发明提供了一种基于FPGA的点对点数据可靠传输系统,其包括链路管理模块、发送模块和接收模块,发送模块包括发送报文编号单元、发送报文分发单元、N个发送虚拟通道和发送报文合并单元,接收模块包括接收报文分离单元、N个接收虚拟通道和接收报文合并单元;
发送报文编号单元和发送报文分发单元信号连接,N个发送虚拟通道分别与发送报文分发单元和发送报文合并单元信号连接;
接收报文分离单元分别与N个接收虚拟通道、链路管理模块和N个发送虚拟通道信号连接,N个接收虚拟通道分别与接收报文合并单元和发送报文合并单元信号连接;
发送报文编号单元将输入的用户报文按0~65535顺序进行顺序编号,并将编号后的用户报文发送给发送报文分发单元;
发送报文分发单元将经过编号的用户报文按顺序逐一、均匀地分配到N个发送虚拟通道上;
发送虚拟通道遵循握手协议,各发送虚拟通道将分配到本发送虚拟通道的报文进行二次报文编号,各发送虚拟通道遵循握手协议,并按照用户报文的二级报文编号顺序将用户报文发送出去,发送虚拟通道在发送一个用户报文后,接收到接收端发送的对端确认报文后发送下一个用户报文;
发送报文合并单元将来自各个发送虚拟通道的用户报文、来自链路管理模块的链路管理报文和来自接收模块的本地确认报文合并,并转换为LVDS信号发送到发送链路上;
接收报文分离单元接收并解析链路上的LVDS信号,从LVDS信号中恢复出报文,从恢复报文后的报文中分离出链路管理报文、对端确认报文和用户报文,按报文中的虚拟通道号将恢复后的用户报文分配到对应的接收虚拟通道上,将对端确认报文发送给N个发送虚拟通道;接收虚拟通道按照报文编号顺序接收各自通道的用户报文,在接收到正确且匹配的用户报文后,发送该用户报文的本地确认报文给发送报文合并单元;
接收报文合并单元按照用户报文编号顺序依次从N个虚拟通道提取报文,然后合并为用户报文数据流提交到用户层。
在以上技术方案的基础上,优选的,链路管理模块包括NOLINK-IDLE单元、LINK-START单元、LINK-WAIT单元、LINK-OK单元和LINK-HOLD单元;
NOLINK-IDLE单元不发送任何报文,等待端口物理链接建立;
LINK-START单元发送LINK-START报文,同时接收接收模块的LINK-START报文,并记录LINK-START报文是否连续,至少需要连续接收3个接收模块的LINK-START报文,接收到3个连续的LINK-START报文后,LINK-START单元发送至少10个LINK-START报文,进入到LINK-WAIT单元,若超过预设时间未进入LINK-WAIT单元,则退回到NOLINK-IDLE单元;
LINK-WAIT单元发送LINK-WAIT报文,同时接收对端的LINK-WAIT报文,最少需要连续接收3个接收模块的LINK-WAIT报文,接收到3个连续的LINK-WAIT报文后,发送最少10个LINK-WAIT报文,进入到LINK-OK单元,若超过预设时间不能进入LINK-OK单元,则退回到NOLINK-IDLE单元;
LINK-OK单元每隔一个固定时间发送一个LINK-OK报文,若连续10秒钟未接收到LINK-OK报文时,进入LINK-HOLD单元;
LINK-HOLD单元每隔一个固定时间发送一个LINK-OK报文,若连续收到3个接收模块的LINK-START报文或3个接收模块的LINK-WAIT报文,进入NOLINK-IDLE单元,若连续收到3个接收模块的LINK-OK报文,则进入LINK-OK单元。
在以上技术方案的基础上,优选的,发送虚拟通道和接收虚拟通道的数量相等。
在以上技术方案的基础上,优选的,链路管理模块发送的链路管理报文是LINK-OK报文,发送模块在链路管理模块进入LINK-OK单元后,发送用户报文和确认报文,接收模块只有在链路管理模块进入LINK-OK单元后,接收用户报文和确认报文。
本发明的一种基于FPGA的点对点数据可靠传输系统和方法相对于现有技术具有以下有益效果:
(1)通过在接收和发送过程中采用虚拟通道技术,多个虚拟通道的组合使用可有效利用物理链路的带宽,虚拟通道的个数可以根据具体应用环境而灵活设定,实现最高的性能资源比;
(2)通过在虚拟通道中采用以报文为单位的握手协议,对发送报文进行顺序编号,每个发送报文必定对应一个带相同编号的接收对端确认报文才能完成传输,从而保证发送报文不丢失、不错序;
(3)通过设置链路管理模块,在通讯双方均准备好时才进行数据传输,具备链路错误报告功能和错误恢复功能;
(4)整个系统在接收和发送过程中采用虚拟通道技术,每个虚拟通道均遵循握手协议,可以保证数据不丢失、不错序以及通讯协议简单可靠。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种基于FPGA的点对点数据可靠传输方法的流程图;
图2为本发明一种基于FPGA的点对点数据可靠传输方法中发送端将用户报文按照顺序发送到对应的发送虚拟通道中的分配规则的流程图;
图3为本发明一种基于FPGA的点对点数据可靠传输方法用户报文分配到虚拟通道的结构示意图;
图4为本发明一种基于FPGA的点对点数据可靠传输方法中发送虚拟通道遵循握手协议的规则;
图5为本发明一种基于FPGA的点对点数据可靠传输方法中用户报文发送到对应的接收虚拟通道中的规则流程图;
图6为本发明一种基于FPGA的点对点数据可靠传输方法中用户报文发送到对应的接收虚拟通道中的规则示意图;
图7为本发明一种基于FPGA的点对点数据可靠传输系统的结构示意图;
图8为本发明一种基于FPGA的点对点数据可靠传输系统中发送模块的结构示意图;
图9为本发明一种基于FPGA的点对点数据可靠传输系统中接收模块的结构示意图;
图10为本发明一种基于FPGA的点对点数据可靠传输系统中链路管理模块的结构示意图。
具体实施方式
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
如图1所示,结合图2、图3、图5和图6所示,设用户报文为PKT,本发明的一种基于FPGA的点对点数据可靠传输方法,其包括以下步骤:
S101、发送端接收上层的发送用户报文指令、用户报文和链路管理报文,对用户报文按照0~65535顺序进行循环编号,即报文编号从0开始,编号到65535后,下一个报文的编号是0,在发送端建立N个发送虚拟通道,为N个发送虚拟通道按0~N-1的顺序编号,将用户报文按照编号顺序逐一、均匀地发送到对应的发送虚拟通道中,即PKT0分配到发送虚拟通道0上、PKT1分配到发送虚拟通道1上、PKT2分配到发送虚拟通道2上、……、PKTN-1分配到发送虚拟通道N-1上、PKTN分配到发送虚拟通道0上、PKTN+1分配到发送虚拟通道1上,依次类推;
S102、N个发送虚拟通道对进入本通道内的用户报文按照输入的先后顺序进行二次编号,称为“二级报文编号”,二级报文编号从0开始,各发送虚拟通道遵循“用户报文按照二级报文编号顺序进行发送,收到一个报文正确且匹配的对端确认报文后才能发送下一个报文”的规则,接收到来自接收端的对端确认报文后,将下一个用户报文发送出去;
S103、发送端将各发送虚拟通道发送的用户报文、链路管理报文和接收端的本地确认报文按顺序合并成LVDS信号,并将LVDS信号发送到发送链路上;
S104、接收端接收链路上的LVDS信号,从LVDS信号中恢复出链路管理报文、对端确认报文和用户报文,将对端确认报文发送给N个发送虚拟通道,每个接收虚拟通道接收具有相同虚拟通道号的发送虚拟通道发送的用户报文并按照二级报文编号顺序接收用户报文,每个接收虚拟通道发送本地确认报文给发送端;
S105、各接收虚拟通道遵循握手协议,接收端按照顺序依次从N个接收虚拟通道提取报文,各个接收虚拟通道接收的用户报文按照报文的发送顺序存入接收缓存,按照其报文编号的顺序进行合并输出。
其中,如图4所示,S102中各发送虚拟通道遵循“用户报文按照二级报文编号的顺序进行发送,收到一个报文正确且匹配的对端确认报文后才能发送下一个报文”的规则具体是:
S301、某发送虚拟通道发送用户报文,等待接收端接收;
S302、接收端的每个接收虚拟通道维持一个本地二级报文编号,当接收虚拟通道接收的用户报文中携带的二级报文编号与该接收虚拟通道维持的本地二级报文编号相同时,向发送端发送正确且匹配的对端确认报文;
S303、若接收虚拟通道接收的用户报文中携带的二级报文编号与该接收虚拟通道维持的本地二级报文编号不相等时,向发送端发送错误的对端确认报文,表示未正确接收匹配的用户报文;
S304、若发送端在规定的时间内收到正确且匹配的对端确认报文,则继续发送下一个用户报文,若在规定的时间内未接收到正确的对端确认报文,则重新发送用户报文。
如图7所示,本发明的一种基于FPGA的点对点数据可靠传输系统,其包括链路管理模块、发送模块和接收模块,链路管理模块分别与发送模块和接收模块信号连接,发送模块和接收模块信号连接;
发送模块,接收链路管理模块的链路管理报文,与接收模块进行全双工通信,建立N个发送虚拟通道,发送模块接收到接收模块的对端确认报文和本地确认报文后,将用户报文通过虚拟通道发送出去。如图8所示,发送模块包括发送报文编号单元、发送报文分发单元、N个发送虚拟通道和发送报文合并单元。发送报文编号单元将输入的用户报文按0~65535顺序进行顺序编号,并将编号后的用户报文发送给发送报文分发单元;发送报文分发单元将经过编号的用户报文按顺序逐一、均匀地分配到N个发送虚拟通道上,即PKT0分配到发送虚拟通道0上、PKT1分配到发送虚拟通道1上、PKT2分配到发送虚拟通道2上、……、PKTN-1分配到发送虚拟通道N-1上、PKTN分配到发送虚拟通道0上、PKTN+1分配到发送虚拟通道1上,依次类推;发送虚拟通道,遵循握手协议,各发送虚拟通道将分配到本发送虚拟通道的报文按先后顺序进行二次报文编号,二次报文编号称为“二级报文编号”,每个发送虚拟通道的二级报文编号从0开始按顺序编号,在发送虚拟通道中,按照二级报文编号的顺序发送用户报文,即在发送虚拟通道N中,先发送用户报文二级报文编号为0的用户报文,接收端发送正确且匹配的对端确认报文后,再发二级报文编号为1的用户报文,依次类推;各发送虚拟通道每发送一个用户报文都需要接收正确且匹配的对端确认报文才能发送下一个用户报文,若发送虚拟通道未接收到正确的对端确认报文,或收到无效的确认报文时,需重新发送该用户报文;发送报文合并单元,将来自各个发送虚拟通道的用户报文、来自链路管理模块的链路管理报文和来自接收模块的本地确认报文合并,并转换为LVDS信号发送到发送链路上。发送报文编号单元和发送报文分发单元信号连接,N个发送虚拟通道分别与发送报文分发单元和发送报文合并单元信号连接。
接收模块,接收并解析链路上的LVDS信号。如图9所示,接收模块包括接收报文分离单元、N个接收虚拟通道和接收报文合并单元;接收报文分离单元接收并解析链路上的LVDS信号,从LVDS信号中恢复出报文,从恢复报文后的报文中分离出链路管理报文、对端确认报文和用户报文,按报文中的虚拟通道号将恢复后的用户报文分配到对应的接收虚拟通道上,将对端确认报文发送给N个发送虚拟通道;接收虚拟通道按照报文编号顺序接收各自通道的用户报文,发送该用户报文的本地确认报文给发送报文合并单元;每个接收虚拟通道接收具有相同虚拟通道号的发送虚拟通道发送的用户报文并按照二级报文编号顺序接收用户报文,接收端的每个接收虚拟通道维持一个本地二级报文编号,当接收虚拟通道接收的用户报文中携带的二级报文编号与该接收虚拟通道维持的本地二级报文编号相同时,向发送端发送正确且匹配的本地确认报文;若接收虚拟通道接收的用户报文中携带的二级报文编号与该接收虚拟通道维持的本地二级报文编号不相等时,向发送端发送错误的本地确认报文,表示未正确接收匹配的用户报文,发送端重新发送用户报文;接收报文合并单元按照顺序依次从N个接收虚拟通道提取报文,按照报文的发送顺序将各个接收虚拟通道接收的用户报文存入接收缓存,按照其报文编号的顺序进行合并输出到用户层,即接收报文合并单元按照0到65535的顺序接收用户报文。接收报文分离单元分别与N个接收虚拟通道、链路管理模块和N个发送虚拟通道信号连接,N个接收虚拟通道分别与接收报文合并单元和发送报文合并单元信号连接。
链路管理模块,通过链路管理报文实现链路连接的建立和维持,在链路出错时向上层报告错误,在链路出现可恢复的错误时自动恢复链路。如图10所示,链路管理模块包括NOLINK-IDLE单元、LINK-START单元、LINK-WAIT单元、LINK-OK单元和LINK-HOLD单元。NOLINK-IDLE单元不发送任何报文,等待端口物理链接建立,所有复位全部无效且工作使能打开后,进入LINK-START单元;LINK-START单元发送LINK-START报文,同时接收接收模块的LINK-START报文,并记录LINK-START报文是否连续,至少需要连续接收3个接收模块的LINK-START报文,接收到3个连续的LINK-START报文后,LINK-START单元发送至少10个LINK-START报文,进入到LINK-WAIT单元,若超过一定的时间不能进入LINK-WAIT单元,则退回到NOLINK-IDLE单元;LINK-WAIT单元发送LINK-WAIT报文,同时接收对端的LINK-WAIT报文,最少需要连续接收3个接收模块的LINK-WAIT报文,接收到3个连续的LINK-WAIT报文后,发送最少10个LINK-WAIT报文,进入到LINK-OK单元;若超过一定的时间不能进入LINK-OK单元,则退回到NOLINK-IDLE单元;LINK-OK单元每隔一个固定时间发送一个LINK-OK报文,若连续10秒钟未接收到LINK-OK报文时,进入LINK-HOLD单元;LINK-HOLD单元每隔一个固定时间发送一个LINK-OK报文,若连续收到3个接收模块的LINK-START报文或3个接收模块的LINK-WAIT报文,进入NOLINK-IDLE单元,若连续收到3个接收模块的LINK-OK报文,则进入LINK-OK单元。发送模块只有在链路管理模块进入LINK-OK单元后,才能发送用户报文和确认报文,接收模块只有在链路管理模块进入LINK-OK单元后,才能接收用户报文和确认报文。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于FPGA的点对点数据可靠传输方法,其包括以下步骤:
S101、发送端发送用户报文和链路管理报文,对用户报文按照顺序进行编号,在发送端建立N个发送虚拟通道,将用户报文按照编号顺序逐一、均匀地发送到对应的发送虚拟通道中;
S102、N个发送虚拟通道对进入本通道内的用户报文按照先后顺序进行二次编号,称为“二级报文编号”,各发送虚拟通道遵循握手协议,并按照用户报文的二级报文编号顺序将用户报文发送出去,发送虚拟通道在发送一个用户报文后,接收到接收端发送的对端确认报文后发送下一个用户报文;
S103、发送端将各发送虚拟通道发送的用户报文、链路管理报文和接收端的本地确认报文按顺序合并成LVDS信号,并将LVDS信号发送到发送链路上;
S104、接收端接收链路上的LVDS信号,从LVDS信号中恢复出链路管理报文、对端确认报文和用户报文,将对端确认报文发送到N个发送虚拟通道,并按报文中的虚拟通道号将恢复后的用户报文发送到对应的接收虚拟通道中,接收虚拟通道按照报文编号顺序接收各自通道的用户报文,发送该用户报文的本地确认报文给发送端;
S105、接收端按照用户报文编号顺序依次从N个接收虚拟通道提取报文并合并为用户报文数据流。
2.如权利要求1所述的一种基于FPGA的点对点数据可靠传输方法,其特征在于:所述S101中发送端将用户报文按照顺序发送到对应的发送虚拟通道中的分配规则是:
S201、对用户报文按照0~65535顺序进行编号,报文编号循环利用,即报文编号从0开始,编号到65535后,下一个报文的编号是0;
S202、为N个发送虚拟通道和接收虚拟通道按0~N-1的顺序编号;
S203、按照报文编号顺序逐一、均匀地分配到N个发送虚拟通道上。
3.如权利要求1所述的一种基于FPGA的点对点数据可靠传输方法,其特征在于:所述S102中同一个发送虚拟通道内的二级报文编号按照从0开始的顺序进行编号。
4.如权利要求3所述的一种基于FPGA的点对点数据可靠传输方法,其特征在于:所述S102中各发送虚拟通道遵循握手协议的规则是:
S301、某发送虚拟通道发送用户报文,等待接收端接收;
S302、接收端的每个接收虚拟通道维持一个本地二级报文编号,当接收虚拟通道接收的用户报文中携带的二级报文编号与该接收虚拟通道维持的本地二级报文编号相同时,向发送端发送正确且匹配的对端确认报文;
S303、若接收虚拟通道接收的用户报文中携带的二级报文编号与该接收虚拟通道维持的本地二级报文编号不相等时,向发送端发送错误的对端确认报文,表示未正确接收匹配的用户报文;
S304、若发送端在规定的时间内收到正确且匹配的对端确认报文,则继续发送下一个用户报文,若在规定的时间内未接收到正确的对端确认报文,则重新发送用户报文。
5.如权利要求2所述的一种基于FPGA的点对点数据可靠传输方法,其特征在于:所述S104中将恢复后的用户报文发送到对应的接收虚拟通道中的规则是:
S401、每个接收虚拟通道接收具有相同虚拟通道号的发送虚拟通道发送的用户报文;
S402、接收虚拟通道按照二级报文编号顺序接收二级报文编号与该接收虚拟通道维持的本地二级报文编号相同的用户报文。
6.如权利要求1所述的一种基于FPGA的点对点数据可靠传输方法,其特征在于:所述S105中合并为用户报文数据流的规则是:各个接收虚拟通道接收的用户报文按照报文的接收顺序被存入接收缓存,然后按照其报文编号的顺序进行合并输出。
7.一种基于FPGA的点对点数据可靠传输系统,其包括链路管理模块、发送模块和接收模块,其特征在于:所述发送模块包括发送报文编号单元、发送报文分发单元、N个发送虚拟通道和发送报文合并单元,接收模块包括接收报文分离单元、N个接收虚拟通道和接收报文合并单元;
所述发送报文编号单元和发送报文分发单元信号连接,N个发送虚拟通道分别与发送报文分发单元和发送报文合并单元信号连接;
所述接收报文分离单元分别与N个接收虚拟通道、链路管理模块和N个发送虚拟通道信号连接,N个接收虚拟通道分别与接收报文合并单元和发送报文合并单元信号连接;
所述发送报文编号单元将输入的用户报文按0~65535顺序进行顺序编号,并将编号后的用户报文发送给发送报文分发单元;
所述发送报文分发单元将经过编号的用户报文按顺序逐一、均匀地分配到N个发送虚拟通道上;
所述发送虚拟通道遵循握手协议,各发送虚拟通道将分配到本发送虚拟通道的报文进行二次报文编号,各发送虚拟通道遵循握手协议,并按照用户报文的二级报文编号顺序将用户报文发送出去,发送虚拟通道在发送一个用户报文后,接收到接收端发送的对端确认报文后发送下一个用户报文;
所述发送报文合并单元将来自各个发送虚拟通道的用户报文、来自链路管理模块的链路管理报文和来自接收模块的本地确认报文合并,并转换为LVDS信号发送到发送链路上;
所述接收报文分离单元接收并解析链路上的LVDS信号,从LVDS信号中恢复出报文,从恢复的报文中分离出链路管理报文、对端确认报文和用户报文,按报文中的虚拟通道号将恢复后的用户报文分配到对应的接收虚拟通道上,将对端确认报文发送给N个发送虚拟通道;
所述接收虚拟通道按照报文编号顺序接收各自通道的用户报文,在接收到正确且匹配的用户报文后,发送该用户报文的本地确认报文给发送报文合并单元;
所述接收报文合并单元按照用户报文编号顺序依次从N个虚拟通道提取报文,然后合并为用户报文数据流提交到用户层。
8.如权利要求7所述的一种基于FPGA的点对点数据可靠传输系统,其特征在于:所述链路管理模块包括NOLINK-IDLE单元、LINK-START单元、LINK-WAIT单元、LINK-OK单元和LINK-HOLD单元;
所述NOLINK-IDLE单元不发送任何报文,等待端口物理链接建立;
所述LINK-START单元发送LINK-START报文,同时接收接收模块的LINK-START报文,并记录LINK-START报文是否连续,至少需要连续接收3个接收模块的LINK-START报文,接收到3个连续的LINK-START报文后,LINK-START单元发送至少10个LINK-START报文,进入到LINK-WAIT单元,若超过预设时间未进入LINK-WAIT单元,则退回到NOLINK-IDLE单元;
所述LINK-WAIT单元发送LINK-WAIT报文,同时接收对端的LINK-WAIT报文,最少需要连续接收3个接收模块的LINK-WAIT报文,接收到3个连续的LINK-WAIT报文后,发送最少10个LINK-WAIT报文,进入到LINK-OK单元,若超过预设时间不能进入LINK-OK单元,则退回到NOLINK-IDLE单元;
所述LINK-OK单元每隔一个固定时间发送一个LINK-OK报文,若连续10秒钟未接收到LINK-OK报文时,进入LINK-HOLD单元;
所述LINK-HOLD单元每隔一个固定时间发送一个LINK-OK报文,若连续收到3个接收模块的LINK-START报文或3个接收模块的LINK-WAIT报文,进入NOLINK-IDLE单元,若连续收到3个接收模块的LINK-OK报文,则进入LINK-OK单元。
9.如权利要求7所述的一种基于FPGA的点对点数据可靠传输系统,其特征在于:所述发送虚拟通道和接收虚拟通道的数量相等。
10.如权利要求7所述的一种基于FPGA的点对点数据可靠传输系统,其特征在于:所述链路管理模块发送的链路管理报文是LINK-OK报文,发送模块在链路管理模块进入LINK-OK单元后,发送用户报文和确认报文,接收模块只有在链路管理模块进入LINK-OK单元后,接收用户报文和确认报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811089459.8A CN109246021B (zh) | 2018-09-18 | 2018-09-18 | 一种基于fpga的点对点数据可靠传输系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811089459.8A CN109246021B (zh) | 2018-09-18 | 2018-09-18 | 一种基于fpga的点对点数据可靠传输系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109246021A CN109246021A (zh) | 2019-01-18 |
CN109246021B true CN109246021B (zh) | 2022-03-11 |
Family
ID=65059082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811089459.8A Active CN109246021B (zh) | 2018-09-18 | 2018-09-18 | 一种基于fpga的点对点数据可靠传输系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109246021B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110830386B (zh) * | 2019-11-14 | 2023-06-30 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 报文保序的方法、装置和系统 |
CN113055193B (zh) * | 2021-03-16 | 2023-02-17 | 盛立安元科技(杭州)股份有限公司 | 一种数据多播传输方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581761A (zh) * | 2003-08-14 | 2005-02-16 | 国际商业机器公司 | 用于网络传输丢失容限的客户端应用控制的方法和系统 |
CN103490972A (zh) * | 2013-09-27 | 2014-01-01 | 迈普通信技术股份有限公司 | 多链路隧道报文传输方法及系统 |
CN103618678A (zh) * | 2013-11-18 | 2014-03-05 | 北京星网锐捷网络技术有限公司 | 自适应多链路聚合的方法、装置及系统 |
CN105656747A (zh) * | 2015-11-11 | 2016-06-08 | 乐卡汽车智能科技(北京)有限公司 | 一种多链路数据传输的方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7453878B1 (en) * | 2000-07-21 | 2008-11-18 | Silicon Graphics, Inc. | System and method for ordering of data transferred over multiple channels |
-
2018
- 2018-09-18 CN CN201811089459.8A patent/CN109246021B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581761A (zh) * | 2003-08-14 | 2005-02-16 | 国际商业机器公司 | 用于网络传输丢失容限的客户端应用控制的方法和系统 |
CN103490972A (zh) * | 2013-09-27 | 2014-01-01 | 迈普通信技术股份有限公司 | 多链路隧道报文传输方法及系统 |
CN103618678A (zh) * | 2013-11-18 | 2014-03-05 | 北京星网锐捷网络技术有限公司 | 自适应多链路聚合的方法、装置及系统 |
CN105656747A (zh) * | 2015-11-11 | 2016-06-08 | 乐卡汽车智能科技(北京)有限公司 | 一种多链路数据传输的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109246021A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102457537B (zh) | 一种传输控制协议的通信方法及服务器 | |
CN109246021B (zh) | 一种基于fpga的点对点数据可靠传输系统和方法 | |
CN102143185B (zh) | 数据传输方法和数据传输装置 | |
CN100542083C (zh) | 通过分组网络实现网络同步的方法和系统 | |
CN103188054B (zh) | 反馈时延的获取方法、装置及系统 | |
CN109729102B (zh) | 一种实现异构协议自协商的方法 | |
WO2007076728A1 (fr) | Procede et dispositif pour service de transmission utilisant des bus de service de fond de panier | |
CN104702371A (zh) | 基于网络可靠传输协议的双链路数据传输方法 | |
CN102231126B (zh) | 一种实现多核处理器中核间备份的方法及系统 | |
CN201623716U (zh) | 带反馈的单向传输系统 | |
CN101132337A (zh) | 一种基于e1传输的2m环路网络系统 | |
CN113114404A (zh) | 一种通用eCPRI接口拓展装置及方法 | |
CN116319597A (zh) | 一种光纤通道下增强数据实时传输方法 | |
CN114039810B (zh) | 基于以太网的柔性自动化控制系统 | |
CN102970078A (zh) | 一种光纤网络系统及采用该系统进行异步通信数据传输的方法 | |
CN201994043U (zh) | 一种led显示屏多路rs-232接口电路 | |
CN203070516U (zh) | 一种基于以太组网架构下电表集抄系统 | |
CN102377482A (zh) | 一种光纤通道业务故障传递方法及装置 | |
CN103064810A (zh) | 一种实现卫星串口通信的方法 | |
CN208971553U (zh) | 基于点对点的通讯网络系统 | |
CN102457426B (zh) | 一种汇聚型EoPDH网桥设备及其数据传输方法 | |
US6912210B1 (en) | Data communication system and communication device used | |
CN107800639B (zh) | 交换装置、交换装置组、数据传输方法和计算机系统 | |
CN104836754A (zh) | 利用高速Serdes实现背板自协商功能的方法及装置 | |
CN113300756B (zh) | 一种基于ccsds规范的星间链路网状路由系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |