一种循环冗余校验CRC计算方法和装置与流程

文档序号:17725167发布日期:2019-05-22 02:27阅读:421来源:国知局
一种循环冗余校验CRC计算方法和装置与流程

本申请涉及数据通信领域,尤其涉及一种循环冗余校验crc计算方法和装置。



背景技术:

通讯系统中一般采用循环冗余校验(cyclicredundancycheck,crc)算法对数据块进行编码校验,随着现代通信系统对通信速率要求越来越高,要求整个接收端的处理时延越来越小。

如图1所示,从高层传下来的传输块tb的长度记为a,发射端(例如,发射机)将传输块(transportblock,tb)首先加长度为ltb_crcbits的crc(记为tb_crc),得到长度为b=a+ltb_crc的数据块,tb块对应的crc生成多项式记为gtb(d)。示例性的,在lte系统中,发射端可以为tb加ltb_crc=24比特的crc,例如,添加gtb(d)=d24+d23+d18+d17+d14+d11+d10+d7+d6+d5+d4+d3+d+1对应的crc,发射端判断如果b>kmax(例如,6144),如图2所示,则将长度为b=a+ltb_crc的数据块分为多个编码块(codeblock,cb),若发射端确定b≤kmax,则该长度为b=a+ltb_crc的数据块对应一个cb。

如图1所示,发射端在为tb添加完24比特的crc校验之后的数据块,即长度为b=a+ltb_crc的数据块分为多个编码块时,发射端为每个编码块使用生成多项式(比如使用crc-24b对应的crc生成多项式)再次进行crc处理,以对每个编码块添加cb_crc,cb对应的crc生成多项式为:gcb(d)=d24+d23+d6+d5+d+1。然后,将使用生成多项式crc-24b进行crc处理的cb输入前向纠错(forwarderrorcorrection,fec)编码器,在将长度为b=a+ltb_crc的数据块对应一个cb时,可以直接将该tb块作为cb块,也即直接把长度为b=a+ltb_crc的tb块输入fec编码器。

发射端输入至fec编码器的每个cb经过编码后的输出数据进行速率匹配后,发送给接收端(例如,接收机)。如图3所示,接收端对接收到的多个cb进行解速率匹配,然后输入fec译码器。当各个cb译码成功后,接收端按照每个cb的地址或者标识将各个cb对应的fec译码结果串接,重新组成长度为b=a+ltb_crc包含tb_crc的tb块。接收端对长度为b=a+ltb_crc包含tb_crc的tb块进行crc校检后并上报校验结果,如果校检通过则上报译码成功,并把数据块传给高层,否则上报译码失败。

现有技术中各个数据块的crc计算是串行计算的,例如图4所示,输入一个数据块的第1个bit,然后进行各寄存器(例如,图4中的寄存器x1、寄存器x2、寄存器x3、寄存器x4)的移位,计算和值更新,接着输入该数据块的第2个bit,再次进行各寄存器的移位,计算和值更新,不断重复,直到该数据块的最后1个bit输入并进行完各寄存器的移位,计算和值更新,最终各寄存器中的值就对应了该块数据的crc。按传统方法,crc校验的处理时间会比较长,例如,一个tb块的长度a=2*106,串行计算crc校检将用掉约2*106个循环(cycle),时延很大,成为提高通信速率的瓶颈。



技术实现要素:

本发明实施例提供一种循环冗余校验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_j=(crcj,msg*crcj,0)%g(d)确定每个子数据块的第三crc,其中,j表示子数据块的标识;crc_j表示第j个子数据块的第三crc;crcj,msg表示第j个子数据块的第一crc,crcj,0表示第j个子数据块关联的第一序列的第二crc;g(d)表示所述数据块的crc生成多项式,j∈[1,m],m为所述数据块包括的子数据块的数量,m为大于或等于2的整数。

结合第一方面至第一方面的第二种可能的实现方式中的任一项,在第一方面的第三种可能的实现方式中,计算每个子数据块各自关联的第一序列的第二crc,包括:根据公式计算所述每个子数据块各自关联的第一序列的第二crc,其中,π表示连乘,i表示将第j个子数据块对应的全零序列的长度表示为lj=a22*222+a21*221+…a1*21+a0*20的第一多项式时各项的指数,ai=0~22表示第一多项式中各项的系数,ai=0~22=0或1,是指数i对应的第二多项式,g(d)表示所述数据块的crc生成多项式,lj表示第j个子数据块对应的全零序列的长度,crcj,0表示第j个子数据块关联的第一序列的第二crc。

结合第一方面至第一方面的第三可能的实现方式中的任一项,在第一方面的第四种可能的实现方式中,通过第一查询表确定指数i对应的第二多项式中各项的系数,第一查询表中至少包括指数i对应的第二多项式中各项的系数;根据指数i对应的第二多项式中各项的系数,确定

结合第一方面至第一方面的第四可能的实现方式中的任一项,在第一方面的第五种可能的实现方式中,每个子数据块的长度相等,计算每个子数据块各自关联的第一序列的第二crc,包括:获取多个子数据块中第二个子数据块关联的第一序列的第二crc;根据公式crcj,0=[crcj-1,0*crc2,0]%g(d)依次计算所述每个子数据块各自关联的第一序列的第二crc,其中,crcj,0表示第j个子数据块关联的第一序列的第二crc,crc2,0表示所述第二个子数据块关联的第一序列的第二crc,crcj-1,0表示第j-1个子数据块关联的第一序列的第二crc。

