CN102761394A - 数据的处理方法及装置 - Google Patents
数据的处理方法及装置 Download PDFInfo
- Publication number
- CN102761394A CN102761394A CN2012102317483A CN201210231748A CN102761394A CN 102761394 A CN102761394 A CN 102761394A CN 2012102317483 A CN2012102317483 A CN 2012102317483A CN 201210231748 A CN201210231748 A CN 201210231748A CN 102761394 A CN102761394 A CN 102761394A
- Authority
- CN
- China
- Prior art keywords
- data
- crc
- coding
- encoded
- initial value
- 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.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种数据的处理方法及装置,其中,该方法包括:将待处理的数据进行CRC编码,其中,CRC编码的初值表的条目的数量与并行处理位宽呈线性增长关系;将经过CRC编码得到的数据加入待处理数据的尾部,得到处理后的数据。通过运用本发明,解决了由于查找表的大小与并行处理位宽呈指数增长,硬件资源有限时建表出现瓶颈,又由于重新建表周期过长,导致在生成多项式系数改变时,无法进行CRC编码的问题,进而缩短了建表时间,减少了系统资源的占用率,提升了系统资源的利用率。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种数据的处理方法及装置。
背景技术
在数据通信系统中,由于各种干扰的存在,会造成传输误码,使接收方接收到的数据与发送方数据不一致。为了提高数据传输的可靠性,需要检测传输过程中是否存在误码,通常采用差错控制编码技术,循环冗余校验(Cyclic Redundancy Check,简称为CRC)编码由于其很强的差错检验能力被广泛采用,在不同的应用场景下,需要采用不同的生成多项式来实现CRC编码。
串行的CRC硬件实现采用线性反馈移位寄存器(Linear Feedback Shifting Register,简称为LFSR),该实现方法每个时钟周期只能处理单比特数据。对于高速率应用场景下的并行数据而言,LFSR无法满足速率要求,通常采用并行的CRC算法来提高编码速度。
查找表(Look Up Table,简称为LUT)算法是并行算法中的一种,该方法需要大量存储空间建表,以便存储CRC编码结果,输入数据只需要查表操作就可得到其对应的CRC编码。该方法的缺点是表的大小与并行处理位宽成指数关系,随着计算位宽的增长,有限的硬件资源成为实现该方法的瓶颈。如果改变生成多项式的系数,需要重新建表,由于建表周期太长,软硬件实现难度都很大,无法实现CRC编码。
另外一种并行实现CRC编码的方法是通过LFSR当前寄存器状态与前一周期寄存器状态之间的关系递推出CRC编码与当前并行输入数据的每个信息位、CRC初值之间的逻辑运算关系,采用异或运算实现。如果改变生成多项式的系数,需要重新确定CRC编码与当前并行输入数据的每个信息位、CRC初值之间的逻辑运算关系。目前难以找到有效算法来实现软硬件自动确定CRC编码与当前并行输入数据的每个信息位、CRC初值之间的逻辑运算关系。
进一步的,在当前的数据通信系统中,较大的数据帧通常分成多拍来传输,除末拍之外的其他节拍数据长度均是固定长度,但是末拍数据长度往往不固定,这种情况的处理难度较大,成为硬件电路并行处理CRC编码速率提升的瓶颈。
发明内容
本发明提供了一种数据的处理方法及装置,以至少解决相关技术中,由于查找表的大小与并行处理位宽呈指数增长,硬件资源有限使建表出现瓶颈,又由于重新建表周期过长,导致在生成多项式系数改变时,无法进行CRC编码的问题。
根据本发明的一个方面,提供了一种数据的处理方法,包括:将待处理的数据进行循环冗余校验CRC编码,其中,所述CRC编码的初值表的条目的数量与并行处理位宽的增大呈线性增长关系;将经过所述CRC编码得到的数据加入所述待处理数据的尾部,得到处理后的数据。
优选地,所述CRC编码生成初值表的条目的数量与处理位宽的增大呈线性增长关系包括:根据生成多项式的系数和并行处理的位宽生成所述初值表。
优选地,将待处理的数据进行CRC编码包括:将所述待处理的数据从高位至低位划分为一个或多个预设长度的数据段;分别对所述一个或多个预设长度的数据段进行所述CRC编码。
优选地,对每个所述预设长度的数据段进行所述CRC编码包括:将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到待编码数据;将所述待编码数据按照所述初值表进行所述CRC编码。
优选地,将所述待编码数据按照所述初值表进行所述CRC编码包括:将所述待编码数据的位与所述初值表的条目进行对应;将所述待编码数据中数据值为1的数据位所对应的初值表条目进行异或运算;将进行所述异或运算得到的CRC编码值更新至所述CRC编码寄存器中。
优选地,如果所述当前数据段为末段数据,对所述末段数据进行所述CRC编码包括:判断所述末段数据的长度是否小于所述CRC编码寄存器的编码长度;如果是,则将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到与末段数据等长的待编码数据;将所述待编码数据高位补零至所述预设长度,并按照所述初值表进行所述CRC编码得到第一CRC编码值;将所述CRC编码寄存器中的CRC编码值左移与所述末段数据等长度的数据位且低位补零;将移位补零后的CRC编码值与所述第一CRC编码值进行异或运算,得到最终编码结果。
优选地,如果所述当前数据段为末段数据,对所述末段数据进行所述CRC编码包括:判断所述末段数据的长度是否小于所述CRC编码寄存器的编码长度;如果否,则将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到与末段数据等长的待编码数据;将所述待编码数据高位补零至所述预设长度,并按照所述初值表进行所述CRC编码得到最终编码结果。
优选地,得到处理后的数据之后,还包括:将所述处理后的数据发送至数据接收方。
优选地,将所述处理后的数据发送至数据接收方之后,还包括:所述数据接收方根据所述CRC编码对所述处理后的数据进行有效性校验。
根据本发明的另一个方面,提供了一种数据的处理装置,包括:CRC编码模块,用于将待处理的数据进行循环冗余校验CRC编码,其中,所述CRC编码的初值表的条目的数量与并行处理位宽呈线性增长关系;添加模块,用于将经过所述CRC编码得到的数据加入所述待处理数据的尾部,得到处理后的数据。
优选地,所述CRC编码模块包括:生成单元,用于根据所述待发送的数据生成多项式的系数和并行处理的位宽生成所述初值表。
优选地,所述CRC编码模块还包括:划分单元,用于将所述待处理的数据从高位至低位划分为一个或多个预设长度的数据段;CRC编码单元,用于分别对所述一个或多个预设长度的数据段进行所述CRC编码。
优选地,所述CRC编码模块通过可编程逻辑器件实现。
本发明采用了如下方法:在对待处理的数据进行CRC编码时,设置CRC编码的初值表随着并行处理位宽的增大呈线性增长,在生成多项式系数改变时,更加容易建表,也可以解决查找表算法中表的大小随处理位宽的增大呈指数增长带来的资源瓶颈的问题。通过运用本发明,解决了由于查找表的大小与并行处理位宽呈指数增长,硬件资源有限时建表出现瓶颈,又由于重新建表周期过长,导致在生成多项式系数改变时,无法进行CRC编码的问题,进而缩短了建表时间,减少了系统资源的占用率,提升了系统资源的利用率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据的处理方法的流程图;
图2是根据本发明优选实施例一的数据的处理方法的流程图;
图3是根据本发明优选实施例二的CRC校验方法的流程图;
图4是根据本发明优选实施例二的初值表生成示意图;
图5是根据本发明优选实施例二的全数据CRC编码示意图;
图6是根据本发明优选实施例二的末段数据CRC编码示意图一;
图7是根据本发明优选实施例二的末段数据CRC编码示意图二;
图8是根据本发明优选实施例二的生成初值表的LFSR示意图;
图9是根据本发明实施例的数据的发送装置的结构框图一;
图10是根据本发明实施例的数据的发送装置的结构框图二。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
基于相关技术中,由于查找表的大小与并行处理位宽呈指数增长,硬件资源有限使建表出现瓶颈,又由于重新建表周期过长,导致在生成多项式系数改变时,无法进行CRC编码的问题,本发明实施例提供了一种数据的处理方法,该方法的流程如图1所示,包括步骤S102至步骤S104:
步骤S102,将待处理的数据进行CRC编码,其中,CRC编码的初值表的条目的数量与并行处理位宽呈线性增长关系;
步骤S104,将经过CRC编码得到的数据加入待处理数据的尾部,得到处理后的数据。
本实施例采用了如下方法:在对待处理的数据进行CRC编码时,设置CRC编码的初值表,初值表条目随并行处理位宽的增大呈线性增长可以解决查找表算法中查找表随并行处理位宽的增大呈指数增长带来的资源瓶颈的问题。通过运用本实施例,解决了由于查找表的大小与并行处理位宽呈指数增长,硬件资源有限时建表出现瓶颈,又由于重新建表周期过长,导致在生成多项式系数改变时,无法进行CRC编码的问题,进而缩短了建表时间,减少了系统资源的占用率,提升了系统资源的利用率。
在实施过程中,可以根据待处理数据生成多项式的系数和并行处理的位宽(也即划分数据段的预设长度)生成初值表,在这种情况下,CRC编码生成初值表的条目就可以随着并行处理的数据位宽的增大呈线性增长。依据上述方法建成初值表之后,只要不修改生成多项式,就不会重新建表。
在对待处理的数据进行CRC编码的过程中,可以将待处理的数据从高位至低位划分为一个或多个预设长度的数据段,例如,将35bit的数据分成预定长度为8bit的数据段;然后从高位段至低位段依次对分出的一个或多个预设长度的数据段进行CRC编码。
在对每个预设长度的数据段进行CRC编码时,可以将当前数据段的高位数据与CRC编码寄存器中存储的数据的高位对齐,并将对高位对齐后的数据按位做异或运算以得到待编码数据,例如,对8bit的数据段与CRC编码寄存器中存储的数据高位对齐,并将对齐的数据的每位进行异或,并将异或后的数据作为待编码数据。如果CRC编码寄存器中的数据为5bit,则8bit的数据段剩下的无法对齐的3bit就直接传送至待编码数据的尾部,和异或后的数据组成一个完整的待编码数据。在对第一个数据段进行编码之前,可以将CRC编码寄存器中原有的数据清除,即对CRC编码寄存器清零。
在得到了待编码数据后,将待编码数据按照初值表进行CRC编码。将待编码数据按照初值表进行CRC编码可以包括如下处理:
将待编码数据位与初值表的条目进行对应;将待编码数据中数据值为1的数据位所对应的初值表条目选择出来,将这些条目分别进行异或运算;将进行异或运算得到的CRC编码值更新至CRC编码寄存器,作为下一个数据段进行异或操作的初始CRC编码值。
在上述实施过程中,可以按照待发送数据的分段顺序进行编码,例如,35bit的数据分成预定长度为8bit的数据段,则可以分成4个8bit的数据段和1个3bit的数据段,此时,最后一个数据段确定为末段数据。
如果当前数据段为末段数据,对末段数据进行CRC编码之前,还需要判断末段数据的长度是否小于CRC编码寄存器的编码长度。下面针对末段数据的不同长度进行说明,通常情况下,末段数据有三种情况:
(1)末段数据长度等于预设长度,则将末段数据与CRC编码寄存器中的数据做高位对齐的异或运算得到与末段数据等长的待编码数据,基于初值表进行编码,得到最终编码结果;
(2)末段数据长度大于或等于CRC编码长度,但小于预设长度,则在将末段数据与CRC编码寄存器中的数据做高位对齐的异或运算得到与末段数据等长的待编码数据之后,将待编码数据高位补零至等于预设长度,然后基于初值表进行编码,得到最终编码结果;
(3)末段数据长度小于CRC编码长度,则在将末段数据与CRC编码寄存器中的数据做高位对齐的异或运算得到与末段数据等长的待编码数据之后,将待编码数据高位补零至等于预设长度,然后基于初值表进行编码;另外将CRC编码寄存器中的CRC编码值左移与末段数据等长度的数据位且低位补零,将移位补零后的CRC编码值与之前得到的基于初值表得到的编码值进行异或运算,得到最终编码。
通过运用上述实施例,解决了末拍数据长度往往不固定导致的处理难度较大的问题,提升了系统的性能。
在实施过程中,上述CRC编码过程可以通过软件实现,也可以通过硬件可编程逻辑器件实现,也可以通过集成电路实现等。
优选实施例一
本发明的主要目的是提供一种数据的处理的方法,该方法可有效提高CRC编码的计算效率,实现CRC生成多项式系数可配,占用硬件存储资源少,在保证性能的前提下,可以推广到较大处理位宽。本优选实施例的流程如图2所示,包括步骤S202至步骤S216。
步骤S202,根据CRC生成多项式的系数和并行处理的数据位宽建立初值表。
步骤S204,将待处理数据从高位到低位划分成多段数据,从高位段到低位段依次进行CRC编码。
步骤S206,将CRC编码寄存器清零。
步骤S208,将当前数据段与CRC编码寄存器中的数据做高位对齐的按位异或运算得到待编码数据,然后基于初值表对其进行CRC编码,并将编码结果缓存在CRC编码寄存器中。对后续数据段做重复步骤S208的操作,直到末段数据。
步骤S210,判断末段数据的长度是否小于CRC编码长度。如果是,则执行步骤S212,否则,执行步骤214。
步骤S212,将CRC编码寄存器中的数据左移与末段数据等长的数据位,低位补零,缓存移位之后的CRC编码,同时将当前段数据与CRC编码寄存器中的数据做高位对齐的按位异或运算得到与末段数据等长的待编码数据,然后基于初值表对其进行CRC编码,将编码结果与之前移位之后的CRC编码按位异或,即得到最终的CRC编码结果。
步骤S214,将当前数据段与CRC编码寄存器中的数据做高位对齐的按位异或运算得到待编码数据,然后基于初值表对其进行CRC编码,即得到最终的CRC编码结果。
步骤S216,将经过CRC编码得到的数据加入待处理数据的尾部,得到处理后的数据。
本优选实施例实现了可编程循环冗余校验的方法,基于预先生成的初值表实现并行数据的CRC编码,所占用的硬件资源大大减少,有效提高了CRC编码效率,初值表便于维护,不需要软件的参与就可实现生成多项式系数可配,在保证性能的前提下可以推广到较大处理位宽。
优选实施例二
为进一步阐述本发明实施方式的目的、技术方案及其优点,下面结合附图及实施例,对本优选实施例进行详细说明。图3为本发明实施例的可编程CRC校验的方法流程图,该包括步骤S302至步骤S310。
步骤S302,根据生成多项式的系数和并行处理的数据位宽生成初值表,并将其存储在寄存器中。
图4是本发明实施例的初值表生成示意图,图中G(x)表示生成多项式,阶数为m+1,对应的CRC编码长度为m,RG(x)(xm)表示xm对G(x)取余。生成表由一些固定的输入序列进行CRC编码得到,初值表的宽度等于CRC编码位宽,而初值表的深度等于并行处理的数据位宽,即划分数据段的预设长度。
更进一步地,生成初值表的固定输入序列有一个共同的特点,即最高位为1,其余位均为0。为了简化电路,采用LFSR算法来完成初值表编码。假设并行处理数据位宽为l,那么输入一个最高位为1,其余位为0且总长度为l的序列到LFSR中,按照从高位到低位的顺序,每个时钟周期输入1比特信息位,并将每个时钟周期的编码结果保存在初值表的相应位置,这样经过l个时钟周期,初值表生成完毕。变换生成多项式时,重新生成初值表,从而实现可编程。
步骤S304,将CRC编码寄存器清零。在开始进行CRC编码之前,需要先将CRC编码寄存器清零。更进一步地,当变换生成多项式或者对新数据帧进行编码时,需要将CRC编码寄存器清零。
步骤S306,对于较长的数据帧,通常将其划分成多段数据,从高位段到低位段依次进行CRC编码。
每个时钟节拍输入一个数据段,直到末段数据输入之后完成整个数据帧的编码。对于非末段数据,进行全数据CRC编码,并缓存编码结果在CRC编码寄存器中,对于末段数据,进行末段数据CRC编码,得到最终CRC编码结果。
步骤S308,对输入的数据段进行CRC编码。
图5给出了全数据编码示意图。首先,将当前输入的长度为l bits的数据段与CRC编码寄存器中的数据进行高位对齐的按位异或运算,得到长度为l bits的待编码数据。在该步骤实施的过程中,如果l bits的数据段的长度大于CRC编码长度,则将大于编码长度的数据不做异或运算,直接传入至待编码数据的低位。
然后,待编码数据中从低位到高位分别用t0~tl-1表示,这些数据位与初值表的每个条目一一对应。将待编码数据中为1的数据位对应的生成表条目选择出来,相互之间进行异或运算,即得到中间CRC编码结果,并将该结果缓存在CRC编码寄存器中,作为下一个数据段的CRC编码值使用。
步骤S310,对输入的末段数据进行CRC编码,得到整个数据帧的CRC编码结果。
在实施过程中,对于末段数据的CRC编码又分三种情况:(1)末段数据的长度等于预设长度;(2)末段数据的长度小于预设长度但大于或者等于CRC编码长度;(3)末段数据的长度小于CRC编码长度。图5、图6和图7给出了这三种情况的编码示意图。
末段数据长度等于预设长度,如图5所示。首先,将输入的末段数据与CRC编码寄存器中的数据按高位对齐进行按位异或运算得到与输入数据等长的待编码数据;然后,将待编码数据中的数据位与初值表条目一一对应起来,将待编码数据中为1的数据位对应的生成表条目选择出来,相互之间进行异或运算,即得到整个数据帧的CRC编码结果。
末段数据的长度小于预设长度但大于或者等于CRC编码长度时,如图6所示。首先,将输入的末段数据与CRC编码寄存器中的数据按高位对齐进行按位异或运算得到与输入数据等长的待编码数据;然后,将待编码数据中的数据位与初值表条目按低位对齐的方式对应起来,将待编码数据中为1的数据位对应的生成表条目选择出来,相互之间进行异或运算,即得到整个数据帧的CRC编码结果。
末段数据的长度小于CRC编码长度时,如图7所示。首先,将输入的末段数据与CRC编码寄存器中的数据按高位对齐进行按位异或运算得到与输入数据等长的待编码数据;然后,将待编码数据中的数据位与初值表条目按低位对齐的方式对应起来,将待编码数据中为1的数据位对应的生成表条目选择出来,相互之间进行异或运算,得到中间CRC编码结果;再将CRC编码寄存器中的数据左移与末段数据等长的位数,低位补零,进一步地,将得到的中间CRC编码结果与移位之后的数据进行按位异或运算即得到整个数据帧的CRC编码结果。
下面结合具体实施例对本优选实施例进行说明。
生成多项式为G(x)=x4+x3+x2+1,则其系数为11101,CRC编码长度为4。令并行处理数据位宽为8,数据帧长度为18,从高位到低位按8位长度分段,共分为3段,第一段和第二段长度均为8,末段长度为2。在确定上述数据后做如下处理:
(1)对于该生成多项式来说,用于生成初值表的电路如图8所示。先把各寄存器清零。按从高位到低位的次序分别输入二进制序列10000000,每个周期输入1位,每输入1位,存储当前的各寄存器数值,作为初值表的一个条目,经过8个时钟周期,生成初值表结束。
(2)将4位CRC编码寄存器清零。
(3)输入第一段数据,进行全数据CRC编码。将第一段数据与CRC编码寄存器中的数据做高位对齐的按位异或运算,得到8位待编码数据。将待编码数据中为1的位所对应的生成表条目选择出来相互进行异或运算,得到第一段数据的CRC编码结果,并将其更新至CRC编码寄存器中。
(4)输入第二段数据,进行全数据CRC编码。将第二段数据与CRC编码寄存器中的数据做高位对齐的按位异或运算,得到8位待编码数据。将待编码数据中为1的位所对应的生成表条目选择出来相互进行异或运算,得到前两段数据的CRC编码结果,并将其更新至CRC编码寄存器中。
(5)输入第三段数据,进行末段数据CRC编码。由于末段数据长度为2,取CRC编码寄存器中数据的高2位与输入数据进行按位异或运算,得到2位待编码数据,待编码数据与生成表按低位对齐方式对应,即2位待编码数据与初值表中的最低两个条目对应,将待编码数据中为1的位所对应的生成表条目选择出来相互进行异或运算,得到中间CRC编码结果。将CRC编码寄存器中的数据左移2位,低位补零,然后与之前得到的中间CRC编码结果做按位异或运算,得到整个数据帧的CRC编码结果。
本实施例可以采用流水的方式进一步提高其性能,也可以推广到任意的处理位宽。本发明不限具体实施范围,对熟悉本技术领域的技术人员来讲,在本发明的技术范围内所做的变动或替换,都在本发明的保护范围内。
本发明实施例还提供了一种数据的处理装置,该装置的结构框图可以如图9所示,包括:CRC编码模块10,用于将待处理的数据进行循环冗余校验CRC编码,其中,CRC编码的初值表的条目的数量与并行处理位宽呈线性增长关系;添加模块20,与CRC编码模块10耦合,用于将经过CRC编码得到的数据加入待处理数据的尾部,得到处理后的数据。
在一个优选实施例中,CRC编码模块10的结构示意图可以如图10所示,CRC编码模块可以包括:生成单元102,用于根据待发送的数据生成多项式的系数和并行处理的位宽(即划分数据段的预设长度)生成初值表;划分单元104,用于将待处理的数据从高位至低位划分为一个或多个预设长度的数据段;CRC编码单元106,与划分单元104耦合,用于分别对一个或多个预设长度的数据段进行CRC编码。
优选地,装置还可以用于:将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到待编码数据;将待编码数据按照初值表进行CRC编码。
在实施过程中,CRC编码模块还可以用于包括:将待编码数据的位与初值表的条目进行对应;将待编码数据中数据值为1的数据位所对应的初值表条目进行异或运算;将进行异或运算得到的CRC编码值更新至CRC编码寄存器中。
装置还可以包括:在当前数据段为末段数据的情况下,判断末段数据的长度是否小于CRC编码寄存器的编码长度的模块;
优选地,装置还用于在末段数据的长度小于CRC编码寄存器的编码长度的情况下,将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到与末段数据等长的待编码数据;将待编码数据高位补零至预设长度,并按照初值表进行CRC编码得到第一CRC编码值;将CRC编码寄存器中的CRC编码值左移与末段数据等长度的数据位且低位补零;将移位补零后的CRC编码值与第一CRC编码值进行异或运算,得到最终编码结果。
装置还用于在末段数据的长度大于或等于CRC编码寄存器的编码长度的情况下,将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到与末段数据等长的待编码数据;将待编码数据高位补零至预设长度,并按照初值表进行CRC编码得到最终编码结果。
装置还可以包括:将处理后的数据发送至数据接收方的模块。
在具体实现时,该发送装置中的CRC编码模块10可以通过集成电路实现,也可以通过外部软件实现,还可以通过可编程逻辑器件实现。通过可编程逻辑器件实现的方式是一种较优的方式,在生成多项式系数改变的情况下,无需其它操作,便可实现CRC编码。
从以上的描述中,可以看出,本发明实现了如下技术效果:
本实施例采用了如下方法:在对待发送的数据进行CRC编码时,设置CRC编码的初值表随并行处理位宽的增大呈线性增长,可以解决查找表算法中查找表随处理位宽的增大呈指数增长带来的资源瓶颈的问题,在生成多项式系数改变时,容易建表。通过运用本实施例,解决了由于查找表的大小与并行处理位宽成指数增长,硬件资源有限时建表出现瓶颈,又由于重新建表周期过长,导致在生成多项式系数改变时,无法进行CRC编码的问题,进而缩短了建表时间,减少了系统资源的占用率,提升了系统资源的利用率。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种数据的处理方法,其特征在于,包括:
将待处理的数据进行循环冗余校验CRC编码,其中,所述CRC编码的初值表的条目的数量与并行处理位宽呈线性增长关系;
将经过所述CRC编码得到的数据加入所述待处理数据的尾部,得到处理后的数据。
2.根据权利要求1所述的方法,其特征在于,所述CRC编码生成初值表的条目的数量与并行处理位宽呈线性增长关系包括:
根据所述待处理的数据生成多项式的系数和并行处理的位宽生成所述初值表。
3.根据权利要求2所述的方法,其特征在于,将待处理的数据进行CRC编码包括:
将所述待处理的数据从高位至低位划分为一个或多个预设长度的数据段;
分别对所述一个或多个预设长度的数据段进行所述CRC编码。
4.根据权利要求3所述的方法,其特征在于,对每个所述预设长度的数据段进行所述CRC编码包括:
将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到待编码数据;
将所述待编码数据按照所述初值表进行所述CRC编码。
5.根据权利要求4所述的方法,其特征在于,将所述待编码数据按照所述初值表进行所述CRC编码包括:
将所述待编码数据的位与所述初值表的条目进行对应;
将所述待编码数据中数据值为1的数据位所对应的初值表条目进行异或运算;
将进行所述异或运算得到的CRC编码值更新至所述CRC编码寄存器中。
6.根据权利要求4所述的方法,其特征在于,如果所述当前数据段为末段数据,对所述末段数据进行所述CRC编码包括:
判断所述末段数据的长度是否小于所述CRC编码寄存器的编码长度;
如果是,则将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到与末段数据等长的待编码数据;
将所述待编码数据高位补零至所述预设长度,并按照所述初值表进行所述CRC编码得到第一CRC编码值;
将所述CRC编码寄存器中的CRC编码值左移与所述末段数据等长度的数据位且低位补零;
将移位补零后的CRC编码值与所述第一CRC编码值进行异或运算,得到最终编码结果。
7.根据权利要求4所述的方法,其特征在于,如果所述当前数据段为末段数据,对所述末段数据进行所述CRC编码包括:
判断所述末段数据的长度是否小于所述CRC编码寄存器的编码长度;
如果否,则将当前数据段的高位数据与CRC编码寄存器中存储的CRC编码值的高位对齐,并将对高位对齐后的数据按位做异或运算以得到与末段数据等长的待编码数据;
将所述待编码数据高位补零至所述预设长度,并按照所述初值表进行所述CRC编码得到最终编码结果。
8.根据权利要求1所述的方法,其特征在于,得到处理后的数据之后,还包括:
将所述处理后的数据发送至数据接收方。
9.根据权利要求1所述的方法,其特征在于,将所述处理后的数据发送至数据接收方之后,还包括:
所述数据接收方根据所述CRC编码对所述处理后的数据进行有效性校验。
10.一种数据的处理装置,其特征在于,包括:
CRC编码模块,用于将待处理的数据进行循环冗余校验CRC编码,其中,所述CRC编码的初值表的条目的数量与并行处理位宽呈线性增长关系;
添加模块,用于将经过所述CRC编码得到的数据加入所述待处理数据的尾部,得到处理后的数据。
11.根据权利要求10所述的装置,其特征在于,所述CRC编码模块包括:
生成单元,用于根据所述待发送的数据生成多项式的系数和并行处理的位宽生成所述初值表。
12.根据权利要求11所述的装置,其特征在于,所述CRC编码模块还包括:
划分单元,用于将所述待处理的数据从高位至低位划分为一个或多个预设长度的数据段;
CRC编码单元,用于分别对所述一个或多个预设长度的数据段进行所述CRC编码。
13.根据权利要求10至12中任一项所述的装置,其特征在于,所述CRC编码模块通过可编程逻辑器件实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102317483A CN102761394A (zh) | 2012-07-05 | 2012-07-05 | 数据的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102317483A CN102761394A (zh) | 2012-07-05 | 2012-07-05 | 数据的处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102761394A true CN102761394A (zh) | 2012-10-31 |
Family
ID=47055722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102317483A Pending CN102761394A (zh) | 2012-07-05 | 2012-07-05 | 数据的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102761394A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664518A (zh) * | 2017-03-31 | 2018-10-16 | 深圳市中兴微电子技术有限公司 | 一种实现查表处理的方法及装置 |
CN111431541A (zh) * | 2019-01-09 | 2020-07-17 | 电信科学技术研究院有限公司 | 一种获得crc码的方法及装置 |
CN111625832A (zh) * | 2019-02-27 | 2020-09-04 | 智原科技股份有限公司 | 电子装置中起始载入程序的执行方法 |
CN112214349A (zh) * | 2020-12-09 | 2021-01-12 | 上海灵动微电子股份有限公司 | 一种数据循环冗余校验装置和方法 |
CN113110954A (zh) * | 2021-04-23 | 2021-07-13 | 合肥恒烁半导体有限公司 | 一种crc码并行计算方法、装置及其应用 |
CN113821370A (zh) * | 2021-01-22 | 2021-12-21 | 北京诺芮集成电路设计有限公司 | 一种用于数据传输错误校验的高速crc产生方法和装置 |
CN114443347A (zh) * | 2021-12-23 | 2022-05-06 | 湖南毂梁微电子有限公司 | 一种可配置crc码计算方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633030A (zh) * | 2003-12-22 | 2005-06-29 | 普天信息技术研究院 | 一种循环冗余校验的快速计算方法 |
CN1719400A (zh) * | 2005-08-19 | 2006-01-11 | 罗静远 | 自编程并行线性反馈移位寄存器-ap2lfsr |
US20060168495A1 (en) * | 2005-01-25 | 2006-07-27 | Analog Devices, Inc. | Computation of cyclic redundancy check |
-
2012
- 2012-07-05 CN CN2012102317483A patent/CN102761394A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633030A (zh) * | 2003-12-22 | 2005-06-29 | 普天信息技术研究院 | 一种循环冗余校验的快速计算方法 |
US20060168495A1 (en) * | 2005-01-25 | 2006-07-27 | Analog Devices, Inc. | Computation of cyclic redundancy check |
CN1719400A (zh) * | 2005-08-19 | 2006-01-11 | 罗静远 | 自编程并行线性反馈移位寄存器-ap2lfsr |
Non-Patent Citations (1)
Title |
---|
梁海华,盘丽娜,赵秀兰,李克清: "CRC查询表及其并行矩阵生成方法", 《计算机科学》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664518A (zh) * | 2017-03-31 | 2018-10-16 | 深圳市中兴微电子技术有限公司 | 一种实现查表处理的方法及装置 |
CN108664518B (zh) * | 2017-03-31 | 2021-12-07 | 深圳市中兴微电子技术有限公司 | 一种实现查表处理的方法及装置 |
CN111431541A (zh) * | 2019-01-09 | 2020-07-17 | 电信科学技术研究院有限公司 | 一种获得crc码的方法及装置 |
CN111431541B (zh) * | 2019-01-09 | 2023-05-12 | 电信科学技术研究院有限公司 | 一种获得crc码的方法及装置 |
CN111625832A (zh) * | 2019-02-27 | 2020-09-04 | 智原科技股份有限公司 | 电子装置中起始载入程序的执行方法 |
CN112214349A (zh) * | 2020-12-09 | 2021-01-12 | 上海灵动微电子股份有限公司 | 一种数据循环冗余校验装置和方法 |
CN113821370A (zh) * | 2021-01-22 | 2021-12-21 | 北京诺芮集成电路设计有限公司 | 一种用于数据传输错误校验的高速crc产生方法和装置 |
CN113821370B (zh) * | 2021-01-22 | 2024-04-19 | 北京诺芮集成电路设计有限公司 | 一种用于数据传输错误校验的高速crc产生方法和装置 |
CN113110954A (zh) * | 2021-04-23 | 2021-07-13 | 合肥恒烁半导体有限公司 | 一种crc码并行计算方法、装置及其应用 |
CN113110954B (zh) * | 2021-04-23 | 2023-10-24 | 恒烁半导体(合肥)股份有限公司 | 一种crc码并行计算方法、装置及其应用 |
CN114443347A (zh) * | 2021-12-23 | 2022-05-06 | 湖南毂梁微电子有限公司 | 一种可配置crc码计算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102761394A (zh) | 数据的处理方法及装置 | |
CN101188428B (zh) | 一种ldpc码的有限长度循环缓存的速率匹配方法 | |
CN1836394B (zh) | 在移动通信系统中编码/解码分块低密度奇偶校验码的装置和方法 | |
CN101821980B (zh) | 一种发送数据的方法 | |
US6411223B1 (en) | Generating high weight encoding symbols using a basis | |
US8006160B2 (en) | Efficient encoding and decoding methods for representing schedules and processing forward error correction codes | |
KR100970645B1 (ko) | 블록 코드를 이용한 다양한 길이를 가진 정보의 채널 코딩방법 | |
CN101162907B (zh) | 一种利用低密度奇偶校验码实现编码的方法及装置 | |
CN102546089B (zh) | 循环冗余校验crc码的实现方法及装置 | |
CN105656604A (zh) | 一种比特交织极化编码调制方法及装置 | |
JP7248762B2 (ja) | データ処理方法およびデバイス | |
CN110326221A (zh) | 一种用于为极化码生成有序序列的方法 | |
US10362151B2 (en) | Coding in Galois fields with reduced complexity | |
KR20210046842A (ko) | 폴라 코드의 레이트 매칭을 프로세싱하기 위한 방법 및 장치 | |
CN112039535A (zh) | 一种基于准循环生成矩阵的码率兼容ldpc编码器 | |
CN107239362A (zh) | 一种并行crc校验码的计算方法及系统 | |
CN105322973A (zh) | 一种rs码编码器及编码方法 | |
KR101503653B1 (ko) | 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 채널 부호화/복호화 방법 및 장치 | |
CN111447044B (zh) | 分布式存储方法和传输译码方法 | |
CN102195743B (zh) | 动态实时喷泉码编码方案 | |
CN103763064A (zh) | 适用于超高速通讯系统的循环冗余校验码生成方法与电路 | |
Karat et al. | Optimal error correcting delivery scheme for an optimal coded caching scheme with small buffers | |
Silva | Minimum-overhead network coding in the short packet regime | |
CN107786300B (zh) | 一种数据发送方法及装置 | |
CN101667839B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20121031 |