CN103957089B - 一种高可靠线速数据通信方法 - Google Patents
一种高可靠线速数据通信方法 Download PDFInfo
- Publication number
- CN103957089B CN103957089B CN201410173321.1A CN201410173321A CN103957089B CN 103957089 B CN103957089 B CN 103957089B CN 201410173321 A CN201410173321 A CN 201410173321A CN 103957089 B CN103957089 B CN 103957089B
- Authority
- CN
- China
- Prior art keywords
- pointer
- data
- sequence number
- buffering area
- current
- 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.)
- Expired - Fee Related
Links
Landscapes
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的目的在于提供一种高可靠线速数据通信方法。本通信方法是在发送方采用基于环形发送缓冲池的方式与接收方进行通信。发送方的缓存控制模块检测到发送缓冲池非满,则把外部待发数据存储到尾指针指向的发送缓冲池;发送方传输控制模块检测到发送缓冲池非空,把当前指针指向的缓冲数据读取出来,然后传输给相应的通信通道;发送传输超时控制模块接收到接收方返回的应答信息后,若应答序号与头指针对应的序列号一致,则修改头指针,若在一定时间内没有收到应答信息,则对头指针指向的缓冲区进行超时重发。本发明采用数据并发方式进行传输,实现了数据的线速传输,对数据的应答进制也进行了定义,提高了传输的可靠性。
Description
技术领域
本发明涉及基于自定义的以太网可靠通信方法,特别涉及一种高可靠线速通信方法。
背景技术
随着云计算以及大数据处理的发展需求,基于现场可编程逻辑阵列(FPGA)由于其灵活性、可编程性以及丰富的高速通信接口,在这些领域得到了越来越多的应用。而随着规模的扩展,可编程逻辑阵列之间的高可靠高速数据通信变的更加的迫切。同时由于以太网的交换机技术较为成熟,成本也比较低廉,成为可编程逻辑阵列之间交换介质的首选。传统基于TCP/IP协议的可靠通信由于协议实现比较复杂,不太适合FPGA之间的通信。基于此本专利提出了一种适合FPGA之间线速并发通信的一种方法。
以太网中对数据发送和接收均是基于以太帧格式来展开的,在不改变以太网硬件设备的情况下,可以通过对以太帧的某些部分进行更为细致的定义,使传输达到我们设定的要求。
发明内容
本发明的目的在于针对已有技术存在的缺陷,提供一种高可靠线速数据通信方法,提高传输速度及传输可靠性。
为达到上述目的本发明采用下述技术方案:
一种高可靠线速数据通信方法,发送方基于一个环形发送缓冲池与接收方通信,通信操作步骤如下:
a)发送方的缓存控制模块只要检测到发送缓冲池非满,即Send_Buf_Full信号无效,则从外部待发数据队列获取一帧信息,然后存储到尾指针指向的发送缓冲池,等待该帧存储完毕,产生存储完成信号TSend_ok,环形缓冲区的尾指针指向下一个缓冲区;
b)发送方的传输控制模块只要检测到发送缓冲池非空,即Send_Buf_Empty信号无效,则把当前指针指向的缓冲数据读取出来,然后传输给相应的通信通道;
c)发送方接收到接收方返回的应答信息后,判断应答信息的应答序号是否与头指针对应的待确认序号一致,如果一致,产生头指针修改信号Head_snd_ok,将环形缓冲区的头指针向下一个缓冲区。
上述高可靠线速数据通信方法,所述环形发送缓冲池,由M(M为自然数)个缓冲区组成,包含头指针、尾指针和当前指针,并定义指针绕行方向,头指针指向第一个存有数据的缓冲区,尾指针指向最后一个存有数据的缓冲区,当前指针指向正在发送的缓冲区,发送缓冲池的缓存状态通过头指针和尾指针定义。
上述高可靠线速数据通信方法,发送缓冲池由M个双端口存储器构成的缓冲区组成,初始上电时,缓冲区没有数据,头指针、尾指针以及当前指针重合,此时缓存状态计数X记为0;每存入一个缓冲区,尾指针沿指针绕行方向移动一次,缓存状态计数X加1;每释放一个缓冲区,头指针沿指针绕行方向移动一次,缓存状态计数X减1;每发送一个数据,则当前指针沿指针绕行方向移动一次,若当前指针与尾指针不重合,则Send_Buf_Empty信号无效,否则Send_Buf_Empty有效;当缓存状态计数X=缓冲区数量M时,发送缓冲池满Send_Buf_Full有效,不能再缓存任何数据,X<M时,发送缓冲池为非满,即Send_Buf_Full信号无效。
上述高可靠线速数据通信方法,发送方的传输控制模块为当前指针所指缓冲区的数据帧添加当前序号,当前序号即当前指针对应的缓冲区编号,然后发给接收方;发送完成后,当前指针指向下一缓冲区,进行下一次发送。
上述高可靠线速数据通信方法,接收方用FIFO作为缓存,接收方检测到待收数据后,先判断接收缓冲区是否有空位,如果没有空位则丢弃该数据;如果有空位则接收,然后根据封装在数据中的当前序号判断该序号是否为接收方的当前序号,如果为当前序号,则给发送方返回对应的应答,如果不是,则丢弃该数据。
上述高可靠线速数据通信方法,所述当前序号,初始上电时,发送方和接收方的当前序号均默认为0,每发送或接收一次,当前序号加1,然后进行下一次发送或接收,直到当前序号达到(M-1)时,则下一次当前序号再次复原为0。
上述高可靠线速数据通信方法,发送方的发送传输超时控制模块检测头指针指向的缓冲区是否接收到了接收方的应答,如果一定的时间内收到了接收方的应答,则释放头指针指向的缓冲区;如果一定的时间内没有接收到应答,则重发头指针指向的缓冲区的数据,并记录重发次数;如果重发次数超过阈值,则报告错误,等待发送方的处理。
本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著技术进步。本发明对数据采用并发方式进行传输,实现了数据的线速传输,对数据的应答机制也进行了定义,提高了传输的可靠性。
附图说明
图1是发送缓冲池结构图。
图2是发送方传输控制示意图。
图3是接收方接收控制示意图。
图4是一实施例中数据发送校验和应答示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举优选实施例进行说明。
该通信方法中发送方基于环形缓冲池,图1是发送缓冲池结构图,发送缓冲池为环形,由若干个缓冲区组成,缓冲池的头指针指向第一个存有数据的缓冲区,尾指针指向最后一个存有数据的缓冲区,当前发送指针指向正在发送的缓冲区。图1中指针绕行方向为逆时针,也可以设为顺时针。
图2为发送方的传输控制示意图,以环形缓冲区为核心,通过如下的方法实现高速线速的传输:传输缓存控制模块检测到待发信息队列有数据,并且环形缓冲区能够容纳一帧以太数据(也即Send_Buf_Full无效),则从待发信息队列获取要发送的一帧信息,并把待发信息队列线速存储到基于双端口存储器的环形缓冲区中,等该帧数据传输完毕,则向环形缓冲区发送传输完成信号Tsend_ok,环形缓冲区一旦检测Tsend_ok信号有效,则沿指针绕行方向把尾指针指向下一个缓冲区,实现了待发信息的线速存储;发送传输控制模块一旦检测到发送缓冲池有超过一帧的数据要发送,也即Send_Buf_Empty信号无效,则从当前指针指向的环形缓冲区线速读取完整的一帧,并在该帧上增加当前发送序号,然后封装成完整的以太帧,并把该封装后的以太帧数据传输的通信通道上,等该帧传输完毕,则向环形缓冲区发送传输完成信号Send_finish,环形缓冲区一旦检测到该信号,则沿指针绕行方向把当前指针指向下一个缓冲区,通过上述方法实现了线速通信方法。
系统的可靠通信是通过收发序号检测的方法实现。初始上电时,发送方和接收方的当前序号均默认为0,每发送或接收一次,当前序号加1,然后进行下一次发送或接收,直到当前序号达到(M-1)时,则下一次当前序号再次复原为0。发送传输控制模块为当前指针所指缓冲区的数据帧添加当前序号,当前序号即当前指针对应的缓冲区编号,把该序号封装后,发给接收方;发送完成后,当前指针指向下一缓冲区,进行下一次发送。发送传输超时控制模块通过应答信息的应答序号与头指针对应的待确认序号进行对比,如果应答信息的应答序号与头指针对应的待确认序号相匹配,则表明接收方已经成功接收到了头指针指向的缓冲区,释放头指针指向的缓冲区。如果超过一定的时间,头指针指向的缓冲区仍然没有接收到应答信息,则重发头指针指向的发送数据帧,并把发送数据帧的序号设置为头指针对应的缓冲区序号,发送到通信通道。读取仲裁对发送传输控制模块的读取操作以及发送传输超时控制模块的读取操作进行优先级仲裁,并从环形缓冲区获取读取的数据。
图3为接收方接收控制示意图,存储控制接模块收来自以太网的信息,首先存储到本地的以太数据缓冲区接收队列中去,如果存储过程中接收队列的余量不能容纳一帧以太数据,则丢弃本次以太数据。读取控制模块若检测到接收队列非空(也即empty信号无效),从接收队列中获取本次接收数据的IP以及本次数据的接收序号,如果本次接收数据的IP指向的当前序号与接收数据的序号一致,则认为本次数据为要传输的数据,把该数据传输到用户接收缓冲区,并产生一个新的保序接收有效信号Seq_add_ena,同时向发送方产生包含当前序号的应答数据。接收序号控制模块检测到Seq_add_ena信号有效时,则把当前序号自增1。
图4为一实施例中数据发送校验和应答示意图。由于发送端与接收端之间的通信有延迟,假设有3个时间节拍的延迟,因此图中接收端在第3个时间节拍才能收到该数据。接收方对接收到的数据进行校验,如果接收到的数据没有错误。则向发送端发送应答ACK。同理由于发送端与接收端之间有通信延迟,则该应答信号在第7个时间节拍才能达到发送端。发送端检测到该应答信号以后,接着释放发送缓冲区0。从该图可以看出,若要实现完全的线速发送,则发送池缓冲区大小必须与收发方之间的通信相延迟相匹配,由于以太网的帧长为64-1518字节,因此,在一实施例中,环形缓冲区大小可设为2K字节,缓冲区数量M设置为256。
以上所述为本发明的较佳实施方式,并非用于限制本发明的范围,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均含于本发明的保护范围之内。本发明的保护范围以本发明的权利要求为准。
Claims (7)
1.一种高可靠线速数据通信方法,其特征在于:发送方基于一个环形发送缓冲池与接收方通信,通信操作步骤如下:
a)发送方的缓存控制模块只要检测到发送缓冲池非满,即Send_Buf_Full信号无效,则从外部待发数据队列获取一帧信息,然后存储到尾指针指向的发送缓冲区,等待该帧存储完毕,产生存储完成信号TSend_ok,将环形缓冲区的尾指针指向下一个缓冲区;
b)发送方的传输控制模块只要检测到发送缓冲池非空,即Send_Buf_Empty信号无效,则把当前指针指向的缓冲数据读取出来,然后传输给相应的通信通道;
c)发送方接收到接收方返回的应答信息后,判断应答信息的应答序号是否与头指针对应的待确认序号一致,若一致,产生头指针修改信号Head_snd_ok,将环形缓冲区的头指针向下一个缓冲区;若不一致则不修改头指针。
2.根据权利要求1所述的高可靠线速数据通信方法,其特征在于:所述环形发送缓冲池,由M(M为自然数)个缓冲区组成,包含头指针、尾指针和当前指针,并定义指针绕行方向,头指针指向第一个存有数据的缓冲区,尾指针指向最后一个存有数据的缓冲区,当前指针指向正在发送的缓冲区,发送缓冲池的缓存状态通过头指针和尾指针定义。
3.根据权利要求2所述的高可靠线速数据通信方法,其特征在于:发送缓冲池由M个双端口存储器构成的缓冲区组成,初始上电时,缓冲区没有数据,头指针、尾指针以及当前指针重合,此时缓存状态计数X记为0;每存入一个缓冲区,尾指针沿指针绕行方向移动一次,缓存状态计数X加1;每释放一个缓冲区,头指针沿指针绕行方向移动一次,缓存状态计数X减1;每发送一个数据,则当前指针沿指针绕行方向移动一次,若当前指针与尾指针不重合,则Send_Buf_Empty信号无效,否则Send_Buf_Empty有效;当缓存状态计数X=缓冲区数量M时,发送缓冲池满Send_Buf_Full有效,不能再缓存任何数据,X<M时,发送缓冲池为非满,即Send_Buf_Full信号无效。
4.根据权利要求3所述的高可靠线速数据通信方法,其特征在于:所述发送方的传输控制模块为当前指针所指缓冲区的数据帧添加当前序号,当前序号即当前指针对应的缓冲区编号,然后发给接收方;发送完成后,当前指针指向下一缓冲区,进行下一次发送。
5.根据权利要求4所述的高可靠线速数据通信方法,其特征在于:所述接收方用FIFO作为缓存,接收方检测到待收数据后,先判断接收缓冲区是否有空位,如果没有空位则丢弃该数据;如果有空位则接收,然后根据封装在数据中的当前序号判断该序号是否为接收方的当前序号,如果为当前序号,则给发送方返回对应的应答,如果不是,则丢弃该数据。
6.根据权利要求5所述的高可靠线速数据通信方法,其特征在于:所述当前序号,初始上电时,发送方和接收方的当前序号均默认为0,每发送或接收一次,当前序号加1,然后进行下一次发送或接收,直到当前序号达到(M-1)时,则下一次当前序号再次复原为0。
7.根据权利要求6所述的高可靠线速数据通信方法,其特征在于:所述发送方的发送传输超时控制模块检测头指针指向的缓冲区是否接收到了接收方的应答,如果一定的时间内收到了接收方的应答,则释放头指针指向的缓冲区;如果一定的时间内没有接收到应答,则重发头指针指向的缓冲区的数据,并记录重发次数;如果重发次数超过阈值,则报告错误,等待发送方的处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410173321.1A CN103957089B (zh) | 2014-04-28 | 2014-04-28 | 一种高可靠线速数据通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410173321.1A CN103957089B (zh) | 2014-04-28 | 2014-04-28 | 一种高可靠线速数据通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103957089A CN103957089A (zh) | 2014-07-30 |
CN103957089B true CN103957089B (zh) | 2017-06-23 |
Family
ID=51334322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410173321.1A Expired - Fee Related CN103957089B (zh) | 2014-04-28 | 2014-04-28 | 一种高可靠线速数据通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103957089B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105024787A (zh) | 2014-08-29 | 2015-11-04 | 魅族科技(中国)有限公司 | 一种数据传输方法、相关装置及系统 |
CN106412119A (zh) * | 2016-11-17 | 2017-02-15 | 交控科技股份有限公司 | 一种数据分发方法和装置 |
CN111008164A (zh) * | 2019-12-04 | 2020-04-14 | 天津七一二通信广播股份有限公司 | 一种基于存储映射类总线的节点间多缓存式通信方法 |
CN112235206A (zh) * | 2019-12-20 | 2021-01-15 | 青岛鼎信通讯股份有限公司 | 一种基于单片机的环形缓冲队列数据接收机制 |
CN112162875B (zh) * | 2020-10-12 | 2024-08-02 | 上交所技术有限责任公司 | 一种交易系统内部高可靠消息传输方法 |
CN113285914B (zh) * | 2021-03-29 | 2022-10-28 | 上海大学 | 一种基于fpga的tcp协议高效数据确认的通信传输方法 |
CN115412398B (zh) * | 2021-05-10 | 2024-03-22 | 青岛中加特电气股份有限公司 | 一种can网桥数据通讯方法、can网桥及可读存储介质 |
CN113518044B (zh) * | 2021-09-15 | 2021-12-21 | 浙江国利信安科技有限公司 | Epa设备 |
CN113904762B (zh) * | 2021-09-28 | 2023-09-26 | 中孚信息股份有限公司 | 一种带环形缓冲区的全双工485总线通信系统及方法 |
CN115361103A (zh) * | 2022-08-18 | 2022-11-18 | 陈冠宇 | 用于选择-重复混合式自动重传请求协议的缓冲区管理机制 |
CN115442281B (zh) * | 2022-08-20 | 2024-01-16 | 西安翔腾微电子科技有限公司 | 一种基于arinc664协议的采样方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267541A (zh) * | 2008-04-02 | 2008-09-17 | 武汉大学 | 一种适合在线点播或直播的流媒体分发服务器 |
CN101795266A (zh) * | 2009-12-31 | 2010-08-04 | 中国航空工业集团公司第六三一研究所 | 航电asm协议控制器 |
CN103049414A (zh) * | 2012-12-28 | 2013-04-17 | 中国航空工业集团公司第六三一研究所 | Fc总线与can总线间数据的转换及传输方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881311A (en) * | 1996-06-05 | 1999-03-09 | Fastor Technologies, Inc. | Data storage subsystem with block based data management |
-
2014
- 2014-04-28 CN CN201410173321.1A patent/CN103957089B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267541A (zh) * | 2008-04-02 | 2008-09-17 | 武汉大学 | 一种适合在线点播或直播的流媒体分发服务器 |
CN101795266A (zh) * | 2009-12-31 | 2010-08-04 | 中国航空工业集团公司第六三一研究所 | 航电asm协议控制器 |
CN103049414A (zh) * | 2012-12-28 | 2013-04-17 | 中国航空工业集团公司第六三一研究所 | Fc总线与can总线间数据的转换及传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103957089A (zh) | 2014-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103957089B (zh) | 一种高可靠线速数据通信方法 | |
CN103841002B (zh) | 语音传输方法、终端、语音服务器及语音传输系统 | |
CN102075436B (zh) | 以太网络及其数据传输方法和装置 | |
CN102217258B (zh) | 探测处理方法、数据发送端、数据接收端以及通信系统 | |
CN102316516B (zh) | 一种lte上行数据传输结构构建方法 | |
EP3531601B1 (en) | System, method and apparatus for qos retransmission for mg.fast | |
CN104782060B (zh) | 减少数据饥饿的方法、无线通信站和系统 | |
CN112929455B (zh) | 基于udp的数据传输方法、装置、设备和可读存储介质 | |
CN111274173A (zh) | 一种基于zynq的多节点srio通信设计方法及装置 | |
CN104158770A (zh) | 一种交换机数据包切分与重组的方法与装置 | |
CN102916902A (zh) | 数据存储方法及装置 | |
CN110618900B (zh) | 一种uart数据传输方法 | |
CN104660776A (zh) | 一种短信的发送方法、装置及移动终端 | |
US9544401B2 (en) | Device and method for data communication using a transmission ring buffer | |
CN107786464A (zh) | 一种实现节点间通信的方法及装置 | |
EP4145899A1 (en) | Radio link control state report method and corresponding apparatus | |
CN113572582A (zh) | 数据发送、重传控制方法及系统、存储介质及电子设备 | |
CN103825768B (zh) | 报文传输方法和装置 | |
CN109842907A (zh) | 传输数据的方法和装置 | |
CN104052831A (zh) | 一种基于队列的数据传输方法、装置及通信系统 | |
CN103179087A (zh) | 应用层到TCP层异步Socket数据传输方法及系统 | |
CN102299861A (zh) | 一种报文流量控制方法 | |
CN106792903A (zh) | 一种多对多无线数据发送方法及装置、接收方法及装置 | |
CN110865891B (zh) | 一种异步消息编排方法和装置 | |
CN106330413B (zh) | 控制2.4g无线音频传输丢包的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170623 Termination date: 20200428 |