结合第一方面至第一方面的第五可能的实现方式中的任一项,在第一方面的第六种可能的实现方式中,获取多个子数据块中第二个子数据块关联的第一序列的第二crc,根据公式获取所述第二个子数据块关联的第一序列的第二crc,其中,π表示连乘,i表示将所述第二个子数据块对应的全零序列的长度表示为l2=a22*222+a21*221+…a1*21+a0*20的第一多项式中各项的指数,ai=0~22表示第一多项式中各项的系数,ai=0~22=0或1,是指数i对应的第二多项式,g(d)表示数据块的crc生成多项式,l2表示第二个子数据块对应的全零序列的长度,crc2,0表示第二个子数据块关联的第一序列的第二crc。

结合第一方面至第一方面的第六可能的实现方式中的任一项,在第一方面的第七种可能的实现方式中,计算数据块包括的多个子数据块中每个子数据块的第一crc,包括:根据公式

计算所述多个子数据块中每个子数据块的第一crc,其中,crcj,msg表示第j个子数据块的第一crc,nj表示第j+1个子数据块的长度,为第1个子数据块中的数据,为第2个子数据块中的数据,为第j个子数据块中的数据。

结合第一方面至第一方面的第七可能的实现方式中的任一项,在第一方面的第八种可能的实现方式中,本申请提供的方法还包括:确定所述数据块的crc为预设常数序列,则确定数据块校验通过。

结合第一方面至第一方面的第八可能的实现方式中的任一项,在第一方面的第九种可能的实现方式中,将每个子数据块的第三crc合并,得到数据块的crc,包括:将每个子数据块的第三crc进行模二加,得到数据块的crc。

结合第一方面至第一方面的第九可能的实现方式中的任一项,在第一方面的第十种可能的实现方式中,本申请提供的方法还包括:待计算数据块后补充l_crc个0,以得到所述数据块,其中,l_crc表示所述crc生成多项式g(d)对应的crc长度。

第二方面,本申请还提供了一种crc计算装置,该crc计算装置可以用于通信设备中,该通信设备可以实现第一方面至第一方面的任一项所描述的一种crc计算方法。例如,该通信设备可以是发射机,或者为设置在发射机中的芯片,该通信设备也可以是接收机,或者为设置在接收机中的芯片。其可以通过软件、硬件、或者通过硬件执行相应的软件实现上述方法。

在一种可能的设计中,该crc计算装置,包括:计算单元,用于计算数据块包括的多个子数据块中每个子数据块的第一循环冗余校验crc,以及计算所述每个子数据块各自关联的第一序列的第二crc,其中,任一个子数据块关联的第一序列由1和任一个子数据块对应的全零序列组成,不同子数据块对应的全零序列的长度不同;确定单元,用于通信设备根据每个子数据块的第一crc以及每个子数据块各自关联的第一序列的第二crc,确定所述每个子数据块的第三crc;计算单元,还用于将每个子数据块的第三crc合并,得到数据块的crc。

结合第二方面,在第二方面的第一种可能的实现方式中,任一个子数据块对应的全零序列的长度等于位于该子数据块之前的所有子数据块的长度之和。

结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,确定单元,具体用于根据公式crc_j=(crcj,msg*crcj,0)%g(d)确定所述每个子数据块的第三crc,其中,j表示子数据块的标识;crc_j表示第j个子数据块的第三crc;crcj,msg表示第j个子数据块的第一crc,crcj,0表示第j个子数据块关联的第一序列的第二crc;g(d)表示所述数据块的crc生成多项式,j∈[1,m],m为所述数据块包括的子数据块的数量,m为大于或等于2的整数。

结合第二方面至第二方面的第二种可能的实现方式中的任一项,在第二方面的第三种可能的实现方式中,计算单元,具体用于根据公式计算每个子数据块各自关联的第一序列的第二crc,其中,π表示连乘,i表示将第j个子数据块对应的全零序列的长度表示为lj=a22*222+a21*221+…a1*21+a0*20的第一多项式时各项的指数,ai=0~22表示第一多项式中各项的系数,ai=0~22=0或1,是指数i对应的第二多项式,g(d)表示数据块的crc生成多项式,lj表示第j个子数据块对应的全零序列的长度,crcj,0表示第j个子数据块关联的第一序列的第二crc。

结合第二方面至第二方面的第三种可能的实现方式中的任一项,在第二方面的第四种可能的实现方式中,确定单元,具体用于通过第一查询表确定指数i对应的第二多项式中各项的系数,第一查询表中至少包括指数i对应的第二多项式中各项的系数;以及用于根据指数i对应的第二多项式中各项的系数,确定

结合第二方面至第二方面的第四种可能的实现方式中的任一项,在第二方面的第五种可能的实现方式中,每个子数据块的长度相等,计算单元,具体用于获取多个子数据块中第二个子数据块关联的第一序列的第二crc;以及用于根据公式crcj,0=[crcj-1,0*crc2,0]%g(d)依次计算每个子数据块各自关联的第一序列的第二crc,其中,crcj,0表示第j个子数据块关联的第一序列的第二crc,crc2,0表示第二个子数据块关联的第一序列的第二crc,crcj-1,0表示第j-1个子数据块关联的第一序列的第二crc。

