专利名称:一种循环冗余编码定帧方法
技术领域:
本发明涉及网络技术,尤其涉及网络传输技术,具体的讲是一种循环冗余编码定帧方法。
背景技术:
通用成帧规则(GFP)和异步转移模式(ATM)等数据帧有固定长度,或者长度可变,当长度可变时,需要在数据流里指示包长信息,即在每个帧预定义的位置上有一个固定长度的报头,报头包含信息数据和校验数据。其中在报头的校验中,帧同步检测使用校验数据。帧同步检测的一般方法,用编码产生器多项式除以输入的数据流(包括帧信息数据和校验数据),得到一个余数,如果为零或者是一个常数,就认为帧校验正确。
CRC校验的基本原理是CRC校验码可由一个常数去除该数据流的二进制数值而得,商数被放弃,余数作为CRC校验码追加到数据流尾,产生新的数据流进行发送。在接收端,新的数据流被同一常数去除,检查余数是否为一个常数(通常为0)。如果余数为一个常数,就认为传输正确,否则就认为传输中已发生差错。
并行码流CRC校验产生器的硬件实现。在设计并行CRC校验码产生器的时候,我们可以采用串行CRC校验码的思想。与串行CRC校验码产生器不同的是,要求并行码流CRC校验码产生器的CRC校验码在同一拍输出,以CRC4_D8校验为例(数据总线为8位),要求在一个时钟周期内,移位寄存器一次需要移进8位数据。实际上,用移位寄存器不可能在一个时钟周期内算完8位,所以这部分电路是用组合逻辑来完成。
公式推导如下
(1)将待传输帧(定长比特串,既有信息码元k位)看作一个多项式,将比特串,解释成多项式P(x)。
(2)事先约定一个生成多项式G(x)(Generator Polynomial),G(x)的最高项次数为r,比如对CRC-4而言是10011,即对应的多项式为G(x)=x4+x+1;r的值为4。
(3)用xn-k·P(x)=xr·P(x)得到的积来除以生成多项式G(x),最后得到一个r位的余式r(x),其最高项的次数为r-1。这个余式所代表的比特串就是k位信息码的CRC校验码,把校验码接在位信息码的后面,就形成了n=k+r位的比特串。对于CRC-4而言,其中的r=4。x4·P(x)相当于在k位比特串的末尾添加上r=4位零。注意到x4·P(x)-r(x)再除以G(x)的话,余数为0。对于二进制的模2运算来说,加法与减法是一样的,这样的话,多项式T(x)=x4·P(x)-r(x)=x4·P(x)+r(x)对应的比特串就是在信息码元后面接上了4位的CRC码。
(4)上一步中讲的是如何形成校验码。如果接收到一个含有CRC校验码的位比特串,它所对应的多项式除以生成多项式的话,余数应该为0或是一个常数,这样便可以对数据进行校验。
按照背景技术里描述,在接受端,首先产生如下图所示的Soc信号,表明crc校验开始,并给crc校验赋初值,根据Enable信号,最后校验输入的数据+crc_out的余数是否是一个常数(通常为零),来检测数据传输是否正确。表明在每个包来时,都需要占用一拍的处理周期。
以CRC4_D8校验为例(数据总线为8位)接口信号接口时序如图1所示,其中的信号说明Reset复位信号,高有效。
Gclk时钟。
Data_in8bit的数据输入。
Soc校验开始使能标志。此时赋CRC校验的初值。
Enable数据有效使能信号,有效的数据才进行CRC校验。
Crc_out每次校验的CRC校验结果。在END处的Crc_out才是最终CRC校验的结果。
但是,这样的设计需要每次都判断复位的位置,并且占用一个时钟周期,当需要每拍都进行校验时,需要分多个校验电路来实现此部分的功能。在接收端CRC校验带上CRC值,需要占用相应的周期数。如果接受端运算只算数据的CRC校验,通过比较新算的CRC值和携带的CRC值是否相等,来判断是否正确。就可以减少正常数据的延时。
专利号为US5367544的美国专利,公开于1994年11月22日,该NORTEL专利思想的提取的方法是无需进行CRC的重复复位,一套正常的CRC校验的,同时另外一套进行CRC余数的校验,抵消不复位引入的先前余数对本次CRC计算结果的影响。
图2是NORTEL检测数据流帧同步的一种方法图,数据帧有固定长度,或者长度可变,当长度可变时,需要在数据流里指示包长信息,即在每个帧预定义的位置上有一个固定长度的报头,报头包含信息数据和校验数据。其中在报头的校验中,帧同步检测使用校验数据。
帧同步检测的方法,用编码产生器多项式除以输入的数据流,同时用编码产生器多项式除以先前延时的数据流,比较两个除法的余数,如果一致,表明输入的数据流有一个有效的编码字,表明帧同步。如果此帧是长度可变,并且长度是确定的时候,可以决定数据流的帧长。
其中i(x)表明输入的数据流,O(x),即10,表明先前输入但延时的数据流。11和12表明编码生成器多项式,e(x)表明多项式的余数的比较结果。如果一致,e(x)就会为零。n表明包头的位数,k表明包头的信息位数,n-k表明包头的校验位数。g表明编码生成器多项式的系数。本方案的缺点在于存在着延时问题,并且需要两套CRC校验电路,一套CRC电路计算输入的数据流,另一套电路计算先前输入但延时的数据流,计算时需要带上携带的CRC信息。
发明内容
本发明的目的在于提供一种循环冗余编码定帧方法以解决数据延时的时序问题,以及减化CRC电路,来实现CRC校验,本发明实现GFP、异步转移模式(ATM)等接收定帧时,能以简单,快速,高效的方式,完成CRC校验的定帧工作。
一种循环冗余编码定帧方法,包括如下步骤步骤1将输入的数据进行位宽变换,生成与帧信息数据位宽相匹配的待校验数据流;步骤2对所述待校验数据流进行循环冗余编码运算,得到循环冗余编码的输出值;步骤3判断循环冗余编码的输出值与输入的数据流携带的帧校验数据值是否一致,如果一致则表明循环冗余编码校验正确,定帧结束;如果不一致则继续对下一数据帧执行上述相同的操作,直到两者相同为止。
对于信息数据位数比较少的情况下,把各种不同的信息数据所对应的循环冗余校验值存储于一张表内,通过查表确定接收的信息数据对应的循环冗余校验值。
在所述得到信息数据循环冗余校验值后延迟一个时钟周期或后面的某个周期,再与该数据帧的校验数据进行比较。
在每个时钟周期都对计算信息数据的循环冗余校验步骤赋初值。
所述的初值为零或者预先定义的值。
所述的循环冗余运算模块在一个时钟周期内计算出该信息数据的循环冗余校验值。
本发明有益效果在于,在接收端,每个时钟周期都在赋初值,每个时钟周期都在进行CRC的校验,每个时钟周期都能得到CRC校验的结果,都可以在下一时钟周期进行判断CRC校验的结果是否正确,如果正确,定帧结束。由于采用一套CRC校验电路,减少资源的使用。由于每个时钟周期到来的数据都可以判断CRC校验是否正确,不需要延时,达到延时最小的目的。
图1是现有技术接口信号时序图;图2是现有技术检测数据流帧同步的结构图;图3是本发明装置的结构图;图4是本发明实施例流程图;图5是本发明实施例接口信号时序图。
具体实施例方式
下面结合
本发明的
具体实施例方式如图3所示为本发明结构示意图,只用一套CRC运算电路实现快速定帧。通过如下步骤●输入的数据经过位宽变换后生成DATA_IN和CRC_IN,DATA_IN为需要校验的帧信息数据,CRC_IN为携带的帧校验数据。
●对DATA_IN进行CRC运算,得到CRC_OUT,●如果CRC_OUT和CRC_IN一致,输出CRC_OK,表示帧同步。
本发明的实现方法如下,在接收端,每个时钟周期到来的时候,CRC的初值用组合逻辑赋初值,对所有需要校验的数据,不包括携带的CRC值,进行CRC校验,得到一个CRC校验的值寄存,然后在下一个时钟周期,如果此时已得出数据携带的CRC校验的值,拿新的CRC校验的值和数据本身携带的CRC校验的值进行比较,如果一致,就表明CRC校验是正确的。如果不一致,继续对下一数据帧进行相同的操作,直到CRC校验比较相同的时候为止。CRC校验正确,定帧结束。数据帧有固定长度或者长度可变但是在数据流里指示包长信息,即在每个帧预定义的位置上有一个固定长度的报头,并且这个报头包含信息数据和校验数据,其中帧信息数据表示当前数据包的包长信息或其他信息,帧校验数据表示对帧信息数据的校验。上行添加校验数据,下行通过帧校验数据进行校验。其中在报头的校验中,帧同步检测使用校验数据。
图4为本发明处理流程图。DATA[1:0]输入的两位宽的数据。DATA_IN[3:0]每个时钟周期CRC运算的输入输出。W[3:0]4次数据输入组合逻辑产生的余数。D[3:0]W[3:0]的寄存。CRC_OUT寄存输出的余数。CRC_IN数据携带的校验数据。CRC_OK如果CRC_OUT和CRC_IN相等,就表示有效。
帧信息数据是4位,校验CRC数据也是4位,每个时钟到来时,收到两个bit的信息数据。由于信息数据4位,需要两个时钟周期才能收到4bit的数据。要想在最短的周期内得到正确的CRC校验的指示。假设输入信息数据位DATA[1:0],把它送给DATA_IN[3:2],把DATA[1:0]延时一拍,如下图中的D[3]和D[2],把他们送给DATA_IN[1:0],这样就可以得到4位的信息数据,高位先传。要求在一个时钟周期内,首先是给W[3:0],赋初值为零或者预先定义的值,然后进行CRC的4bit的校验,此电路是用组合逻辑在一个时钟周期内算完4位DATA_IN[3:0]来完成的,如下图中的W
,W[1],W[2],W[3],最后把算完后的W[3:0]寄存,得到CRC_OUT[3∶0],延时CRC_OUT一拍,得到CRC_OUT_DLY。拿算出的CRC_OUT_DLY和送来的CRC_IN,即DATA_IN进行比较,就可以判断CRC校验是否正确,如果一样就正确,不一样则在每一个时钟周期继续这样的执行过程,直到找到CRC校验正确的数据为止。
简单的说就是,将不带CRC校验数据的信息数据带入CRC运算器算出一个CRC_OUT,比较CRC_OUT和CRC_IN,如果一致就送给GFP或是异步转移模式(ATM)帧处理模块。
当信息数据位数不是很长时,可以加入一个信息数据所对应的CRC校验值列表,每次当分离开信息数据与校验数据后,对照该信息数据查找列表,获得相应的校验值,与接收数据帧的校验数据进行对比,如果一样则证明该数据帧接收正确,如果不一致则继续对下一数据帧进行比较操作。
图5为本发明接口时序图。该数据总线为2位,接口信号接口时序首先描述如下延时输入数据DATA[1:0],得到延时DATA_DLY[1:0]。
对输入数据和延时数据进行位宽变换得到CRC运算的输入数据,即信息数据DATA_IN[3:0];DATA_IN={DATA_DLY[1:0],DATA[1:0]}。
CRC运算每个时钟周期,都对CRC电路赋初值,并且对信息数据DATA_IN进行CRC运算,得到组合逻辑CRC_TMP[3:0]。
寄存CRC_TMP,得到CRC_OUT。
寄存CRC_OUT,得到CRC_OUT_DLY。由于输入数据DATA是两位的,数据携带的帧校验数据CRC_IN[3:0]需要两个时钟周期才可以到达,因此得到的CRC_OUT不可以直接和DATA_IN[3:0]进行比较,需要延时一拍才可以得到,即CTC_OUT_DLY。
比较得到CRC_OK。CRC_OUT_DLY和DATA_IN[3:0],此时的DATA_IN[3:0]如果是帧校验数据CRC_IN,进行比较,就会一致,输出CRC_OK。如果不一致,继续操作,对下一数据帧的校验,直到输出一致为止。
每个时钟周期都在赋初值(输入数据发生变化时赋初值,也属于此种情况),无需判断报头开始的位置。因此不需要判断赋初值的位置,并且省一个时钟周期。每个时钟周期都可以得到一个可能需要的CRC校验的结果。都可以在下一个时钟周期或者后面的某个周期去判断CRC结果是否正确。
本发明的有益效果在于,在接收端,每个时钟周期都在赋初值,每个时钟周期都在进行CRC的校验,每个时钟周期都能得到CRC校验的结果,都可以在下一时钟周期进行判断CRC校验的结果是否正确。可以在最短的时间内,完成CRC校验。此部分采用流水处理的思想,简单,快速,占用的资源比较少。在GFP和ATM定帧时,校验的数据比较少,比如GFP帧只有16位,CRC是16位的。这样就可以比较方便的定帧。
以上具体实施方式
仅用于说明本发明,而非用于限定本发明。
权利要求
1.一种循环冗余编码定帧方法,其特征在于,步骤1将输入的数据进行位宽变换,生成与帧信息数据位宽相匹配的待校验数据流;步骤2对所述待校验数据流进行循环冗余编码运算,得到循环冗余编码的输出值;步骤3判断循环冗余编码的输出值与输入的数据流携带的帧校验数据值是否一致,如果一致则表明循环冗余编码校验正确,定帧结束;如果不一致则继续对下一数据帧执行上述相同的操作,直到两者相同为止。
2.根据权利要求1所述的一种循环冗余编码定帧方法,其特征在于,对于信息数据位数比较少的情况下,把各种不同的信息数据所对应的循环冗余校验值存储于一张表内,通过查表确定接收的信息数据对应的循环冗余校验值。
3.根据权利要求1所述的一种循环冗余编码定帧方法,其特征在于,在所述得到信息数据循环冗余校验值后延迟一个时钟周期或后面的某个周期,再与该数据帧的校验数据进行比较。
4.根据权利要求1所述的一种循环冗余编码定帧方法,其特征在于,在每个时钟周期都对计算信息数据的循环冗余校验步骤赋初值。
5.根据权利要求4所述的一种循环冗余编码定帧方法,其特征在于,所述的初值为零或者预先定义的值。
6.根据权利要求1所述的一种循环冗余编码定帧方法,其特征在于,所述的循环冗余运算模块在一个时钟周期内计算出该信息数据的循环冗余校验值。
全文摘要
本发明涉及网络传输技术,提供了一种循环冗余编码定帧方法及系统,解决了GFP和异步转移模式(ATM)定帧时耗费系统资源电路过多的缺点,步骤1将输入的数据进行位宽变换,生成与帧信息数据位宽相匹配的待校验数据流;步骤2对所述待校验数据流进行循环冗余编码运算,得到循环冗余编码的输出值;步骤3判断循环冗余编码的输出值与输入的数据流携带的帧校验数据值是否一致,如果一致则表明循环冗余编码校验正确,定帧结束;如果不一致则继续对下一数据帧执行上述相同的操作,直到两者相同为止。可以在最短的时间内,完成CRC校验,并在每个时钟周期都能得到CRC校验的结果。
文档编号H04L1/22GK1798014SQ200410101700
公开日2006年7月5日 申请日期2004年12月20日 优先权日2004年12月20日
发明者张锋, 张洪涛 申请人:华为技术有限公司