专利名称:一种数字通信系统中的信道循环冗余码校验的方法
技术领域:
本发明涉及数字通信领域,特别是需要对信道进行循环冗余码校验的数字系统。
通信的目的是把对方不知道的消息及时可靠的传送给对方,因此,要求一个通信系统传输消息必须可靠与快速,在数字通信系统中可靠与快速往往是一对矛盾。若要求快速,则必然使得每个数据码元所占的时间缩短,波形变窄,能量减少,从而在受到干扰后产生错误的可能性增加,传送消息的可靠性减低。若要求可靠,则使得传送消息的速率变慢。因此,如何较合理的解决可靠性与速度这一对矛盾,是正确设计一个通信系统的关键问题之一。纠错码正是在解决这一对矛盾中不断发展起来的。
在《纠错码--原理与方法》一书(王新梅,肖国镇著,西安电子科技大学出版社,1991年第一版)中对纠错码作了详尽的阐述。目前数字通信系统中,利用纠错码或检错码进行差错控制的方式大致有以下几类重传反馈方式(ARQ)即发送端发出能够发现检错的码,接收端收到通过信道传来的码后,在译码器根据该码的编码规则,判决收到的码序列中有无错误产生,并通过反馈信道把判决结果用判决信号告诉发送端。发端根据这些判决信号,把接收端认为有错的消息再次传送,直到接收端认为正确为止。
前向纠错方式(FEC)即发送端发送能够被纠错的码,接收端收到这些码后,通过纠错译码器不仅能自动发现错误,而且能自动纠正接收码字传输中的错误。这种方式的优点是不需要反馈信道,能进行一个用户对多个用户的同播通信,译码实时性好,控制电路比ARQ简单。为了要获得比较低的误码率,往往必须以最坏的信道条件来设计纠错码,故所需的多余度码元比检错码要多的多,从而使编码率很低,但由于这种方式能同播,特别适用于军用通信,且随着编码理论的发展和编译码设备所需的大规模集成电路成本的不断降低,译码设备有可能做的越来越简单,成本越来越低因而在实际的通信中逐渐得到广泛应用。
混合纠错方式(HEC)这种方式是发送端发送的码不仅能够被检测出错误,而且还有一定的纠错能力。接收端收到码序列后,首先检验错误情况,如果在纠错码的纠错能力以内,则自动进行纠错,如果错误很多,超过了码的纠错能力,但能检测出来,则接收端通过反馈信道,要求发端重新传送有错的消息。这种方式在一定程度上避免了FEC方式要求用复杂的译码设备和ARQ方式信息连贯性差的缺点,并能达到较低的误码率,因此在实际中应用越来越广。
上述各种差错控制系统中所用到的码,都是一种能在译码器自动发现错误的检错码,或者能够纠正删除错误的纠删码,任何一类码按照译码方法不同,均可作为检错码、纠错码或纠删码来使用。循环冗余校验码(CRC,Cyclic RedundancyCode)便是其中非常重要的一类检错码。CRC实质上就是给传输数据块添加上不同的尾比特,根据不同场合有8,16,24等位之分,这个尾比特是通过一定的法产生,在接收端采用同样的算法产生出尾比特,当比较这两个尾比特时就可以判断出传输数据块是否有误码了。其主要作用是用来检测出传输数据块中是否有误码,但对于误码本身并没有纠正的能力。它经常被应用在ARQ方式或HEC方式中的检错环节。
图1是实现CRC通常所用的除法电路(引自《纠错码--原理与方法》王新梅肖国镇著,西安电子科技大学出版社,1991年版)。输入数据从输入端依次进入实现其算法的除法电路,该电路内部的寄存器会相应的动作,当输入比特完毕时寄存器的内容b(0),b(1)…b(n-1)就是CRC校验结果。
现有技术中实现CRC校验的方法基本上都是采用硬件电路或模拟硬件来实现,比如在以下美国专利中6,014,767 Method and apparatusfor a simple calculation ofCRC-10;6,058,462 Method and apparatusfor enablingtransfer of compressed data recordtracks with CRC checking;5,870,413 CRC code generation circuit for generating a CRC code and a codeerror detection circuit for detecting a code error in a CRC code word;5,951,707 Method of partitioning CRC calculationfor alow-cost ATM adapter;均对CRC提供了相关的实现方法,这种方法适用于以硬件为主的通信系统。而在现代数字通信系统特别是第三代移动通信系统中,系统的结构以软件实现为主,如果将这一部分剥离出来用硬件完成,将增加系统的复杂度并破坏其完整性,无法做到实时快速。所以以上这些方法都不适用。
于是就产生了用软件方法实现CRC的思路。以下结合3rd GenerationPartnership Project(3GPP)1999年12月TS25.212 v3.1.1文档中的实例说明如何用软件方法实现。
3GPP的3G TS25.212 v3.1.1规定,媒介接入控制(MAC)层来的数据以传输块或传输块集的形式到达。CRC单元为每一传输块提供错误检测信息。CRC的校验位有0(即不做校验处理),8,16,24位之分。其生成多项式为gCRC24(D)=D24+D23+D6+D5+D+1gCRC16(D)=D16+D12+D5+1gCRC8(D)=D8+D7+D4+D3+D+1下面就以8位CRC校验为例说明现有技术的软件实现方法在信道编码过程中,把从传输数据块中的比特标为a1,a2,a3,…, ,校验比特标为P1,P2,P3,…, 式中Ai是传输数据块的长度,Li表示校验位数,对于8位CRC校验Li取8。根据编码基本理论中的规定,对该传输数据块进行CRC校验,就是在GF(2)域上找到一个多项式,a1DAi+7+a2DAi+6+...+aAiD8+p1D7+p2D6+...p7D1+p8]]>并满足当用该多项式去除生成多项式gCRC8(D)=D8+D7+D4+D3+D+1时,可以除尽,该多项式有编码的基本理论唯一确定。
在实现方法上,通常方法采用图1所示的升幂除法电路,即将序列a1,a2,a3,…, 升幂D8后去除gCRC8(D),得到商式Q(D)和一个小于8次的余式R(D),余式R(D)就是所需CRC结果(a1DAi+7+a2DAi+6+...+aAiD8)/gCRC8(D)=Q(D)]]>
虽然采用硬件设计,实现起来比较容易,但这种方法对于以软件实现为主的现代通信系统是不适用的。而采用程序在DSP中模拟图1中的硬件除法电路来实现,即通过编程来将编码器的各个抽头抽出后再累加。每当来一个比特,便需将8个(8位CRC)D寄存器中的数据右移一位后再按图1相应位抽出抽头后再累加;最后,当数据输入完毕后,得到的CRC校验位从符号最高位(MSB)到符号最低位(LSB)附加到传输块数据段尾部,对于8/16/24位CRC,随着抽头数量的不同,计算一个点所需的加法数量就不一样。由于第三代系统中,对数据的处理量很大,如果每一个点的计算需要耗费n个CPU周期,则总的计算时间就是n倍,这就造成处理器资源紧张,从而不得不采用多处理器,增加了成本,这也是不可取的方案。如何实现占用最少的系统资源实现大数据量的处理,正是本领域的急待突破的技术难关。
本发明的目的是提出了一种基于多项式余式分配律的信道CRC的方法,以克服现有技术在现代数字通信系统对信道CRC时耗费处理器大量宝贵资源的缺点,真正实现实时快速实现信道CRC校验。
本发明提出的基于多项式余式分配律的实现信道CRC校验方法,其特征在于首先,确定出信道中需要循环冗余码校验的数据块的最大长度(在每个数字系统中都有具体要求);其次,计算出假定最大长度输入全为1时每个点的余式,并保存在数据区中;将需要CRC校验的数据块存放在数据区中;再次,开始循环迭代,具体做法是每次按顺序从数据区中提取一个输入比特和一个余式;判断输入比特是否为1,如是则将余式累加入保存结果的寄存器,如为0则忽略不计;重复提取、判断、累加直到输入结束;输出寄存器中的结果。
由于本发明公开了一种基于多项式余式分配律的方法,将最终结果的余式分解为各个点的余式之和,使得每个点的CRC校验最多只需一次加法即可完成,而当输入比特是0时,甚至无需加法操作即可继续迭代下一个点,这对于0和1各占50%概率的随机数据块来说,无疑在计算时间上实现了大幅度的动态缩减,并且无论8/16/24位CRC,每点计算均相同。即使输入为全1,总的计算时间才为常规方法的n分之1,其中n大于等于抽头数量,这都是以往方法所无法比拟的。
下面结合附图,并通过8位CRC校验的实施例来详细描述如何用本方法实现快速CRC校验。
图1所示为实现CRC的升幂除法电路。图2所示为本发明运用多项式余式分配律实现CRC校验的迭代原理图。图3所示为本发明运用多项式余式分配律实现CRC校验的流程图。
图1所示为常用的升幂除法电路,输入数据从输入端依次进入除电路,该电路内部的寄存器会随节拍做相应的移位,翻转等动作,当输入比特完毕时寄存器里存留的内容b(0),b(1)…b(n-1)就是CRC校验结果,由相应的硬件电路将其内容读出。
图2中,每提取一个输入比特和从数据区中提取一个点的余式时,判断输入比特是否为1,如为1则将余式按图2所示累加入S,如为0,则忽略不计,一直到计算完Ai个点后将S输出即可,由于当前有效的数据块长度是Ai,小于预存的最大长度MAX,所以Ai点到MAX点是无效数据,不用计算的。
图3为实现CRC校验的流程中,适用于任何系统的CRC校验。为了方便理解和更清楚的表述,现结合8位CRC校验实施例来说明,步骤如下第一步确定首先8点CRC校验的数据块的最长度MAX;第二步(1)计算出D8/gCRC8(D),D9/gCRC8(D),…,DMAX+8/gCRC8(D)的余式(可采用C语言编程计算,也可采用其他编程方法计算),并将每个点的8位余式按字节从低到高顺序存放在起始地址为DATA的数据区中;(2)将需要CRC的数据块存放在起始地址为INPUT的数据区中;第三步(1)初始化寄存器A,B,S;(2)顺序从起始地址为DATA的数据区中提取一个字节(余式)放入寄存器A;(3)按顺序从起始地址为INPUT的数据区中提取一个比特放入寄存器B;(4)判断寄存器B为1否,是则累加余式S=S+A,是0则省略;(5)重复以上的提取、判断、累加程序,直到数据块计算完毕;(6)输出寄存器S的值,即为8位CRC校验的结果。
本发明采用是一种基于多项式余式分配律的计算方法,由于预先保存了每个点的余式,从而使得在对数据块进行CRC时,一个点的计算只需要一次加法操作,并当输入点为0时可以忽略不计,对于0和1各占50%概率的随机数据块来说,在计算时间上实现了大幅度的动态缩减,并且无论8/16/24位CRC,每点计算均相同。即使输入为全1,总的计算时间才为常规方法的n分之1,其中n大于等于抽头数量。由此可见,本发明采用的方法与现有技术相比具有极大的优越性。
本发明不局限于上述的8位CRC实施例,还完全适用于第三代移动通信系统3GPP文本规定的所有信道其它诸如16位、24位等CRC方案,这对所有需要在DSP中进行实时高速卷积计算的系统具有非常重大的意义。可以看出,采用本发明所提出的新方法来实现CRC校验,完全不同于以往的直接采用硬件或采用软件模拟硬件的方法,完全是一种新的概念基础上的应用,它使得在数字通信系统中对所有必须的CRC运算大大提高了性能,在DSP中实现时使得占用了部分主要的系统资源的CRC此时仅占用了非常微量甚至可以忽略不计的系统资源,在窄带CDMA,W-CDMA,及所有需要CRC校验的数字系统下均可以广泛的应用,尤其在那些实时性要求很高的系统该方法会有着卓越的性能表现。
权利要求
1一种用来实现快速信道循环冗余码校验的方法,其特征在于首先,确定出信道中需要循环冗余码校验的数据块的最大长度;其次,计算出假定最大长度输入全为1时每个点的余式,并保存在数据区中;将需要CRC校验的数据块存放在数据区中;再次,开始循环迭代,每次按顺序从数据区中提取一个输入比特和一个余式,判断输入比特是否为1,如是则将余式累加入保存结果的寄存器,如为0则忽略不计,重复提取、判断、累加直到输入结束,输出寄存器中的结果。
2根据权利要求1所述的循环冗余码校验的方法,其特征在于在计算最大长度输入全为1时每个点的余式时,采用C语言或其他语言进行编程计算。
3根据权利要求1所述的循环冗余码校验的方法,其特征在于计算出的余式的个数应为待CRC校验的数据块最大长度数。
4根据权利要求1所述的循环冗余码校验的方法,其特征在于在将计算得到的余式存入数据区时按字节从低到高的顺序存放在定义了起始地址的数据区中。
5根据权利要求1所述的循环冗余码校验的方法,其特征在于将需要CRC校验的数据块存放在数据区中的另一个定义的起始地址。
6根据权利要求1所述的循环冗余码校验的方法,其特征在于在循环迭代时采用寄存器一存放迭代过程需要的余式。
7根据权利要求1所述的循环冗余码校验的方法,其特征在于在循环迭代时采用寄存器二存放迭代过程暂存的需要CRC校验的数据比特。
8根据权利要求1所述的循环冗余码校验的方法,其特征在于在循环迭代时采用寄存器三存放CRC校验的结果。
9根据权利要求1所述的循环冗余码校验的方法,其特征在于在循环迭代时提取的余式必须按从1到有效数据块长度数的顺序进行。
10根据权利要求1或9所述的循环冗余码校验的方法,其特征在于在循环迭代时提取的输入比特和余式必须是按从1到有效数据块长度数一一对应的顺序进行。
全文摘要
本发明公开了一种利用多项式余式分配律进行信道CRC的方法;通过预先计算每个点的余式,并予以保存,再对输入点进行简单的0、1判断,为1时提取该点的余式进行一次加法运算,为0则省略,然后循环迭代,最后输出CRC校验结果。本发明适用于数字通信系统中信道的所有CRC方案;这种信道CRC方法的实现可以减少大量的运算量,以达到减轻DSP资源的负担;在数字通信领域特别是第三代移动通信系统中完成实现实时快速处理。
文档编号H04J13/00GK1325199SQ00119600
公开日2001年12月5日 申请日期2000年8月8日 优先权日2000年8月8日
发明者白涛, 蒲迎春, 吴晓文 申请人:深圳市中兴通讯股份有限公司