结合第二方面至第二方面的第五种可能的实现方式中的任一项,在第二方面的第六种可能的实现方式中,计算单元,具体用于根据公式获取第二个子数据块关联的第一序列的第二crc,其中,∏表示连乘,i表示将第二个子数据块对应的全零序列的长度表示为l2=a22*222+a21*221+…a1*21+a0*20的第一多项式中各项的指数,ai=0~22表示第一多项式中各项的系数,ai=0~22=0或1,是指数i对应的第二多项式,g(d)表示数据块的crc生成多项式,l2表示第二个子数据块对应的全零序列的长度,crc2,0表示第二个子数据块关联的第一序列的第二crc。

结合第二方面至第二方面的第六种可能的实现方式中的任一项,在第二方面的第七种可能的实现方式中,计算单元,具体用于根据公式计算单元,还用于根据公式

计算所述多个子数据块中每个子数据块的第一crc,其中,crcj,msg表示第j个子数据块的第一crc,nj表示第j+1个子数据块的长度,为第1个子数据块中的数据,为第2个子数据块中的数据,为第j个子数据块中的数据。

结合第二方面至第二方面的第七种可能的实现方式中的任一项,在第二方面的第八种可能的实现方式中,crc计算装置为接收机,crc计算装置还包括:校验单元,用于确定数据块的crc为预设常数序列,则确定数据块校验通过。

结合第二方面至第二方面的第八种可能的实现方式中的任一项,在第二方面的第九种可能的实现方式中,计算单元,还具体将每个子数据块的第三crc进行模二加,得到所述数据块的crc。

结合第二方面至第二方面的第九可能的实现方式中的任一项,在第二方面的第十种可能的实现方式中,crc计算装置为发射机,确定单元,还用于待计算数据块后补充l_crc个0,以得到所述数据块,其中,l_crc表示所述crc生成多项式g(d)对应的crc长度。

第三方面,本申请提供一种crc计算装置,该crc计算装置可以包括处理器和存储器。该处理器被配置为支持crc计算装置执行上述第一方面至第一方面的任一项所描述的方法中用于在crc计算装置侧执行消息或数据处理的功能。存储器用于与处理器耦合,其保存该crc计算装置必要的程序(指令)和数据。另外该crc计算装置还可以包括通信接口,通信接口被配置为支持crc计算装置与其他网元进行通信,以执行上述第一方面至第一方面的任一项所描述的方法中用于在crc计算装置侧执行消息或数据发送和接收的功能。该通信接口可以是收发器。

第四方面,本申请提供一种芯片系统,应用于crc计算装置中,该芯片系统包括至少一个处理器,存储器和接口电路,存储器、接口电路和至少一个处理器通过线路互联,至少一个存储器中存储有指令;指令被处理器执行,以执行第一方面至第一方面的任意一种可能的实现方式所描述的方法。

第五方面,本申请提供一种计算机可读存储介质,应用于crc计算装置中,计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行第一方面至第一方面的任意一种可能的实现方式所描述的方法。

第六方面,本申请提供一种终端设备,该终端设备中具有上述实施例中所描述的crc计算装置。

第七方面,本申请提供一种网络设备,该网络设备中具有上述实施例中所描述的crc计算装置。

第八方面,本申请提供一种中继设备,该中继设备中具有上述实施例中所描述的crc计算装置。

附图说明

图1为现有技术中提供的一种发射端处理的流程示意图;

图2为现有技术中提供的一种tb块加tb_crc,并进行cb分块的场景示意图一;

图3为现有技术中提供的一种接收端处理的结构示意图;

图4为现有技术中提供的一种计算g(d)=d4+d3+1的crc的结构示意图;

图5为本发明实施例提供的一种crc计算方法的流程示意图一;

图6为本发明实施例提供的一种数据块分为多个子数据块的结构示意图;

图7为本发明实施例提供的一种crc计算装置的结构示意图一;

图8为本发明实施例提供的一种crc计算装置的结构示意图二;

图9为本发明实施例提供的一种crc计算装置的结构示意图三。

具体实施方式

本申请提供的方法可以应用于需要进行crc编码或校检的系统,尤其是需要进行较大数据块(例如,长度大于6144的数据块)的crc编码或校检的系统。

本发明实施例中的发射端或者接收端可以为应用于crc编码和校检的单元的设备,例如,网络设备(例如,基站),终端设备(例如,用户设备(userequipment,ue)),或者中继设备。

本申请中的crc计算方法可以由crc计算装置来执行,该crc计算装置可以为发射机、接收机或者处理器,该处理器位于发射机或者接收机中,具体的如图5所示,图5示出了本申请提供的一种crc计算方法的流程示意图,包括:

s101、crc计算装置计算数据块包括的多个子数据块中每个子数据块的第一循环冗余校验crc,以及计算每个子数据块各自关联的第一序列的第二crc,其中,任一个子数据块关联的第一序列由1和任一个子数据块对应的全零序列组成,不同子数据块对应的全零序列的长度不同。

可选的,任一个子数据块对应的全零序列的长度等于位于任一个子数据块之前的所有子数据块的长度之和。

具体的,任一个子数据块之前的所有子数据块可以指按照从起始地址指向末地址方向确定。

示例性的,第一序列可以表示为其中,lj表示第j个子数据块对应的全零序列的长度,p∈[0,j-2],np表示位于第j个子数据块之前的第p+1个子数据块的长度。

例如,该第一序列可以为“1000000000”。

需要说明的是,对于任一个数据块而言,若该任一个子数据块中存在一个子数据块a,该子数据块a(例如,第一个子数据块)之前的所有子数据块的长度为0,那么便可以确定该子数据块a关联的第一序列为1,也即通常一个数据块之内的第一个子数据块对应的全零序列的长度为0,那么该第一个子数据块关联的第一序列为1。

