CN102402400A - 发送数据帧的方法及装置 - Google Patents
发送数据帧的方法及装置 Download PDFInfo
- Publication number
- CN102402400A CN102402400A CN201110382898XA CN201110382898A CN102402400A CN 102402400 A CN102402400 A CN 102402400A CN 201110382898X A CN201110382898X A CN 201110382898XA CN 201110382898 A CN201110382898 A CN 201110382898A CN 102402400 A CN102402400 A CN 102402400A
- Authority
- CN
- China
- Prior art keywords
- pointer
- buffer memory
- read
- indicating bit
- data
- 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.)
- Granted
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明提供一种发送数据帧的方法及装置。其中,方法包括:根据发送缓存的读指针和写指针判断所述发送缓存是否存满或者已存储有至少一帧数据;如果是,采用数据分片传输的方式发送所述发送缓存中的数据,直至一帧数据发送完成。装置包括:判断模块和发送模块。本发明提供的发送数据帧的方法及装置,有效减低了数据发送过程中可能出现的欠载的几率,提高发送数据帧的安全性,且简便、易于实现。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种发送数据帧的方法及装置。
背景技术
图1为现有技术中发送数据帧的装置结构示意图,如图1所示,待发送的数据是以帧的形式存放在内存中的,直接内存存取控制器(DirectMemory Access Controller,简称为:DMAC)可以通过CPU的外部通讯接口主动发起对内存的直接访问,将待发送的数据从内存搬移到发送缓存中。发送控制模块从发送缓存中读取待发送的数据进行发送。如果图1所示的装置正在发送数据帧,且当前数据帧还没有发送结束,但发送缓存内没有待发送的数据时,会出现缓存欠载(Buffer underrun)的现象。这种现象会严重影响发送数据帧的效率,因此,本领域技术人员需要尽力杜绝这种现象的发生。
现有技术中通过将内存中的一帧数据全部搬移到发送缓存当中后,发送控制模块才开始发送数据的方式来杜绝欠载现象的发生,但是这种方式要求发送缓存具有较大的容量,以能够至少存下一帧数据。但是,如果发送控制模块的端口不断增多,那么就会要求发送缓存的容量越来越大,成本越来越高。
发明内容
本发明提供一种用于降低欠载现象发生的发送数据帧的方法及装置。
本发明提供一种发送数据帧的方法,包括:
根据发送缓存的读指针和写指针判断所述发送缓存是否存满或者已存储有至少一帧数据;
如果是,采用数据分片传输的方式发送所述发送缓存中的数据,直至一帧数据发送完成。
本发明还提供一种发送数据帧的装置,包括:
判断模块,用于根据发送缓存的读指针和写指针判断所述发送缓存是否存满或者已存储有至少一帧数据;
发送模块,用于如果所述判断模块的判断结果为是,采用数据分片传输的方式发送所述发送缓存中的数据,直至一帧数据发送完成。
本发明提供的发送数据帧的方法及装置,通过检测发送缓存,当检测到发送缓存存满或者发送缓存内存储有至少一帧数据时,采用数据分片传输的方法发送该发送缓存中的数据,有效降低了数据发送过程中可能出现的欠载的几率,提高发送数据帧的安全性,且简便、易于实现。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中发送数据帧的装置结构示意图;
图2为本发明实施例提供的发送数据帧的方法流程图;
图3为本发明实施例提供的控制时序图;
图4为本发明实施例提供的发送缓存存满时的波形示意图;
图5为本发明实施例提供的发送缓存中存储有至少一帧数据时的波形示意图;
图6为本发明实施例提供的发送数据帧的装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明实施例提供的发送数据帧的方法流程图,如图2所示,该方法包括:
步骤201、根据发送缓存的读指针和写指针判断该发送缓存是否存满或者已存储有至少一帧数据。
其中,发送缓存主要用于存放数据,可以以双口存储单元形式存在,具体形式有以下特征:A口用于DMAC写数据,B口用于发送控制模块读数据。数据是以待发送数据加EOP信息存放的,其中,EOP信息用于表示当前数据是否是一帧的最后一个字节数据。也即数据包括8位的数据位,加1位的EOP信息位。本实施例中,设定当该EOP信息位为1时,标识该字节为当前数据帧的最后一个字节。
可以根据发送缓存当前的读、写指针,判断当前发送缓存的空满状态,然后再通过接口从CPU内存当中读取待发送的数据。将内存当中读取到的数据存放到发送缓存当中,并在一帧结束时,添加EOP信息。并给发送控制模块提供发送缓存当前写指针位置以及EOP位置。图3为本发明实施例提供的控制时序图。其中,
clk为控制主时钟
wr_pt为发送缓存写指针信号
eop_pt为最新的帧结束位置信号
dmac_din表示从内存当中读到的待发送数据
eop表示当前数据是否是一帧的最后一个字节数据
wr_en为发送数据缓存写使能信号
tx_addra为发送缓存A口的地址
tx_data_in为发送缓存A口的数据信号
从时序图可以看出,tx_addra是与wr_pt相同的。当wr_en有效时,地址就会随着写指针信号wr_pt而不断加1。另外需要特别说明的是,tx_data_in的数据位宽是比dmac_din的位宽多1位。当有遇到eop时,需要将tx_data_in信号的最高位置1,并且写到发送缓存内。这样当发送控制模块读到该字节时,发现最高位为1时,就知道此处为帧结束位置。
步骤202、如果步骤201的判断结果为是,控制发送控制模块采用数据分片传输的方式发送该发送缓存中的数据,直至一帧数据发送完成。
(1)发送缓存存满时的波形示意图可以如图4所示,其中,
clk为控制主时钟
wr_en为发送缓存写使能信号
wr_pt为发送缓存写指针信号
rd_pt为发送缓存读指针信号
full为发送缓存存满信号
frame_inval为帧间指示信号
rd_en为发送缓存读使能信号
图4中的箭头可以理解为,当发现full信号时,控制发送控制模块开始从发送数据缓存当中读数据。同时将帧间指示信号置高,表示当前正在处于帧间发送状态。其中,full信号是一个控制发送与否的关键信号。该信号是通过rd_pt和wr_pt判断得到结果。具体实现如下:
图4中以128字节的发送缓存为例,这样指针需要7位来指示。而现在的指针是由8位来控制的,其中最高位是作为进位指示位。这样当读写指针的最高位不同,而低7位是相同时,则说明此时缓存是存满的状态,此时full就变成高电平。如图4中所示,当写指针变成0x80,而读指针为0x00时,就说明此时缓存内是处于满的状态;实际可以通过下式得到full信号;
full=(wr_pt[7]∧rd_pt[7])&&(wr_pt[6:0]==rd_pt[6:0])
其中(wr_pt[7]∧rd_pt[7])表示读写指针的最高位做异或处理,如果不同则为1,相同则为0;(wr_pt[6:0]==rd_pt[6:0])表示读写指针的低7位相同;两个条件都满足时,则表示当前缓存状态处于满状态。
(2)发送缓存中存储有至少一帧数据时的波形示意图可以如图5所示,其中,
clk为控制主时钟
wr_en为发送数据缓存写使能信号
wr_pt为发送缓存写指针信号
eop_pt为最新的帧结束位置信号
rd_pt为发送缓存读指针信号
eop_inbuf为发送缓存内有帧结束指示信号
frame_inval为帧间指示信号
rd_en为发送缓存读使能信号
图5中的箭头表示,当发现eop_inbuf信号时,控制发送控制模块开始从发送数据缓存当中读数据。同时将帧间指示信号置高,表示当前正在处在帧间发送状态。eop_inbuf信号是一个控制发送与否的关键信号。该信号是通过rd_pt和wr_pt判断得到结果。具体实现如下:
图5中同样以128字节的发送缓存为例,这样指针需要7位来指示。而现在的指针是有8位来控制的,其中最高位是作为进位指示位。而eop_pt则表示最新的帧结束位置所在的指针位置;当eop_pt指针位于wr_pt和rd_pt之间时,则说明当前缓存内存满一帧数据。具体可以参考如下所示:
当写指针、读指针和eop指针的进位位相同时,eop inbuf如下式所示:
eop_inbuf=(wr_pt[6:0]≥eop_pt[6:0])&&(eop_pt[6:0]>rd_pt[6:0])
当读写指针进位位不同,eop指针进位位与读指针相同时,eop_inbuf如下式所示:
eop_inbuf=(eop_pt[6:0]>rd_pt[6:0])
当读写指针进位位不同,eop指针进位位与写指针相同时,eop_inbuf如下式所示:
eop-inbuf=(wr_pt[6:0]≥eop_pt[6:0])
本发明提供的发送数据帧的方法,通过检测发送缓存,当检测到发送缓存存满或者发送缓存内存储有至少一帧数据时,采用数据分片传输的方法发送该发送缓存中的数据,有效降低了数据发送过程中可能出现的underrun的几率,提高发送数据帧的安全性,且简便、易于实现。
图6为本发明实施例提供的发送数据帧的装置结构示意图,如图6所示,该装置可以包括:判断模块601和发送模块602。其中,判断模块601可以但不限于为上述方法实施例中提供的DMAC,发送模块602可以但不限于为上述方法实施例中提供的发送控制模块。其中,判断模块601用于根据发送缓存的读指针和写指针判断所述发送缓存是否存满或者已存储有至少一帧数据;发送模块602用于如果判断模块601的判断结果为是,采用数据分片传输的方式发送该发送缓存中的数据,直至一帧数据发送完成。
一种实施方式下,判断模块601可以包括:第一比较单元和第一判定单元。其中,第一比较单元用于比较发送缓存的读指针和写指针,读指针和写指针均包括进位指示位和其它位;第一判定单元,用于如果第一比较单元的比较结果为读指针和写指针的进位指示位不同,其它位均相同,则判定发送缓存存满。
再一种实施方式下,判断模块601可以包括:第二比较单元和第二判定单元。其中,第二比较单元,用于比较发送缓存的读指针、写指针和最新的帧结束位置所在的指针;第二判定单元,用于如果第二比较单元的比较结果为最新的帧结束位置所在的指针位于读指针与写指针之间,则判定数据缓存内存储有至少一帧数据。
在上述实施方式的基础上,读指针、写指针和最新的帧结束位置所在的指针均包括进位指示位,第二判定单元包括:第一子单元,或者第二子单元,或者第三子单元。其中,第一子单元,用于如果写指针、读指针和最新的帧结束位置所在的指针的进位指示位相同,则判定最新的帧结束位置所在的指针位于读指针与写指针之间;第二子单元,用于如果写指针与读指针的进位指示位不同,最新的帧结束位置所在的指针的进位指示位与读指针的进位指示位相同,则判定最新的帧结束位置所在的指针位于读指针与写指针之间;第三子单元,用于如果写指针与读指针的进位指示位不同,最新的帧结束位置所在的指针的进位指示位与写指针的进位指示位相同时,则判定最新的帧结束位置所在的指针位于读指针与写指针之间。
上述实施例中的进位指示位为各指针的最高位。
本发明提供的发送数据帧的装置,通过检测发送缓存,当检测到发送缓存存满或者发送缓存内存储有至少一帧数据时,采用数据分片传输的方法发送该发送缓存中的数据,有效降低了数据发送过程中可能出现的underrun的几率,提高发送数据帧的安全性,且简便、易于实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种发送数据帧的方法,其特征在于,包括:
根据发送缓存的读指针和写指针判断所述发送缓存是否存满或者已存储有至少一帧数据;
如果是,采用数据分片传输的方式发送所述发送缓存中的数据,直至一帧数据发送完成。
2.根据权利要求1所述的方法,其特征在于,所述根据发送缓存的读指针和写指针判断所述发送缓存是否存满包括:
比较所述发送缓存的读指针和写指针,所述读指针和所述写指针均包括进位指示位和其它位;
如果所述读指针和所述写指针的进位指示位不同,其它位均相同,则判定所述发送缓存存满。
3.根据权利要求1所述的方法,其特征在于,所述根据发送缓存的读指针和写指针判断所述发送缓存是否已存储有至少一帧数据包括:
比较所述发送缓存的读指针、写指针和最新的帧结束位置所在的指针;
如果最新的帧结束位置所在的指针位于所述读指针与所述写指针之间,则判定数据缓存内存储有至少一帧数据。
4.根据权利要求3所述的方法,其特征在于,所述读指针、所述写指针和所述最新的帧结束位置所在的指针均包括进位指示位,所述最新的帧结束位置所在的指针位于所述读指针与所述写指针之间的判断方法包括:
如果所述写指针、所述读指针和所述最新的帧结束位置所在的指针的进位指示位相同,则判定所述最新的帧结束位置所在的指针位于所述读指针与所述写指针之间;
如果所述写指针与所述读指针的进位指示位不同,所述最新的帧结束位置所在的指针的进位指示位与所述读指针的进位指示位相同,则判定所述最新的帧结束位置所在的指针位于所述读指针与所述写指针之间;
如果所述写指针与所述读指针的进位指示位不同,所述最新的帧结束位置所在的指针的进位指示位与所述写指针的进位指示位相同时,则判定所述最新的帧结束位置所在的指针位于所述读指针与所述写指针之间。
5.根据权利要求2至4中任一项所述的方法,其特征在于,所述进位指示位为各指针的最高位。
6.一种发送数据帧的装置,其特征在于,包括:
判断模块,用于根据发送缓存的读指针和写指针判断所述发送缓存是否存满或者已存储有至少一帧数据;
发送模块,用于如果所述判断模块的判断结果为是,采用数据分片传输的方式发送所述发送缓存中的数据,直至一帧数据发送完成。
7.根据权利要求6所述的装置,其特征在于,所述判断模块包括:
第一比较单元,用于比较所述发送缓存的读指针和写指针,所述读指针和所述写指针均包括进位指示位和其它位;
第一判定单元,用于如果所述第一比较单元的比较结果为所述读指针和所述写指针的进位指示位不同,其它位均相同,则判定所述发送缓存存满。
8.根据权利要求6所述的装置,其特征在于,所述判断模块包括:
第二比较单元,用于比较所述发送缓存的读指针、写指针和最新的帧结束位置所在的指针;
第二判定单元,用于如果所述第二比较单元的比较结果为最新的帧结束位置所在的指针位于所述读指针与所述写指针之间,则判定数据缓存内存储有至少一帧数据。
9.根据权利要求8所述的装置,其特征在于,所述读指针、所述写指针和所述最新的帧结束位置所在的指针均包括进位指示位,所述第二判定单元包括:
第一子单元,用于如果所述写指针、所述读指针和所述最新的帧结束位置所在的指针的进位指示位相同,则判定所述最新的帧结束位置所在的指针位于所述读指针与所述写指针之间;或,
第二子单元,用于如果所述写指针与所述读指针的进位指示位不同,所述最新的帧结束位置所在的指针的进位指示位与所述读指针的进位指示位相同,则判定所述最新的帧结束位置所在的指针位于所述读指针与所述写指针之间;或,
第三子单元,用于如果所述写指针与所述读指针的进位指示位不同,所述最新的帧结束位置所在的指针的进位指示位与所述写指针的进位指示位相同时,则判定所述最新的帧结束位置所在的指针位于所述读指针与所述写指针之间。
10.根据权利要求7至9中任一项所述的装置,其特征在于,所述进位指示位为各指针的最高位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110382898.XA CN102402400B (zh) | 2011-11-25 | 2011-11-25 | 发送数据帧的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110382898.XA CN102402400B (zh) | 2011-11-25 | 2011-11-25 | 发送数据帧的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102402400A true CN102402400A (zh) | 2012-04-04 |
CN102402400B CN102402400B (zh) | 2015-02-25 |
Family
ID=45884645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110382898.XA Active CN102402400B (zh) | 2011-11-25 | 2011-11-25 | 发送数据帧的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102402400B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04373058A (ja) * | 1991-06-24 | 1992-12-25 | Hitachi Ltd | バッファ制御方式 |
US6789144B1 (en) * | 1999-05-27 | 2004-09-07 | Advanced Micro Devices, Inc. | Apparatus and method in a network interface device for determining data availability in a random access memory |
CN1545031A (zh) * | 2003-11-17 | 2004-11-10 | 中兴通讯股份有限公司 | 一种fifo存储器的数据处理方法 |
CN102065015A (zh) * | 2010-12-29 | 2011-05-18 | 福建星网锐捷网络有限公司 | 一种数据传输方法、网络设备以及装置 |
-
2011
- 2011-11-25 CN CN201110382898.XA patent/CN102402400B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04373058A (ja) * | 1991-06-24 | 1992-12-25 | Hitachi Ltd | バッファ制御方式 |
US6789144B1 (en) * | 1999-05-27 | 2004-09-07 | Advanced Micro Devices, Inc. | Apparatus and method in a network interface device for determining data availability in a random access memory |
CN1545031A (zh) * | 2003-11-17 | 2004-11-10 | 中兴通讯股份有限公司 | 一种fifo存储器的数据处理方法 |
CN102065015A (zh) * | 2010-12-29 | 2011-05-18 | 福建星网锐捷网络有限公司 | 一种数据传输方法、网络设备以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102402400B (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101673188B (zh) | 一种固态硬盘的数据存取方法 | |
CN101630290B (zh) | 重复数据处理方法和装置 | |
CN106448737A (zh) | 读取闪存数据的方法、装置以及固态驱动器 | |
CN102203749B (zh) | 多级缓存下固态硬盘的写方法及装置 | |
US20090100244A1 (en) | Adaptive hybrid density memory storage device and control method thereof | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
CN103885909B (zh) | 基于原生PCIe接口的SSD控制器及其控制方法 | |
US7937522B2 (en) | Method for flash memory data management | |
CN104461935A (zh) | 一种进行数据存储的方法、装置及系统 | |
CN101710270B (zh) | 一种基于闪存的高速大容量存储器及芯片数据管理方法 | |
CN101685381A (zh) | 固态大容量存储装置的数据串流 | |
CN103914397B (zh) | 闪存存储设备及其管理方法 | |
CN102214143A (zh) | 一种多层单元闪存的管理方法、装置及存储设备 | |
CN109582224A (zh) | 一种基于自恢复效应的NAND Flash存储可靠性优化方法 | |
CN113419675B (zh) | 用于存储器的写操作方法及读操作方法 | |
TW201423399A (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
CN108089825A (zh) | 一种基于分布式集群的存储系统 | |
CN103678158A (zh) | 一种数据布局优化方法及系统 | |
US20130275652A1 (en) | Methods and structure for transferring additional parameters through a communication interface with limited parameter passing features | |
CN103544124A (zh) | Nand Flash存储器的访问方法 | |
CN106155935A (zh) | 固态硬盘闪存的垃圾回收方法及装置 | |
TWI407310B (zh) | 資料儲存裝置及資料存取方法 | |
CN109408482A (zh) | 一种数据存储方法、系统、设备及计算机可读存储介质 | |
CN102122267A (zh) | 一种可同时进行数据传输及FTL管理的多通道NANDflash控制器 | |
CN102402400A (zh) | 发送数据帧的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |