一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法

文档序号:7696246阅读:479来源:国知局
专利名称:一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法
技术领域
本发明属于一种基于包方式数据的格式转换方式,所谓包方式数据包括以太网、异步转移模式(ATM)、高阶数据链路控制规程(HDLC)、链路接入规程(LAPS)、通用帧格式处理(GFP)等这些以包为传输基本单位的数据,该格式转换方式涉及超长包、异常包的处理、特殊包的过滤以及利用帧定位的方式来实现包方式数据高位宽数据到低位宽数据转换的方法。
背景技术
包方式数据通常可以处理成状态位+数据位,加上状态位后,数据位宽发生改变,往往不利于直接存储。因此有必要把高位宽数据转换成低位宽数据,以利于数据的存储。
以以太网包数据的处理为例,在某实现以太网透传SDH芯片的流控单元设计过程中,需要对从媒体接入控制(MAC)层输入的数据进行预处理,一方面将非标准的以太网包处理成标准以太网包;另一方面,需要对以太网包数据进行格式转换,以利于缓存处理,从而达到流量控制的目的。
流控单元的核心是一个2M的32位宽同步动态随机存取存储器(SDRAM),而从MAC层输入的以太网包可以处理成5位状态位和32位数据位,数据格式如下表1
数据格式包括包头指示信号(sop)、包尾指示信号(eop)、错误指示信号(err)、有效字节指示信号(mod)以及32bit的数据位。如果不对37位宽数据处理直接存入SDRAM,考虑到SDRAM的一个存储单元以字节为单位,至少需要两片SDRAM,这就造成了存储资源的浪费,因此必须对37位宽的数据进行某种处理以使之适于用32位宽的SDRAM存储。传统的数据格式转换方式可以将37位宽的数据拆分成一个16位宽的数据和一个21位宽的数据,这样每个SDRAM存储单元(32bit)可以存储16位宽的数据或一个21位宽的数据,虽然只用一片SDRAM可以完成存储,但同样有存储资源的浪费。

发明内容
上述现有存储方式都没有考虑到包方式数据的特点,由于包方式数据可以除了数据位以外,可以用5位包状态位来描述,在一个数据包传输过程中,包状态是不变的,因此针对上述问题,本发明提出在数据包间隙时,插入一个帧头标志字节在数据流中,该帧头标志字节用来描述数据包的状态信息(包括包头指示信号sop、包尾指示信号eop、错误指示信号err、有效字节指示信号mod),然后将该数据存储在先入先出缓存器(FIFO)中,SDRAM控制器根据先入先出缓存器(FIFO)中的空满情况读取先入先出缓存器(FIFO)中的数据,并且存入的SDRAM中;在SDRAM的出口搜索帧头实现帧定位,并根据帧头信息恢复出数据包的状态信息。
本发明的目的在于提供一种以太网包格式转换的方法,与不考虑以太网包数据特点的数据格式转换的方式比较,利用加帧头的方式记录以太网包状态信息,利用帧定位的方式恢复以太网包的信息,实现数据格式的转换,一方面可以节约存储资源,另一方面这种格式转换方式具有“自愈”功能。本发明提出一种高效简洁的异常包和特殊包的处理方式,该方式对以太网包进行了封装和解封装的处理,重新生成以太网包信息,因此可以可靠处理异常包和特殊包,并且和位宽转换融为一体,不占用额外的资源。
本发明采用以下技术方案,一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法,其特征在于,所述方法包括以下步骤(1)对输入的包进行超长包检测,将超过预设定包长的包处理成标准包;(2)把所述输入的包的状态信号加上包长信息转换成低位宽的帧头,存储在数据包包头的前一个地址;(3)通过对所述低位宽的数据进行帧头定位,恢复成带有状态信息的高位宽数据。