示例性的,本申请中数据块可以包括m个子数据块,其中,m为大于或等于2的整数。该m个子数据块的长度之和等于该数据块的长度。

其中,m个子数据块的长度可以相等,也可以不相等,本申请对此不进行限定。

示例性的,本申请中的数据块可以为传输块(transportblock,tb),也可以为包括crc的tb,记为tb+tb_crc,也可以为编码块(codeblock,cb),或者可以为包括crc的cb,记为cb+cb_crc。

如图6所示,本申请以数据块为tb+tb_crc,以tb+tb_crc包括4个子数据块为例进行说明:

如图6所示,tb+tb_crc包括的子数据块为:子数据块1,子数据块2,子数据块3和子数据块4,由图6可以看出,子数据块4与全零序列4对应,子数据块3与全零序列3对应,子数据块2与全零序列2对应,需要说明的是,由于子数据块1为多个子数据块中的第一个子数据块,因此,子数据块1对应的全零序列的长度为0,在图6中未示出。

示例性的,子数据块4对应的全零序列4的长度为子数据块3的长度、子数据块2的长度和子数据块1的长度之和,子数据块3对应的全零序列3的长度为子数据块2和子数据块1的长度之和,子数据块2对应的全零序列2的长度为子数据块1的长度。

可选的,本申请在步骤s101之前,还包括:将数据块划分为多个子数据块。

不同的通信系统对子数据块长度的要求不一样,比如,5g通信系统中,可能要求所有子数据块长度相等,在4g通信系统中则允许出现至少两种不同长度的子数据块,因此,基于通信系统对子数据块长度的要求来划分数据块,以使得划分后得到的子数据块的长度满足通信系统的要求。

需要说明的是,本申请中计算一个子数据块的第一crc及该一个子数据块对应的第一序列的第二crc,和计算其他子数据块的第一crc及其他子数据块对应的第一序列的第二crc可以是并行的处理过程。

可选的,本申请中发射端的数据块由crc计算装置在输入信息数据块后补充l_crc个0得到,其中,l_crc表示所述crc生成多项式g(d)对应的crc长度。

s102、crc计算装置根据每个子数据块的第一crc以及每个子数据块各自关联的第一序列的第二crc,确定每个子数据块的第三crc。

具体的,本申请中的步骤s102具体可以通过以下方式实现:

s1021、crc计算装置根据公式crc_j=(crcj,msg*crcj,0)%g(d)确定所述每个子数据块的第三crc,其中,j表示子数据块的标识;crc_j表示第j个子数据块的第三crc;crcj,msg表示第j个子数据块的第一crc,crcj,0表示第j个子数据块关联的第一序列的第二crc;g(d)表示所述数据块的crc生成多项式,j∈[1,m],m为所述数据块包括的子数据块的数量,m为大于或等于2的整数。其中,msg为message的缩写,代表子数据块信息本身,本文把其对应的crc称为子数据块本身的第一crc。

可选的,数据块为tb时,g(d)可以为tb对应的crc生成多项式,可以表示为gtb(d),数据块为cb时,g(d)可以为cb对应的crc生成多项式,可以表示为gcb(d)。

如无特殊说明,本申请中计算一个数据块对应的crc表示:把该数据块表示成对应多项式后,乘以(其中,d表示crc计算中惯用的变量符号,将数据块乘以表示在数据块后面补充lcrc个0。其中,lcrc为该数据块对应的crc的长度),然后对该数据块的crc生成多项式求余式,得到的余式对应的序列,即为该数据块对应crc生成多项式的crc。例如:数据块为:xa-1,xa-2,…x1,x0,crc生成多项式为:

g(d)=d24+d23+d18+d17+d14+d11+d10+d7+d6+d5+d4+d3+d+1,则对crc生成多项式g(d),数据块xa-1,xa-2,…x1,x0对应的crc为:

[(xa-1*da-1+xa-2*da-2…+x1*d1+x0*d0)*d24]%g(d)得到余式对应的目标序列,比如上述余式为d21+d6+d3+1,则数据块xa-1,xa-2,…x1,x0对应的crc为:001000000000000001001001。

本申请中一个比特序列和该比特序列对应多项式为等价的,比如上述:

g(d)=d24+d23+d18+d17+d14+d11+d10+d7+d6+d5+d4+d3+d+1可以使用如下比特序列表示1100001100100110011111011。

因此,本申请中crc计算装置计算每个子数据块各自关联的第一序列的第二crc的方式可以有多种,可选的,作为一种可能的实现方式,本申请中的步骤s101可以通过以下方式实现:

crc计算装置根据公式计算每个子数据块各自关联的第一序列的第二crc,其中,π表示连乘,i表示将第j个子数据块对应的全零序列的长度表示为lj=a22*222+a21*221+…a1*21+a0*20的第一多项式时各项的指数,ai=0~22表示第一多项式中各项的系数,ai=0~22=0或1,是指数i对应的第二多项式,g(d)表示所述数据块的crc生成多项式,lj表示第j个子数据块对应的全零序列的长度,crcj,0表示第j个子数据块关联的第一序列的第二crc。

具体的,本申请中crc计算装置确定的方式有多种,例如,crc计算装置通过第一查询表确定指数i对应的第二多项式中各项的系数,第一查询表中至少包括指数i对应的第二多项式中各项的系数;crc计算装置根据指数i对应的第二多项式中各项的系数,确定

示例性的,第j=1个子数据块的长度为10000bit,那么该第j=2个子数据块对应的全零序列的长度对应的第一多项式为:

