CN101207467B - 循环冗余校验码的生成和数据序列发送、校验方法及装置 - Google Patents
循环冗余校验码的生成和数据序列发送、校验方法及装置 Download PDFInfo
- Publication number
- CN101207467B CN101207467B CN2006101654183A CN200610165418A CN101207467B CN 101207467 B CN101207467 B CN 101207467B CN 2006101654183 A CN2006101654183 A CN 2006101654183A CN 200610165418 A CN200610165418 A CN 200610165418A CN 101207467 B CN101207467 B CN 101207467B
- Authority
- CN
- China
- Prior art keywords
- data
- bit
- cyclic redundancy
- redundancy check
- check code
- 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.)
- Active
Links
Images
Landscapes
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种循环冗余校验码的生成方法,包括:A、将数据序列顺序分段,建立与所分数据段同比特的循环冗余校验码表项;B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;D、将所述数据序列的首个数据段丢弃;E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码。通过本发明能够快速处理包括位数较多的数据序列。
Description
技术领域
本发明涉及通信及计算机数据传输技术领域,尤其涉及一种循环冗余校验码的生成和数据序列发送、校验方法及装置。
背景技术
在数据传输过程中,由于受传输距离、现场状况、以及各种干扰等诸多因素的影响,使得通信设备之间的数据传输常会发生一些无法预测的错误。为降低这些错误所带来的不利影响,在数据传输时通常采用数据校验的方法来发现和/或纠正,例如,在发送端的待发送数据中插入特定的校验码,在接收端利用接收到的数据中特定的校验码对数据进行校验,进而判断所述数据在传输中是否有误。
目前,循环冗余校验(CRC,Cyclic Redundancy Check)码是数字信号传输中使用较普遍的一种差错控制编码。所述CRC校验的基本原理是:发送端将待发数据序列N(x)除以某一特定的CRC生成多项式G(x)(如CRC-5、CRC-8、CRC-16、CRC-32等),得到余数R(x),该余数R(x)为CRC校验码。发送端将该CRC校验码置于所述待发数据序列N(x)之后,并随该数据序列N(x)一同发送。接收端将接收到的数据序列N(x)按照与发送端相同的方法,除以同一生成多项式G(x),得到新的CRC校验码。将该新CRC校验码与原CRC校验码进行比较,如果一致,则认为接收的数据序列正确;反之,则认为该数据在传输中有差错,并要求发送端重新发送。
所述CRC校验操作通常采用专用硬件电路实现,但为降低成本,很多系统常利用单片机、微处理器编程或可编程器件来完成。目前常用的CRC校验方法有:
方法一:直接生成法。所述直接生成法是根据所述CRC校验码的生成原理直接计算生成CRC校验码,该方法是将整列待发数据N(x)除以某一特定生成多项式G(x),直到得到最终的结果,生成的余数即所述的CRC校验码。这种方法由于逐位处理,1次只能处理1比特数据,因此处理数据的效率低,且运算量大,不适合对较长数据序列的校验处理。
方法二:查表法。所述查表法是在CRC表项中查找到与数据序列对应的CRC校验码,然后根据该CRC校验码进行校验。该方法首先要求生成一个与待处理数据序列长度同比特的CRC表项,所述表项中包含所有该位数的数据序列和与之对应的CRC校验码。然而,该方法在数据序列较长时,会占用较大的表项资源。例如,如果对20比特的二进制数据序列进行CRC-5校验,则需要的表项的数量为220=1M个,又因为每一个表项占5bit,因此要占用220×5Bit=5M Bit的系统存储空间,这对于一般的可编程逻辑器件FPGA是无法满足的。
发明内容
有鉴于此,本发明的目的在于提供一种占用的存储单元少,而且能够快速处理较多位数数据序列的循环冗余校验码的生成和数据序列发送、校验方法及装置。
为解决上述问题,本发明提供的循环冗余校验码的生成方法,包括:
A、将数据序列顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码。
其中,所述步骤A具体为:
当数据序列能够被等分时,将数据序列顺序等分成n比特数据段,建立n比特的循环冗余校验码表项;或
当数据序列不能被等分时,将数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段,建立n、n1比特的循环冗余校验码表项。
其中,在步骤E中所述将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码具体为:
当数据序列能够被等分时,将所述n比特数据进行n比特循环冗余校验码表项的查找得到循环冗余校验码;或
当数据序列不能被等分时,将所述n1比特数据进行n1比特循环冗余校验码表项的查找得到循环冗余校验码。
优选的,所述直到所述数据序列只剩最后一段时具体为:直到所述数据序列长度小于等于n比特时。
优选的,在所述步骤A与所述步骤B之间还包括:设置计数器的初始值为0。
其中,在所述步骤D和步骤E之间还包括:将计数器值加1。
其中,所述直到所述数据序列只剩最后一段时具体为:直到当所述计数器值等于所述数据序列所分的数据段的总数减1时。
基于上述方案,本发明提供的循环冗余校验码的生成装置,包括:
寄存器用于将存入的数据序列顺序分段;
表项生成单元建立与所述寄存器中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元;
所述查表单元对所述寄存器中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元;
所述处理单元将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器中所述r位数据;
所述寄存器将所述数据序列的首个数据段溢出;
判断单元对所述寄存器中剩下的数据段总数进行判断,直到所述寄存器中的数据序列只剩最后一段时,所述查表单元将所述寄存器中该段数据进行相应的循环冗余校验码表项的查找,得到循环冗余校验码。
其中,当数据序列不能够被等分时,所述查表单元包括:第一查表单元、第二查表单元;
所述寄存器将存入的数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段,
所述表项生成单元建立与所述寄存器中n、n1比特数据段同比特的n、n1比特循环冗余校验码表项,并将所述n、n1比特循环冗余校验码表项分别存入所述第一查表单元、第二查表单元。
其中,所述第一查表单元对所述寄存器中首个数据段进行n比特的循环冗余校验码表项查找,并将得到的r位查找结果发送至所述处理单元;
所述第二查表单元对所述寄存器中最后一个数据段进行n1比特的循环冗余校验码表项的查找,得到循环冗余校验码。
基于上述方案,本发明提供的含循环冗余校验码的数据序列的发送方法,包括:
A、将数据序列顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码;
F、将所述循环冗余校验码顺序添加在所述数据序列之后,随该数据序列一同发送。
基于上述方案,本发明提供的含循环冗余校验码的数据序列的发送装置,包括:
寄存器用于将存入的数据序列顺序分段;
表项生成单元生成与所述寄存器中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元;
所述查表单元对所述寄存器中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元;
所述处理单元将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器中所述r位数据;
所述寄存器将所述数据序列的首个数据段溢出;
判断单元对所述寄存器中剩下的数据段总数进行判断,直到所述寄存器中的数据序列只剩最后一段时,所述查表单元将所述寄存器中该段数据进行相应的循环冗余校验码表项的查找,并将得到的循环冗余校验码发送至发送单元;
所述发送单元将所述循环冗余校验码顺序添加在所述数据序列之后,随该数据序列一同发送。
基于上述方案,本发明提供的对接收数据序列进行循环冗余校验的方法,包括:
A、将数据序列顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码;
F、将所述得到的循环冗余校验码与原循环冗余校验码进行模二加,根据其结果对该数据序列进行校验。
其中,所述根据其结果对该数据序列进行校验包括:
当所得结果为0时,则认为所述待处理的数据序列无误;
当所得结果为1时,则认为所述待处理数据序列有误。
基于上述方案,本发明提供的对接收到的含有循环冗余校验码的数据序列进行循环冗余校验的装置,包括:
寄存器用于将存入的数据序列顺序分段;
表项生成单元生成与所述寄存器中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元;
所述查表单元对所述寄存器中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元;
所述处理单元将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器中所述r位数据;
所述寄存器将所述数据序列的首个数据段溢出;
判断单元对所述寄存器中剩下的数据段总数进行判断,直到所述寄存器中的数据序列只剩最后一段时,所述查表单元将所述寄存器中该段数据进行相应的循环冗余校验码表项的查找,并将得到的循环冗余校验码发送至校验单元;
所述校验单元将所述得到的循环冗余校验码与原循环冗余校验码进行模二加,根据其结果对该数据序列进行校验,并将校验结果输出。
与现有技术对比,本发明首先将待处理数据序列进行分组,分成含有少量比特数的数据段,再通过对分组数据进行查表、及简单的模二加运算,从而进行CRC校验。通过本发明能够减小系统的运算量,进而提高了处理速度,尤其适用于位数较多的数据序列;同时,本发明只对分组后的数据段进行CRC表项的查询,由于分段数据的比特数不大,为3~10位,所以所述CRC表项占用的存储空间会很小,这对于尤其采用可编程器件来进行CRC校验而言,还能够节省系统的存储资源。
附图说明
图1为采用直接生成法生成CRC校验码的方法流程图;
图2为本发明生成CRC校验码的方法实施例一的流程示意图;
图3为本发明生成CRC校验码的方法实施例二的流程示意图;
图4为本发明生成CRC校验码的方法实施例三的流程示意图;
图5为本发明生成CRC校验码的方法实施例四的流程示意图;
图6为本发明CRC校验码生成装置结构示意图;
图7为本发明含有CRC校验码的发送数据序列的发送装置结构示意图;
图8为本发明用于对接收数据进行CRC校验的装置结构示意图。
具体实施方式
本发明提供的循环冗余校验码的生成方法,包括:
A、将数据序列顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码。
其中,所述循环冗余校验(以下简称CRC)码表项包括长度为相同比特的所有数据段及其对应的CRC校验码;所述CRC校验码可根据特定的CRC生成多项式采用直接生成法生成。请参阅图1,为采用直接生成法生成CRC校验码的方法流程图,设待处理数据序列g(x)为m位,该方法包括:
步骤101:将所述寄存器中的值置零。
步骤102:在待处理的m比特的数据序列g(x)后添加r个零后,按照高低位顺序将该数据序列的一段数据存入所述寄存器中。其中所述r值等于要生成CRC校验码的位数,同时还根据所述r值确定所述生成多项式G(x)。例如当r=5时,则选定CRC-5生成多项式。
步骤103:判断预处理的数据序列g(x)的位数是否小于等于r。当大于r时,执行步骤104;否则,执行步骤107。
步骤104:判断所述寄存器首位是否为1?如果为1,则执行步骤105;否则,执行步骤106。
步骤105:将所述寄存器中的预处理的数据序列与所述生成多项式G(x)进行模二加。
步骤106:将所述寄存器中的数据序列左移1位,读入继该数据段后的一个新的数据并置于寄存器位0的位置。返回至步骤103。
步骤107:判断预处理的数据序列g(x)的位数是否等于r?如果等于r,执行步骤108;否则,所述寄存器中的数值即为CRC校验码。
步骤108:将所述寄存器中的预处理的r位数据与所述生成多项式G(x)进行模二加,所得结果为CRC校验码。
下面结合附图对本发明CRC校验码的生成方法的实施方式做进一步的详细阐述。
请参阅图2,为本发明CRC校验码的生成方法实施例一的流程示意图,本实施例一的具体步骤是:
设待处理的数据为m位二进制序列g(x),CRC校验生成多项式为r阶的G(x)。
步骤201:将m位待校验数据序列g(x)按照n比特一组,从首位开始分成若干个数据段,所述比特n的取值范围优选为3~10。
步骤202:利用直接生成法生成n比特的CRC校验码表项。
所述n比特的CRC检验码表项包括所有n比特二进制数据序列及与其对应的CRC检验码,所述校验码是根据特定CRC生成多项式采用直接生成法计算得到。
具体为,将n比特的“0”“1”组成的二进制数据序列通过排列组合得到所有n比特的二进制数据序列,即2n个n比特的二进制数据序列。再将2n个n比特的二进制数据序列分别通过直接生成法,得到与之相对应的CRC校验码。将所述生成的2n个CRC校验码与其对应的数据序列填入所述CRC校验码表项中,得到一个二维的n比特CRC校验码表项。例如,当n为4比特时,如果采用5阶的CRC生成多项式,按照上述方法则可生成一个4比特的CRC-5校验码表项,如下表1所示:
表1 4比特CRC-5校验码表项
步骤203:将所述m比特数据序列g(x)末尾添加r个零,得到m+r比特的数据序列。将该m+r比特的数据序列写入m+r位的寄存器中。
步骤204:判断g(x)位数是否等于n?如果不等于n,执行步骤205;否则,执行步骤207。
步骤205:对首个n比特数据段进行n比特CRC校验码表项的查询。
从g(x)高位依次取n比特数据,在所述n比特CRC校验码表项中查找与该数据对应的CRC校验码,所述该CRC校验码数值位长为r比特。
步骤206:将该查找结果与进行模二加,并将查找到的所述r比特CRC校验码与所述数据序列g(x)的第二数据段首位起的r位数据进行异或运算,将所得结果取代所述r位数据;并将该数据序列左移n位。返回至步骤204。
步骤207:根据所述g(x)中的n位数据查询n比特CRC校验码表项。所得结果即所述n比特数据段对应的CRC校验码。
请参阅图3,为本发明方法实施例二的流程示意图。当所述m位待处理的二进制数据序列g(x)不能被n整除时,此时设商为a,所得余数为n1。则可按照下述实施例二的方法进行处理,本发明对数据序列进行CRC校验的方法实施例二为:
设待处理的数据段为m位二进制序列g(x),CRC校验生成多项式为r阶的G(x)。
步骤301:将m位待校验数据序列g(x)按照n比特为一组从首位开始分成若干个数据段,所述比特分组n的取值范围优选为3~10。由于m/n的余数为n1,则所述m位待校验数据序列的最后一组为n1比特数据段。例如,对于19比特的数据序列,如果按照4比特为一组进行分组,则所述19位的数据序列的最后一组为n1=3比特。
步骤302:利用直接计算法生成n、n1比特的CRC校验码表项。所述n、n1比特的CRC检验码表项包括所有n、n1位二进制数据序列及与其对应的CRC检验码,所述CRC校验码是根据特定CRC生成多项式采用直接生成法计算得到。
步骤303:将所述m位数据序列末尾添加r个零,得到m+r比特的数据序列。将该m+r比特的数据序列写入m+r位的寄存器中。
步骤304:判断g(x)位数是否小于n?如果否,执行步骤305;否则,执行步骤307。
步骤305:对首个n比特数据段进行n比特CRC校验码表项的查询。
从g(x)高位依次取n比特数据,在所述n比特CRC校验码表项中查找与该数据对应的CRC校验码,所述该CRC校验码数值位长为r比特。
步骤306:将该查找结果与进行模二加,并将查找到的所述r比特CRC校验码与所述数据序列g(x)的第二数据段首位起的r位数据进行异或运算,将所得结果取代所述r位数据;并将该数据序列左移n位。返回至步骤304。
步骤307:根据所述g(x)中的n1位数据查询所述n1比特CRC校验码表项。得到与所述n1位数据段对应的CRC校验码。
请参阅图4,为本发明所述CRC校验码生成方法的实施例三的流程示意图,当所述m位待处理的二进制数据序列g(x)能被n整除时,此时设商为a。则还可按照下述实施例三的方法进行处理,本发明对数据序列进行CRC校验的方法实施例三为:
设待处理的数据段为m位二进制序列g(x),CRC校验生成多项式为r阶的G(x)。
步骤401:将m位待校验数据序列g(x)按照n比特一组从首位开始分成若干个数据段,所述比特分组n的取值范围优选为3~10。
步骤402:利用直接计算法生成n比特的CRC校验码表项。
所述n比特的CRC检验码表项包括所有n位二进制数据序列及与其对应的检验码,所述校验码是根据特定CRC生成多项式采用直接生成法计算得到。
步骤403:将所述m位数据序列末尾添加r个零,得到m+r比特的数据序列。将该m+r比特的数据序列写入m+r位的寄存器中。
步骤404:判断计数器是否等于a-1?如果否,执行步骤405;否则,执行步骤407。
步骤405:对首个n比特数据段进行n比特CRC校验码表项的查询。
从g(x)高位依次取n比特数据,在所述n比特CRC校验码表项中查找与该数据对应的CRC校验码,所述该CRC校验码数值位长为r比特。
步骤406:将该查找结果与进行模二加,并将查找到的所述r比特CRC校验码与所述数据序列g(x)的第二数据段首位起的r位数据进行异或运算,将所得结果取代所述r位数据;并将该数据序列左移n位。所述计数器加1。返回至步骤404。
步骤407:根据所述g(x)中的n位数据查询n比特CRC校验码表项。所得结果即所述n比特数据段对应的CRC校验码。
请参阅图5,为本发明所述CRC校验码的生成方法实施例四的流程示意图。当所述m位待处理的二进制数据序列g(x)不能被n整除时,此时设商为a,所得余数为n1。则还可按照下述实施例四的方法进行处理,本发明对数据序列进行CRC校验的方法实施例四为:
设待处理的数据段为m位二进制序列g(x),CRC校验生成多项式为r阶的G(x)。
步骤501:将m位待校验数据序列g(x)按照n比特为一组从首位开始分成若干个数据段,所述比特分组n的取值范围优选为3~10。由于m/n的余数为n1,则所述m位待校验数据序列的最后一组为n1比特数据段。设分成a组。
步骤502:利用直接计算法生成n、n1比特的CRC校验码表项。所述n、n1比特的CRC检验码表项包括所有n、n1位二进制数据序列及与其对应的检验码,所述校验码是根据特定CRC生成多项式采用直接生成法计算得到。
步骤503:将所述m位数据序列末尾添加r个零,得到m+r比特的数据序列。将该m+r比特的数据序列写入m+r位的寄存器中。
步骤504:设置计数器的初始值为0。
步骤505:判断所述计数器是否等于a?如果否,执行步骤506;否则,执行步骤508。
步骤506:对首个n比特数据段进行n比特CRC校验码表项的查询。
从g(x)高位依次取n比特数据,在所述n比特CRC校验码表项中查找与该数据对应的CRC校验码,所述该CRC校验码数值位长为r比特。
步骤507:将该查找结果与进行模二加,并将查找到的所述r比特CRC校验码与所述数据序列g(x)的第二数据段首位起的r位数据进行异或运算,将所得结果取代所述r位数据;并将该数据序列左移n位。将所述计数器值加1。返回至步骤504。
步骤508:根据所述g(x)中的n1位数据查询所述n1比特CRC校验码表项。得到与所述n1位数据段对应的CRC校验码。
图6为本发明CRC校验码生成装置结构示意图,基于上述方案,本发明提供的CRC校验码的生成装置,包括寄存器601、表项生成单元602、查表单元603、处理单元604、判断单元605。其中,
寄存器601用于将存入的数据序列顺序分段;
表项生成单元602建立与所述寄存器601中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元603;
所述查表单元603对所述寄存器601中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元604;
所述处理单元604将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器601中所述r位数据;
所述寄存器601将所述数据序列的首个数据段溢出;
判断单元605对所述寄存器601中剩下的数据段总数进行判断,直到所述寄存器601中的数据序列只剩最后一段时,所述查表单元603将所述寄存器601中该段数据进行相应的循环冗余校验码表项的查找,得到循环冗余校验码。
当数据序列不能够被等分时,所述寄存器601将存入的数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段。此时,所述查表单元603分为:第一查表单元、第二查表单元。
所述表项生成单元建立与所述寄存器中n、n1比特数据段同比特的n、n1比特循环冗余校验码表项后,并将所述n、n1比特循环冗余校验码表项分别存入所述第一查表单元、第二查表单元。
其中,当数据序列不止一段时,选择所述第一查表单元对所述寄存器中首个数据段进行n比特的CRC校验码表项查找;当数据序列只剩最后一个数据段时,则选择第二查表单元对所述最后一段数据进行查表,查表结果即为最终的CRC校验码。
本发明提供的含循环冗余校验码的数据序列的发送方法,包括:
A、将数据序列顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码;
F、将所述循环冗余校验码顺序添加在所述数据序列之后,随该数据序列一同发送。
基于上述方案,本发明提供的含循环冗余校验码的数据序列的发送装置,如图6示,包括:寄存器601、表项生成单元602、查表单元603、处理单元604、判断单元605、发送单元701。其中,
寄存器601用于将存入的数据序列顺序分段;
表项生成单元602建立与所述寄存器601中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元603;
所述查表单元603对所述寄存器601中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元604;
所述处理单元604将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器601中所述r位数据;
所述寄存器601将所述数据序列的首个数据段溢出;
判断单元605对所述寄存器601中剩下的数据段总数进行判断,直到所述寄存器601中的数据序列只剩最后一段时,所述查表单元603将所述寄存器601中该段数据进行相应的循环冗余校验码表项的查找,并将得到的循环冗余校验码发送至发送单元701;
所述发送单元701将所述循环冗余校验码顺序添加在所述数据序列之后,随该数据序列一同发送。
本发明提供的对接收数据序列进行循环冗余校验的方法,包括:
A、将数据序列顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码;
F、将所述得到的循环冗余校验码与原循环冗余校验码进行模二加,根据其结果对该数据序列进行校验。
其中,所述根据其结果对该数据序列进行校验包括:
当所得结果为0时,则认为所述待处理的数据序列无误;
当所得结果为1时,则认为所述待处理数据序列有误。
基于上述方案,本发明提供的对接收到的含有CRC校验码的数据序列进行CRC校验的装置,如图8示,包括:寄存器601、表项生成单元602、查表单元603、处理单元604、判断单元605、接收单元801、校验单元802。其中,
寄存器601用于将从接受单元801接收来的数据序列顺序分段;
表项生成单元602建立与所述寄存器601中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元603;
所述查表单元603对所述寄存器601中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元604;
所述处理单元604将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器601中所述r位数据;
所述寄存器601将所述数据序列的首个数据段溢出;
判断单元605对所述寄存器601中剩下的数据段总数进行判断,直到所述寄存器601中的数据序列只剩最后一段时,所述查表单元603将所述寄存器601中该段数据进行相应的循环冗余校验码表项的查找,并将得到的循环冗余校验码发送至检验单元802;
所述校验单元802将所述得到的循环冗余校验码与原循环冗余校验码进行模二加,根据其结果对该数据序列进行校验,并将校验结果输出。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种循环冗余校验码的生成方法,其特征在于,包括:
A、将数据序列按照高低位顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码;
所述步骤A具体为:
当数据序列能够被等分时,将数据序列按照高低位顺序等分成n比特数据段,建立n比特的循环冗余校验码表项;或
当数据序列不能被等分时,按照高低位顺序将数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段,建立n、n1比特的循环冗余校验码表项;
在步骤E中所述将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码具体为:
当数据序列能够被等分时,将所述n比特数据进行n比特循环冗余校验码表项的查找得到循环冗余校验码;或
当数据序列不能被等分时,将所述n1比特数据进行n1比特循环冗余校验码表项的查找得到循环冗余校验码。
2.如权利要求1的循环冗余校验码的生成方法,其特征在于,所述直到所述数据序列只剩最后一段时具体为:直到所述数据序列长度小于等于n比特时。
3.如权利要求1所述的循环冗余校验码的生成方法,其特征在于,在所述步骤A与所述步骤B之间还包括:设置计数器的初始值为0。
4.如权利要求3所述的循环冗余校验码的生成方法,其特征在于,在所述步骤D和步骤E之间还包括:将计数器值加1。
5.如权利要求4所述的循环冗余校验码的生成方法,其特征在于,所述直到所述数据序列只剩最后一段时具体为:直到当所述计数器值等于所述数据序列所分的数据段的总数减1时。
6.一种循环冗余校验码的生成装置,其特征在于,包括:
寄存器用于当数据序列能够被等分时,将数据序列按照高低位顺序等分成n比特数据段,或
当数据序列不能被等分时,按照高低位顺序将数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段;
表项生成单元建立与所述寄存器中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元;
所述查表单元对所述寄存器中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元;
所述处理单元将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器中所述r位数据;
所述寄存器将所述数据序列的首个数据段溢出;
判断单元对所述寄存器中剩下的数据段总数进行判断,直到所述寄存器中的数据序列只剩最后一段时,所述查表单元将所述寄存器中该段数据进行相应的循环冗余校验码表项的查找,得到循环冗余校验码;
当数据序列不能够被等分时:
所述查表单元分为第一查表单元、第二查表单元;
所述表项生成单元建立与所述寄存器中n、n1比特数据段同比特的n、n1比特循环冗余校验码表项后,并将所述n、n1比特循环冗余校验码表项分别存入所述第一查表单元、第二查表单元;
其中,当数据序列不止一段时,选择所述第一查表单元对所述寄存器中首个数据段进行n比特的CRC校验码表项查找;当数据序列只剩最后一个数据段时,则选择第二查表单元对所述最后一段数据进行查表,查表结果即为最终的CRC校验码。
7.一种含循环冗余校验码的数据序列的发送方法,其特征在于,包括:
A、将数据序列按照高低位顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码;
F、将所述循环冗余校验码顺序添加在所述数据序列之后,随该数据序列一同发送;
所述步骤A具体为:
当数据序列能够被等分时,将数据序列顺序等分成n比特数据段,建立n比特的循环冗余校验码表项;或
当数据序列不能被等分时,将数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段,建立n、n1比特的循环冗余校验码表项;在步骤E中所述将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码具体为:
当数据序列能够被等分时,将所述n比特数据进行n比特循环冗余校验码表项的查找得到循环冗余校验码;或
当数据序列不能被等分时,将所述n1比特数据进行n1比特循环冗余校验码表项的查找得到循环冗余校验码。
8.一种含循环冗余校验码的数据序列的发送装置,其特征在于,包括:
寄存器用于当数据序列能够被等分时,将数据序列按照高低位顺序等分成n比特数据段,或
当数据序列不能被等分时,按照高低位顺序将数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段;
表项生成单元生成与所述寄存器中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元;
所述查表单元对所述寄存器中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元;
所述处理单元将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器中所述r位数据;
所述寄存器将所述数据序列的首个数据段溢出;
判断单元对所述寄存器中剩下的数据段总数进行判断,直到所述寄存器中的数据序列只剩最后一段时,所述查表单元将所述寄存器中该段数据进行相应的循环冗余校验码表项的查找,并将得到的循环冗余校验码发送至发送单元;
当数据序列不能够被等分时:
所述查表单元分为第一查表单元、第二查表单元;
所述表项生成单元建立与所述寄存器中n、n1比特数据段同比特的n、n1比特循环冗余校验码表项后,并将所述n、n1比特循环冗余校验码表项分别存入所述第一查表单元、第二查表单元;
其中,当数据序列不止一段时,选择所述第一查表单元对所述寄存器中首个数据段进行n比特的CRC校验码表项查找;当数据序列只剩最后一个数据段时,则选择第二查表单元对所述最后一段数据进行查表,查表结果即为最终的CRC校验码;
所述发送单元将所述循环冗余校验码顺序添加在所述数据序列之后,随该数据序列一同发送。
9.一种对接收数据序列进行循环冗余校验的方法,其特征在于,包括:
A、将数据序列按照高低位顺序分段,建立与所分数据段同比特的循环冗余校验码表项;
B、对首个数据段进行同比特的循环冗余校验码表项的查找,得到r位查找结果;
C、将该查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果取代所述r位数据;
D、将所述数据序列的首个数据段丢弃;
E、重复步骤B至D;直到所述数据序列只剩最后一段时,将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码;
F、将所述得到的循环冗余校验码与原循环冗余校验码进行模二加,根据其结果对该数据序列进行校验;
所述步骤A具体为:
当数据序列能够被等分时,将数据序列顺序等分成n比特数据段,建立n比特的循环冗余校验码表项;或
当数据序列不能被等分时,将数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段,建立n、n1比特的循环冗余校验码表项;在步骤E中所述将该段数据进行相应的循环冗余校验码表项的查找得到循环冗余校验码具体为:
当数据序列能够被等分时,将所述n比特数据进行n比特循环冗余校验码表项的查找得到循环冗余校验码;或
当数据序列不能被等分时,将所述n1比特数据进行n1比特循环冗余校验码表项的查找得到循环冗余校验码。
10.如权利要求9所述的循环冗余校验的方法,其特征在于,所述根据其结果对该数据序列进行校验包括:
当所得结果为0时,则认为所述待处理的数据序列无误;
当所得结果不为0时,则认为所述待处理数据序列有误。
11.一种对接收到的含有循环冗余校验码的数据序列进行循环冗余校验的装置,其特征在于,包括:
寄存器用于当数据序列能够被等分时,将数据序列按照高低位顺序等分成n比特数据段,或
当数据序列不能被等分时,按照高低位顺序将数据序列按n比特为一段顺序分成若干段,将余出的n1比特数据作为最后一段;
表项生成单元生成与所述寄存器中数据段同比特的循环冗余校验码表项,并将该表项存入查表单元;
所述查表单元对所述寄存器中首个数据段进行同比特的循环冗余校验码表项的查找,并将得到相应的r位查找结果发送至处理单元;
所述处理单元将所述查找结果与第二数据段首位起的r位数据进行模二加,并将所得结果按对应位取代寄存器中所述r位数据;
所述寄存器将所述数据序列的首个数据段溢出;
判断单元对所述寄存器中剩下的数据段总数进行判断,直到所述寄存器中的数据序列只剩最后一段时,所述查表单元将所述寄存器中该段数据进行相应的循环冗余校验码表项的查找,并将得到的循环冗余校验码发送至校验单元;所述校验单元将所述得到的循环冗余校验码与原循环冗余校验码进行模二加,根据其结果对该数据序列进行校验,并将校验结果输出;
当数据序列不能够被等分时:
所述查表单元分为第一查表单元、第二查表单元;
所述表项生成单元建立与所述寄存器中n、n1比特数据段同比特的n、n1比特循环冗余校验码表项后,并将所述n、n1比特循环冗余校验码表项分别存入所述第一查表单元、第二查表单元;
其中,当数据序列不止一段时,选择所述第一查表单元对所述寄存器中首个数据段进行n比特的CRC校验码表项查找;当数据序列只剩最后一个数据段时,则选择第二查表单元对所述最后一段数据进行查表,查表结果即为最终的CRC校验码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101654183A CN101207467B (zh) | 2006-12-19 | 2006-12-19 | 循环冗余校验码的生成和数据序列发送、校验方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101654183A CN101207467B (zh) | 2006-12-19 | 2006-12-19 | 循环冗余校验码的生成和数据序列发送、校验方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101207467A CN101207467A (zh) | 2008-06-25 |
CN101207467B true CN101207467B (zh) | 2011-05-18 |
Family
ID=39567379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101654183A Active CN101207467B (zh) | 2006-12-19 | 2006-12-19 | 循环冗余校验码的生成和数据序列发送、校验方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101207467B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102612173B (zh) * | 2011-01-21 | 2016-08-10 | 芯讯通无线科技(上海)有限公司 | 多模手机及其通讯模块之间的通讯方法 |
CN103516478B (zh) * | 2012-06-29 | 2018-03-13 | 华为技术有限公司 | 信息发送方法和设备 |
WO2019029566A1 (zh) | 2017-08-08 | 2019-02-14 | 维沃移动通信有限公司 | 循环冗余校验的方法和设备 |
CN109391349B (zh) * | 2017-08-08 | 2020-04-07 | 维沃移动通信有限公司 | 循环冗余校验的方法和设备 |
CN109474379B (zh) * | 2017-09-08 | 2022-05-06 | 华为技术有限公司 | 编码方法及装置 |
CN113608917B (zh) * | 2021-06-23 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种计算任意数据的crc值方法及装置 |
CN115001623B (zh) * | 2022-05-07 | 2024-04-19 | 通号城市轨道交通技术有限公司 | 车载电子地图数据的校验方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1431594A (zh) * | 2003-01-27 | 2003-07-23 | 西安电子科技大学 | 一种多通道多位并行计算crc码的方法 |
CN1633030A (zh) * | 2003-12-22 | 2005-06-29 | 普天信息技术研究院 | 一种循环冗余校验的快速计算方法 |
-
2006
- 2006-12-19 CN CN2006101654183A patent/CN101207467B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1431594A (zh) * | 2003-01-27 | 2003-07-23 | 西安电子科技大学 | 一种多通道多位并行计算crc码的方法 |
CN1633030A (zh) * | 2003-12-22 | 2005-06-29 | 普天信息技术研究院 | 一种循环冗余校验的快速计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101207467A (zh) | 2008-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101207467B (zh) | 循环冗余校验码的生成和数据序列发送、校验方法及装置 | |
CN107239362B (zh) | 一种并行crc校验码的计算方法及系统 | |
US10866857B2 (en) | Encoding and decoding of permuted cyclic codes | |
CN101636914A (zh) | 用于编码和解码数据的方法和装置 | |
WO2020237377A1 (en) | Methods and systems for bit error determination and correction | |
CN1146116C (zh) | 截短法尔码的差错捕获译码方法和装置 | |
CN113110954A (zh) | 一种crc码并行计算方法、装置及其应用 | |
JP4777971B2 (ja) | インタリーバメモリ及びデインタリーバメモリのためのアドレス生成装置 | |
EP1474873A2 (en) | Obtaining cyclic redundancy code | |
CN101507120A (zh) | 并行剩余运算器和并行剩余运算方法 | |
US20090094507A1 (en) | Code error detector and error detecting code generator | |
EP0608848B1 (en) | Cyclic coding and cyclic redundancy code check processor | |
CN116048868A (zh) | 代码生成方法、装置、设备和存储介质 | |
Babaie et al. | Double bits error correction using CRC method | |
KR20140031980A (ko) | 오류 정정 복호 장치 | |
CN1439197A (zh) | 解码装置以及解码方法 | |
CN101803204B (zh) | 纠正位串错误的方法 | |
El-Medany | FPGA implementation of CRC with error correction | |
JP2008160663A (ja) | 情報ビット列の除算方法及びその装置 | |
CN111431541B (zh) | 一种获得crc码的方法及装置 | |
US7225391B1 (en) | Method and apparatus for parallel computation of linear block codes | |
CN101151806A (zh) | 利用映射函数周期性的存储器有效的交织/去交织 | |
US20180309463A1 (en) | Hybrid type iterative decoding method and apparatus | |
JP3579039B2 (ja) | 巡回符号を用いた誤り訂正回路 | |
JPH0998093A (ja) | 誤り訂正復号方法 |
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 |