下面,参照附图,对于熟悉本技术领域的人员而言,从对本发明方法的详细描述中,本发明的上述和其他目的、特征和优点将显而易见。
图1是实现本发明方法的流程示意图;图2是本发明一较佳实施例的格式转换操作时序图;图3是本发明一较佳实施例的状态获取时序图。
具体实施例方式
以以太网包数据格式转换为例,该格式转换实现高位宽数据到低位宽数据的转换。如图1所示,以太网包格式转换的总体思路是这样的首先对输入的以太网包进行超长包检测,将超过预设定包长的以太网包处理成标准以太网包。标准以太网包通过格式转换先入先出缓存器(FIFO)转换成低位宽数据,由SDRAM控制器控制SDRAM的读写,从SDRAM控制器中读出的低位宽数据经过帧定位处理后恢复成高位宽的数据,完成流控单元数据预处理和恢复。
流控单元数据预处理主要包括3个主要过程(1)超长包检测;(2)以太网包数据的格式转换(帧格式生成);(3)以太网包数据格式恢复(帧定位)。
下面结合图1所示的流程,以37位数据总线到32位数据总线的转换为例,对整个过程进行详细说明。
步骤101,首先进行超长包检测,对以太网超长包处理是这样首先检测输入以太网包的包长,当检测到包头指示信号(sop)时,把内部的包长计数器复位,计数器根据输入数据的写有效信号自加1记数,当计数器大于预设定超长包值时,就认为输入的数据包长超过了标准,超长包处理启动,在数据流中插入包尾指示信号(eop),同时错误指示信号(err)置1,指示该包为错包,超过预设定超长包值的数据不再写入格式转换先入先出缓存器(FIFO)。此过程相当于把输入的超长包,转换成一个标准的以太网数据包。
步骤102,超长包处理后的包可以认为是标准的以太网包,可以进行以太网包数据的格式转换,把输入的以太网包的状态信号(包括包头指示信号sop、包尾指示信号eop、错误指示信号err、有效字节指示信号mod)加上包长信息转换成低位的32位宽的帧头,存储在数据包包头的前一个地址,帧头的数据结构如下表2所示