10000bit=8192bit+1024bit+512bit+256bit+16bit=213+210+29+28+24,从而可以确定第j=2个子数据块的对应的全零序列的长度对应的第二多项式的各项的指数i的取值可以为13、10、9、8以及4。

需要说明的是,本申请在计算每个子数据块对应的第一序列的第二crc时,该多个子数据块的长度可以相等,也可以不相等。

可选的,当每个子数据块的长度相等时,作为另一种可能的实现方式,本申请中的步骤s101还可以通过以下方式实现:

s1011、crc计算装置获取多个子数据块中第二个子数据块关联的第一序列的第二crc。

示例性的,第二个子数据块可以为如图6所示的子数据块2。

可选的,步骤s1011可以通过以下方式实现:

一方面,设l2=a22*222+a21*221+…a1*21+a0*20,crc计算装置根据公式获取第二个子数据块关联的第一序列的第二crc,其中,π表示连乘,i表示将第二个子数据块对应的全零序列的长度表示为l2=a22*222+a21*221+…a1*21+a0*20的第一多项式中各项的指数,ai=0~22表示第一多项式中各项的系数,ai=0~22=0或1,是指数i对应的第二多项式,g(d)表示数据块的crc生成多项式,l2表示第二个子数据块对应的全零序列的长度,crc2,0表示第二个子数据块关联的第一序列的第二crc。

另一方面,crc计算装置从预设表1中查表得到各然后通过公式计算得到该第二子数据块关联的第一序列的第二crc,其中,п表示连乘,i表示将第二个子数据块对应的全零序列的长度表示为l2=a22*222+a21*221+…a1*21+a0*20的第一多项式中各项的指数,ai=0~22表示第一多项式中各项的系数,ai=0~22=0或1,是指数i对应的第二多项式,g(d)表示所述数据块的crc生成多项式,l2表示所述第二个子数据块对应的全零序列的长度,crc2,0表示所述第二个子数据块关联的第一序列的第二crc。

s1012、crc计算装置根据公式crcj,0=[crcj-1,0*crc2,0]%g(d)依次计算每个子数据块各自对应的第一序列的第二crc,其中,crcj,0表示第j个子数据块关联的第一序列的第二crc,crc2,0表示第二个子数据块关联的第一序列的第二crc,crcj-1,0表示第j-1个子数据块关联的第一序列的第二crc。

s103、crc计算装置将每个子数据块的第三crc合并,得到数据块的crc。

具体的,步骤s103可以通过以下方式实现:

crc计算装置将每个子数据块的第三crc进行模二加,得到数据块的crc。

可选的,本申请中的crc计算装置为接收机时,本申请提供的方法,还包括:

s104、crc计算装置根据数据块的crc,则确定数据块是否校验通过。

具体的,本申请中的步骤s104可以通过以下方式实现:

crc计算装置确定数据块的crc为预设常数序列,则确定数据块校验通过,crc计算装置确定数据块的crc不是预设常数序列,则确定数据块未校验通过。

示例性的,该预设常数序列可以为全零序列。

通常情况下,crc校验有两种方式:一种是把译码得到的整个tb数据块及tb_crc串接后,对多项式gtb(d)进行求余运算,如果求余结果为某预定常数序列(例如,全零序列),则表示通过tbcrc校验,否则表示未通过tbcrc校验。另一种是通过用译码得到的tb数据块对应的多项式后边补lcrc个0后,对gtb(d)进行求余运算,如果求余结果和译码得到的tb_crc对应多项式模2加后,等于某预定常数序列,则表示通过tbcrc检测,否则表示未通过tbcrc校验。

可选的,crc计算装置计算数据块包括的多个子数据块中每个子数据块的第一crc,可以通过以下方式实现:设备根据公式

计算所述多个子数据块中每个子数据块的第一crc,其中,crcj,msg表示第j个子数据块的第一crc,nj表示第j+1个子数据块的长度,为第1个子数据块中的数据,为第2个子数据块中的数据,为第j个子数据块中的数据。

以下将结合具体实施例介绍本申请提供的一种循环冗余校验crc计算方法:

实施例1、本申请提供的方法以携带tb_crc的tb(记为tb+tb_crc)包括4个子数据块为例,例如,如图6所示,可以通过以下公式计算每个子数据块的第三crc:

crc_1=(crc1,msg*1)%gtb(d)=crc1,msg%gtb(d),其中,crc_1表示子数据块1的第三crc,crc1,msg表示子数据块1的第一crc。

crc_2=(crc2,msg*crc2,0)%gtb(d),其中,crc_2表示子数据块2的第三crc,crc2,msg表示子数据块2的第一crc,crc2,0表示子数据块2对应的第一序列的第二crc,gtb(d)表示tb使用的crc生成多项式。

crc_3=(crc3,msg*crc3,0)%gtb(d),其中,crc_3表示子数据块3或第3个子数据块的第三crc,crc3,msg表示子数据块3的第一crc,crc3,0表示子数据块3对应的第一序列的第二crc,gtb(d)表示tb使用的crc生成多项式。

crc_4=(crc4,msg*crc4,0)%gtb(d),其中,crc_4表示子数据块4的第三crc,crc4,msg表示子数据块4或第4个子数据块的第一crc,crc4,0表示子数据块4对应的第一序列的第二crc,gtb(d)表示tb使用的crc生成多项式。

其中,每个子数据块的第一crc表示每个子数据块各自单独计算得到的crc,crcj,0表示数据块包括的第j个子数据块对应的第一序列的第二crc,其中,用于计算第j个子数据块对应的第一序列的第二crc,lj表示第j个子数据块对应的全零序列的长度。

对各个子数据块的crcj,0,可以采用下述方法降低运算量:设每个子数据块对应的全零序列的长度ai=0~22=0or1,则其中,其中,g(d)表示数据块的crc生成多项式,其中,п表示连乘,i表示将第j个子数据块对应的全零序列的长度表示为lj=a22*222+a21*221+…a1*21+a0*20的第一多项式时各项的指数,ai=0~22表示第一多项式中各项的系数,ai=0~22=0或1,是指数i对应的第二多项式,g(d)表示所述数据块的crc生成多项式,lj表示第j个子数据块对应的全零序列的长度,crcj,0表示第j个子数据块关联的第一序列的第二crc。

一方面,可选的,i表示第j个子数据块对应的全零序列的长度用多个2的幂次方表示时对应的第二多项式中各项的指数,用于表示指数i对应的第二多项式。

其中,对应于gtb(d)=d24+d23+d18+d17+d14+d11+d10+d7+d6+d5+d4+d3+d+1,各个可通过索引i查寻下表1得到。

例如i=5,查表1得到各项系数对应的序列为:011001101000111101001000,则通过上述过程,可大大减少运算量。

表1第一查询表存储表

示例性的,下述将以tbs=20000-24=19976bits,分成4个cb块,每个cb的cbs=5000bits为例,假设cb块对应的cb_crc的长度为0,以tb对应的crc生成多项式为gtb(d)为例来介绍:

在实施例1中,仍以如图6为例,可以并行计算crc1,msg,crc2,msg,crc3,msg,crc4,msg,还可以并行计算crc4,0=d15000%gtb(d),crc3,0=d10000%gtb(d),crc2,0=d5000%gtb(d)。

由于子数据块4对应的全零序列的长度=子数据块3的长度+子数据块2的长度+子数据块1的长度=5000+5000+5000=15000=8192+4096+2048+512+128+16+8=213+212+211+29+27+24+23,故crc4,0表示子数据块4对应的第一序列的第二crc。

其中,子数据块3对应的全零序列的长度=子数据块2的长度+子数据块1的长度=5000+5000=10000=8192+1024+512+256+16=213+210+29+28+24,故其中,crc3,0表示子数据块3对应的第一序列的第二crc。

子数据块2对应的全零序列的长度=子数据块1的长度=5000=4096+512+256+128+8,故其中,crc2,0表示子数据块2或者第2个子数据块对应的第一序列的第二crc。

本申请中可以并行计算每个子数据块对应的第一crc,也可以并行计算每个子数据块对应的第一序列的第二crc,由于crc1,msg,crc2,msg,crc3,msg,crc4,msg可以并行计算,故计算crc1,msg,crc2,msg,crc3,msg,crc4,msg最大用5000个cycle可以完成;而crc4,0,crc3,0,crc2,0也可以并行计算,故取其用时最大者,即需6个基本运算,此处的一个基本运算含一个24长*24长的多项式乘法运算和一个24长序列对gtb(d)的求余运算,约需6*(25+25)=300个cycle。在这种情况下采用本申请实施例一总共需5000+300=5300个cycle即可完成。

而现有技术中串行计算crc,完成tbcrc检测需要20000个cycle。因此,本申请提供的方案所需要的crc为现有技术中所需20000个cycle的27%,因此,可以大大减少了tbcrc校检的时延。

需要说明的是,在实际过程中,为了进一步减少crc校检的时延,在计算任一个子数据块的crc时,比如计算第二个子数据块的第一crc,也可以先计算第二个子数据块包括的多个小块a的crc,即用第二个子数据块代替图6中的数据块,将第二个子数据块分成多个小块,然后用实施例1中的方法计算crc2,msg。

实施例2,在通信系统中可能存在对子数据块的长度均相同的场景,例如,5g通信系统中,例如,以每个子数据块的长度为5000为例介绍,因此,下述将结合实施例2详细介绍在每个子数据块的长度相同时,如何计算每个子数据块对应的第二crc:

又一示例,实施例2与实施例1的区别在于:本申请实施例式2中除了需要计算crc1,msg,crc2,msg,crc3,msg,crc4,msg外,还需要计算crc2,0,crc3,0,crc4,0,且实施例1中crc2,0,crc3,0,crc4,0可以并行计算,而在实施例2中是先计算出子数据块2的第二crc后,再依次根据公式crcj,0=(crcj-1,0*crc2,0)%gtb(d)计算其余子数据块的第二crc,例如,可以根据公式计算出crc2,0,其中,此处的n0表示子数据块的长度,再根据公式crc3,0=(crc2,0*crc2,0)%gtb(d)计算出crc3,0以及根据公式crc4,0=(crc3,0*crc2,0)%gtb(d)计算出crc4,0。

需要说明的是,实施例2在计算过程中也可以存储这样对任一个设j-1=m10*210+m9*29++…m1*21+m0*20,mi=0or1,

示例性的,仍以tbs=20000-24=19976bits,分成4个cb块,每个cb的cbs=5000bits为例,假设cb_crc长度为0,首先计算(具体如何确定i的值可以参见上述实施例,本申请在此不再赘述),再根据crc2,0计算crc3,0=[crc2,0*crc2,0]%gtb(d),再计算crc4,0=[crc3,0*crc2,0]%gtb(d)。