具体实现是这样的首先,检测数据流中的包头指示信号(sop),当包头指示信号(sop)和格式转换先入先出缓存器(FIFO)的写有效信号同时为高时,把内部的一个包长计数器置初值,此计数器根据先入先出缓存器(FIFO)的写使能信号加1计数,同时先入先出缓存器(FIFO)的地址指针(waddr_data)加1,当检测到数据流中包尾指示信号(eop)时,把输入以太网包的错误指示信号(err)、有效字节指示信号(mod)、包长计数器(pkg_sz)计数值,再加上标志字节(F6F28)形成一个低位32位宽的数据,存在帧头寄存器(pkg_state)中,并将该寄存器内容传到32位数据总线(wdata)上,为了实现转换后的32位宽以太网数据包的包头为帧头字节,状态转换先入先出缓存器(FIFO)的写地址指针在数据地址和帧头地址之间变换,在32位宽数据传送期间,写地址指针指向数据地址;在帧头计算结束的第一个周期,写地址指针指向帧头地址,而该帧头地址为上一个写周期数据地址的最后一位,这样就实现了在每一个包的包头插入帧头字节。
步骤103,格式转换操作时序如图2所示32位宽以太网包数据经过缓存控制后进入格式恢复步骤104,该步骤通过帧定位的方式把SDRAM控制器中的32位宽的数据恢复成带有状态信息的37位数据,即恢复出以太网数据包的包头指示信号(sop)、包尾指示信号(eop)、错误指示信号(err)、有效字节指示信号(mod)。
图2给出了在上述步骤102格式转换过程中的操作时序,wr_vld_int是上行模块写入先入先出缓存器(FIFO)的数据有效信号;wr_sop_int是上行模块写入先入先出缓存器(FIFO)的包头指示信号;wr_eop_int是上行模块写入先入先出缓存器(FIFO)的包尾指示信号;wr_err_int是上行模块写入先入先出缓存器(FIFO)的包错误指示信号wr_sz_int是上行模块写入先入先出缓存器(FIFO)的包字节有效指示信号;pkg_sz是包长计数器;pkg_state是帧头寄存器;wdata为最终写入先入先出缓存器(FIFO)的数据,包括数据信息和帧头信息。
格式恢复步骤首先对帧头的定位,帧头状态获取是根据帧头搜索控制信号(data_norm)在低电平时,采样从SDRAM输入的数据,如果采样到的数据的前20比特是F6F28时,就认为采样到了帧头字节,帧头搜索控制信号(data_norm)置高。同时把帧头字节包含的相应信息传给内部寄存器(pkg_cnt,wr_err_tmp,wr_mod_tmp),这样就恢复出了以太网包的错误指示信号(err)、有效字节指示信号(mod)和包长信息。
帧头状态获取时序如图3所示。其中sd_rd_vld为从SDRAM中读取数据的有效指示信号,sd_rd_data为从SDRAM中读取的32bit数据信号,data_norm为帧头搜索控制信号;pkg_cnt为包长减计数器,初值由帧头中恢复;wr_err_tmp为恢复的包错误指示信号;wr_mod_tmp为恢复的字节有效指示信号。
包长信息的恢复由主要是由帧头搜索控制信号(data_norm)来获得,通过该信号的上升沿和下降沿可以恢复数据包的包头指示信号(sop)、包尾指示信号(eop)信号帧头搜索控制信号(data_norm)的上升沿产生包头指示信号(sop);帧头搜索控制信号(data_norm)的下降沿产生包尾指示信号(eop)。而帧头搜索控制信号(data_norm)的产生主要根据包长减计数器(pkg_cnt)的计数值,在包长减计数器(pkg_cnt)减计数期间,帧头搜索控制信号(data_norm)始终为高,一直到计数值为0,帧头搜索控制信号(data_norm)拉低,同时触发执行下一个搜索帧头F6F28的过程,在正常情况下,包长减计数器(pkg_cnt)减到0后,从SDRAM中读取的下一位数据必然是下一个包的帧头。在帧头搜索控制信号(data_norm)为高期间,不执行搜索帧头F6F28的过程,这样可以避免数据流中出现F6F28时误定帧。
如果进入流控单元的数据流中出现异常包时(无包头、无包尾或即无包头也无包尾),那么在帧格式生成时,帧头字节中的包长计数值必然记录着错误的包长信息,这样在格式恢复模块时,恢复的包长减计数器(pkg_cnt)的计数值就是错误的,在包长减计数器(pkg_cnt)减计数到0后,下一位数据就不会是下一个包的帧头,根据这个条件对该包的err状态位置高,表示该包是错包,这样利用帧定位方式同时实现了异常包处理。
在某些情况下,希望过滤掉特定包长的以太网包,如小于64的包和大于1518的包,在不占用系统资源的情况下,利用帧定位可以很方便的实现,具体做法是在格式恢复模块利用帧定位提取帧头中的包长信息时,如果提取的包长值属于正常包,则对该包进行恢复;如果提取的包长信息属于特殊包(比如小于64的包和大于1518),则将恢复的包长改为正常包的包长值或者直接丢弃,由于强制性修改的包长值不符合帧搜索规律(即在包长减计数器(pkg_cnt)减计数到0后,下一位数据应该是下一个包的帧头),因此符合异常包的处理流程,系统会对恢复出的以太网包加err,因此特殊包过滤不会影响正常的包恢复过程,这样利用帧定位方式同时实现了特殊包的过滤。
这样在流控单元的入口用帧格式生成的方式实现37位以太网包数据到32位以太网包数据的转换,在出口通过帧定位,就可以将32位以太网包数据恢复成37位以太网包数据。
本发明在实现位宽变换的同时,还具有对异常包和特殊包的处理功能。对于异常包,由于采用帧定位的方式实现格式转换是以包为单位进行处理的,因此一旦出现异常包(无包头、无包尾或既无包头也无包尾),系统会做丢包处理,而不会影响正常包的传送,因而不会造成整个数据流的中断。对于特殊包,在帧定位时对包长信息进行处理,就可以过滤掉特定包长的数据包。
前面提供了对较佳实施例的描述,以使本领域内的任何技术人员可使用或利用本发明。对这些实施例的各种修改对本领域内的技术人员是显而易见的,可把这里所述的总的原理应用到其他实施例而不使用创造性。因而,本发明将不限于这里所示的实施例,而应依据符合这里所揭示的原理和新特征的最宽范围。
权利要求
1.一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法,其特征在于,所述方法包括以下步骤(1)对输入的包进行超长包检测,将超过预设定包长的包处理成标准包;(2)把所述输入的包的状态信号加上包长信息转换成低位宽的帧头,存储在数据包包头的前一个地址;(3)通过对所述低位宽的数据进行帧头定位,恢复成带有状态信息的高位宽数据。
2.根据权利要求1所述的一种利用帧定位实现包方式数据高位到低位宽的格式转换方法,其特征在于,所述步骤(2)和(3)中的状态信号包括包头指示信号、包尾指示信号、错误指示信号和有效字节指示信号。
3.根据权利要求2所述的一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法,其特征在于,所述步骤(1)进一步包括以下步骤(1′)检测输入以太网包的包长,当检测到包头指示信号(SOP)时,将内部的包长计数器复位,计数器根据输入数据的写有效信号自加1计数;(2′)当计数器计数值大于预定超长包值时,在数据流中插入包尾指示信号(EOP),同时错误指示信号(ERR)置1,指示所述包为错包,超过预定超长包值的数据不再写入格式转换先入先出缓存器(FIFO)。
4.根据权利要求2所述的一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法,其特征在于,所述步骤(3)进一步包括根据帧头搜索控制信号在低电平时,采样从同步动态随机存取存储器(SDRAM)输入的数据,如果采样到的数据的比特等于标志字节,就认为采样到了帧头字节,帧头搜索控制信号置高,将帧头字节包含的相应信息恢复成高位宽数据。
5.根据权利要求2所述的一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法,其特征在于,所述步骤(2)中的加帧头过程包括检测数据流中的包头指示信号,根据不同的检测结果进行如下步骤(1″)当包头指示信号和格式转换先入先出缓存器的写有效信号同时为高时,把内部的一个包长计数器置初值,此计数器根据先入先出缓存器的写使能信号加1计数,同时先入先出缓存器的地址指针加1;(2″)当检测到数据流中包尾指示信号时,把输入数据包的错误指示信号、有效字节指示信号、包长计数器计数值,加上标志字节形成一个低位宽的数据存入帧头寄存器中,并将该寄存器内容传到低位宽数据总线上。
6.根据权利要求5所述的一种帧定位实现包方式数据高位宽到低位宽的格式转换方法,其特征在于,状态转换先入先出缓存器的写地址指针在数据地址和帧头地址之间变换,在低位宽数据传送期间,写地址指针指向数据地址;在帧头计算结束的第一个周期,写地址指针指向帧头地址,而该帧头地址为上一个写周期数据地址的最后一位。
7.根据权利要求4所述的一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法,其特征在于,在格式恢复过程中利用帧定位提取帧头中的包长信息时,如果提取的包长值属于正常包,则对该包进行恢复;如果提取的包长信息属于特殊包,可根据需求丢弃或透传,或将特殊包的包长改为正常包的包长值。
全文摘要
本发明公开了一种利用帧定位实现包方式数据高位宽到低位宽的格式转换方法,其特征在于,所述方法包括以下步骤(1)对输入的包进行超长包检测,将超过预设定包长的包处理成标准包;(2)把所述输入的包的状态信号加上包长信息转换成低位宽的帧头,存储在数据包包头的前一个地址;(3)通过对所述低位宽的数据进行帧头定位,恢复成带有状态信息的高位宽数据。本发明与不考虑以太网包数据特点的数据格式转换的方式比较,利用帧定位的方式实现以太网包的格式转换具有节约存储资源、格式变换方便、具有“自愈”功能的优点,并且逻辑实现也比较简单,不会额外增加系统的复杂度。
文档编号H04L12/28GK1467956SQ02126420
公开日2004年1月14日 申请日期2002年7月12日 优先权日2002年7月12日
发明者徐春, 石磊, 徐 春 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1