按现有技术,完成tbcrc检测需要20000个cycle。而按照实施例2,由于crc1,msg,crc2,msg,crc3,msg以及crc4,msg可以并行计算,故计算crc1,msg,crc2,msg,crc3,msg以及crc4,msg用5000个cycle可以完成;而crc2,0,crc3,0,crc4,0的计算总共需4+1+1=6个基本运算,本申请中的一个基本运算含一个24长*24长的多项式乘法运算和一个24长序列对gtb(d)的求余运算,约需6*(25+25)=300个cycle。因此,实施例2总共需5000+300=5300个cycle即可完成。所需要的cycle为现有技术所需20000个cycle的27%,从而减少了数据块校验的时延。

需要说明的是,实施例2相比于实施例1,虽然计算crc2,0,crc3,0,crc4,0的时延相同,但实施例2计算crc2,0,crc3,0,crc4,0所需的总运算量为6次基本运算,而实施例1计算crc2,0,crc3,0,crc4,0的总运算量为(6+4+4)=14次基本运算。因此,实施例2所需的运算量小于实施例1的运算量。

同理,如果希望进一步减少crc校检的时延,对任一个子数据块的校检计算,比如计算第二个子数据块的第一crc,也可以先计算第二个子数据块包括的多个小块a的crc,即用第二个子数据块代替图6中的数据块,将第二个子数据块分成多个小块,然后用实施例1中的方法计算crc2,msg。

实施例3,在一个通信系统中一个数据块可以分为多个数据块,但是该多个子数据块的长度可能存在两个值,即一部分子数据块的长度为l1,另一部分子数据块的长度为l2,例如,在4g通信系统中:子数据块(例如,cb)的长度为6016bits和6080bits。

再一示例,本申请以lte系统中tbs=6080*2+6016*2-24=24168bits,以携带crc的tb包括4个cb块为例,cb4,cb3的长度为6080bits,cb2,cb1的长度为6016bits,假设cb_crc长度为0,此时,一方面可依据上述实施例描述的实施例1,以及通过查询表1计算d6016%gtb(d),d6016+6080%gtb(d)和d6016+6080*2%gtb(d)中每个分别对应的多项式。

另一方面,也可依据上述实施例2,先计算d6016%gtb(d)和d6080%gtb(d),再计算

d6016+6080%gtb(d)={[d6016%gtb(d)]*[d6080%gtb(d)]}%gtb(d),

d6016+6080*2%gtb(d)={[d6016+6080%gtb(d)]*[d6080%gtb(d)]}%gtb(d)。

按现有技术,完成tbcrc检测需要24192个cycle。

按照本申请提供的实施例1,由于crc1,msg,crc2,msg,crc3,msg以及crc4,msg可以并行计算,故计算crc1,msg,crc2,msg,crc3,msg以及crc4,msg最多用6080个cycle可以完成,而d6016%gtb(d),d6016+6080%gtb(d)和d6016+6080*2%gtb(d)的计算可并行,由于

6016=212+210+29+28+27,6016+6080=213+211+210+29+28+26

6016+6080*2=214+210+29+28,故最多需5个基本运算,这儿的一个基本运算含一个24长*24长的多项式乘法运算和一个24长序列对gtb(d)的求余运算,故约需5*(25+25)=250个cycle。这样实施例1共需6080+250=6330个cycle即可完成。仅为传统方案所需24192个cycle的26%。大大减少了tbcrc校检计算的时延。

按照本申请提供的实施例2,由于crc1,msg,crc2,msg,crc3,msg以及crc4,msg可以并行计算,故这部分最多用6080个cycle可以完成;而d6016%gtb(d),d6016+6080%gtb(d)和d6016+6080*2%gtb(d)的计算共需4+5+1+1=11个基本运算,这儿的一个基本运算含一个24长*24长的多项式乘法运算和一个24长序列对gtb(d)的求余运算,故约需11*(25+25)=550个cycle。这样算法2总共需6080+550=6630个cycle即可完成。仅为传统方案所需24192个cycle的27%。大大减少了tbcrc校检的时延。

需要说明的是:在上述tbcrc校检计算过程中,计算每个crcj,msg可以和计算crcj,0并行,由于上例中各个crcj,0的计算时延远小于每个crcj,msg的计算时延,因此实施例1和实施例2的crcj,0的计算时延都可以忽略不计。但实施例2计算每个crcj,0的总运算量要小于实施例1。

同理,如果希望进一步减少crc校检的时延,对任一个小块的校检计算,比如对crc2,msg的计算,也可以采用分块计算每个子数据块包括的多个小块的crc,以确定每个子数据块的crc的方式,即用第二个子数据块代替图6中的包括crc的tb,将第二个子数据块分成多个小块,然后用上述方式计算crc2,msg。本发明实施例和现有技术相比的,可以大大减少了各cb块长度不全相同时的crc校检计算的时延和运算量。

实施例4:如上述实施例1、实施例2和实施例3所描述的,采用本申请提供的方法,cb块自身的crc计算成为tbcrc计算所需时延最大的部分。当cb较大,如果希望进一步减少cb的crc计算的时延,比如以cb为上述实施例中的子数据块2,那么计算crc2,msg也可以采用上述实施例中的描述方法,即用子数据块2代替图6中的包括crc的tb,把子数据块2分成多个子块,然后采用上述方法来计算crc2,msg。具体如下:

以新空口(newradio,nr)系统为例,最大cb的长度为8448bits,则可计算并存储各作为第二查询表,如表2所示:

表2第二查询表存储表

设第r个cb块的块长为kr,则把该分成个子块:

第1个子块为其对应的第三crc为

第2个子块为其对应第三crc为

第g个子块为其对应第三crc为

块子块为其对应

最后一个子块,即第个子块,当kr%24≠0时,可补个0为也可以不补0为二者对应的crc相同,记为其中,表示数学向上取整符号。

则第g个子块对应的第三crc,其中,表示第g个子块对应的第三crc,表示第g个子块对应的第一crc,表示第g个子块对应的第二crc,

设g-1=m8*28+m7*27++…m1*21+m0*20,mi=0or1,则

需要说明的是,上述方法需要存储的表2占用9*24/8=27bytes存储空间,由于可以并行计算,所以最大计算延迟为9个基本运算,这儿一个基本运算含一个24长*24长的多项式乘法运算和一个24长序列对gtb(d)的求余运算。

如果希望进一步减少计算延迟,可以存储所有crc24*i(d)=d24*i%gtb(d),i=1,2,3…351个crc值,共需351*24/8=1053bytes。此时每个仅需1次基本运算,这儿一个基本运算含一个24长*24长的多项式乘法运算和一个24长序列对gtb(d)的求余运算。

以传输块大小(transportblocksize,tbs)=20000-24=19976bits,分成4个cb块,每个cb的编码块大小(codeblocksize,cbs)=5000bits为例。按照现有技术中的方案计算每个cb块需5000个cycle。而按实施例4中所描述的方法,如果存储27bytes的则最多需9个基本运算对应时延就可完成,约需9*(25+25)=450个cycle,仅为原来的1/11。如果存储1053bytes的crc24*i(d)=d24*i%gtb(d),i=1,2,3…351,则需1个基本运算对应延迟就可完成,约需1*(25+25)=50个cycle,仅为原来的1/100。

上述主要从各个网元之间交互的角度对本申请提供的方案进行了介绍。可以理解的是,各个网元,例如crc计算装置等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

本申请可以根据上述方法示例对crc计算装置等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用集成的单元的情况下,图7示出了上述实施例中所涉及的crc计算装置的一种可能的结构示意图。crc计算装置包括:计算单元101和确定单元102。其中,计算单元101用于支持crc计算装置执行上述实施例中的步骤s101(具体的可以为s1011和s1012);确定单元102用于支持crc计算装置执行上述实施例中的步骤s102(具体的可以为s1021)以及s103。此外,本申请提供的crc计算装置还包括:校验单元103,该校验单元103用于支持crc计算装置执行上述实施例中的s104;和/或用于本文所描述的技术的其它过程。上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

在采用硬件实现的基础上,本申请中的确定单元102、计算单元101和校验单元103可以集成在crc计算装置的处理器。

可以理解的是,当本申请中的crc计算装置为发射机时,该crc计算装置可以不包括校验单元103,当该crc计算装置为接收机时,该crc计算装置可以包括校验单元103。

在采用集成的单元的情况下,图8示出了上述实施例中所涉及的crc计算装置的一种可能的逻辑结构示意图。crc计算装置包括:处理模块112和通信模块113。处理模块112用于对crc计算装置动作进行控制管理,例如,处理模块112用于支持crc计算装置执行上述实施例中的步骤s101(具体的可以为s1011和s1021)、s102(具体的可以为s1021)、s103、s104;通信模块113用于支持crc计算装置执行接收和发送的相关操作。和/或用于本文所描述的技术的其他过程。crc计算装置还可以包括存储模块111,用于存储crc计算装置的程序代码和数据。

其中,处理模块112可以是处理器或控制器,例如可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信模块113可以是收发器、收发电路或通信接口等。存储模块111可以是存储器。

当本申请中的处理模块112为处理器120,通信模块113为通信接口130或收发器,存储模块111为存储器140时,本申请所涉及的crc计算装置可以为图9所示的设备。

其中,通信接口130、处理器120以及存储器140可以通过总线110相互连接;总线110可以是pci总线或eisa总线等。总线110可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中,存储器140用于存储crc计算装置的程序代码和数据。通信接口130用于支持crc计算装置与其他设备通信,处理器120用于支持crc计算装置执行存储器140中存储的程序代码和数据以实现本申请提供的一种crc计算方法。

一方面,本申请提供一种计算机存储介质,该计算机存储介质中存储有指令,当该指令在接收机上运行时,使得接收机执行实施例中的步骤s101(具体的可以为s1011和s1012)和s102(具体的可以为s1021)、s104和s103中所描述的crc计算方法。

又一方面,提供一种计算机存储介质,计算机可读存储介质中存储有指令,当该指令在发射机上运行时,使得发射机执行实施例中的步骤s101(具体的可以为s1011和s1012)、s102(具体的可以为s1021)、以及s103所描述的crc计算方法。

另一方面,提供一种包含指令的计算机程序产品,计算机程序产品中存储有指令,当指令在接收机上运行时,使得接收机执行实施例中的步骤s101(具体的可以为s1011和s1012)和s102(具体的可以为s1021)、s104和s103中所描述的crc计算方法。

再一方面,提供一种包含指令的计算机程序产品,计算机程序产品中存储有指令,当指令在发射机上运行时,使得发射机执行实施例中的步骤s101(具体的可以为s1011和s1012)、s102(具体的可以为s1021)、以及s103所描述的crc计算方法。

上述提供的任一种装置中相关内容的解释及有益效果均可参考上文提供的对应的方法实施例,此处不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。

尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1