CRC计算(二)

本文详细介绍了CRC校验的过程,涉及3GPPTS38.2125中的规定。内容包括不同长度的CRC生成多项式,如CRC24A,CRC24B,CRC24C,CRC16,CRC11,和CRC6。在GF(2)域中,通过将输入序列与奇偶校验位结合,然后除以相应的CRC生成多项式,确保余数为0。最终,CRC校验位的添加过程被阐述,明确了原始输入位和校验位之间的关系。
摘要由CSDN通过智能技术生成

本文参考3GPP TS 38.212 5.1 CRC calculation部分。

将输入位表示为CRC计算 a , a   1   , a   2   , . . . , a   A − 1   a,a~1~,a~2~,...,a~A-1~ a,a 1 ,a 2 ,...,a A1 和奇偶校验位p0,p1,p2,…,pL-1,这里 A A A是输入序列的大小, L L L是奇偶校验位的数量。奇偶校验位由一下循环生成多项式之一生成:

  • 对于 L = 24 L=24 L=24的CRC长度, g C R C 24 A ( D ) = [ D 24 + D 23 + D 18 + D 17 + D 14 + D 11 + D 10 + D 7 + D 6 + D 5 + D 4 + D 3 + D + 1 ] g_{CRC24A}(D) = [D^{24}+D^{23}+D^{18}+D^{17}+D^{14}+D^{11}+D^{10}+D^{7}+D^{6}+D^{5}+D^{4}+D^{3}+D+1] gCRC24A(D)=[D24+D23+D18+D17+D14+D11+D10+D7+D6+D5+D4+D3+D+1]
  • 对于 L = 24 L=24 L=24的CRC长度, g C R C 24 B ( D ) = [ D 24 + D 23 + D 6 + D 5 + D + 1 ] g_{CRC24B}(D) = [D^{24}+D^{23}+D^{6}+D^{5}+D+1] gCRC24B(D)=[D24+D23+D6+D5+D+1]
  • 对于 L = 24 L=24 L=24的CRC长度, g C R C 24 C ( D ) = [ D 24 + D 23 + D 21 + D 20 + D 17 + D 15 + D 13 + D 12 + D 8 + D 4 + D 2 + D + 1 ] g_{CRC24C}(D) = [D^{24}+D^{23}+D^{21}+D^{20}+D^{17}+D^{15}+D^{13}+D^{12}+D^{8}+D^{4}+D^{2}+D+1] gCRC24C(D)=[D24+D23+D21+D20+D17+D15+D13+D12+D8+D4+D2+D+1]
  • 对于 L = 16 L=16 L=16的CRC长度, g C R C 16 ( D ) = [ D 16 + D 12 + D 5 + 1 ] g_{CRC16}(D) = [D^{16}+D^{12}+D^{5}+1] gCRC16(D)=[D16+D12+D5+1]
  • 对于 L = 11 L=11 L=11的CRC长度, g C R C 11 ( D ) = [ D 11 + D 10 + D 9 + D 5 + 1 ] g_{CRC11}(D) = [D^{11}+D^{10}+D^{9}+D^{5}+1] gCRC11(D)=[D11+D10+D9+D5+1]
  • 对于 L = 6 L=6 L=6的CRC长度, g C R C 6 ( D ) = [ D 6 + D 5 + 1 ] g_{CRC6}(D) = [D^{6}+D^{5}+1] gCRC6(D)=[D6+D5+1]

编码以系统形式执行,这意味着在GF(2)中,多项式:
a 0 D A + L − 1 + a 1 D A + L − 2 + . . . + a A − 1 D L + p 0 D L − 1 + p 1 D L − 2 + . . . + p L − 2 D 1 + p L − 1 a_0D^{A+L-1}+a_1D^{A+L-2}+...+a_{A-1}D^{L}+p_0D^{L-1}+p_1D^{L-2}+...+p_{L-2}D^{1}+p_{L-1} a0DA+L1+a1DA+L2+...+aA1DL+p0DL1+p1DL2+...+pL2D1+pL1
除以相应的CRC生成多项式时,产生等于0的余数。

完成CRC校验位添加的比特可以表示为 b 0 , b 1 , b 2 , . . . , b B − 1 b_0,b_1,b_2,...,b_{B-1} b0,b1,b2,...,bB1,其中 B = A + L B=A+L B=A+L。其中 a k a_k ak b k b_k bk之间的关系为:
k = 0 , 1 , 2 , . . . , A − 1 k = 0,1,2,...,A-1 k=0,1,2,...,A1时, b k = a k b_k = a_k bk=ak
k = A , A + 1 , A + 2 , . . . , A + L − 1 k = A,A+1,A+2,...,A+L-1 k=A,A+1,A+2,...,A+L1时, b k = p k − A b_k = p_{k-A} bk=pkA

CRC (循环冗余校验) 是一种常用的错误检测方法。 在计算 CRC 时,需要使用特定的算法将输入数据转化为校验码。本例中我们将讨论如何在 Excel 中计算 CRC。 首先,我们需要了解 CRC 的算法。 CRC 算法使用多项式除法来计算校验码。我们可以使用 Excel 的功能来进行多项式除法。 首先,将要计算 CRC 校验码的数据输入到 Excel 的一个单独的列中。例如,我们输入了一串进制数据:"110101010"。然后,在另一个单元格中,输入 CRC 多项式的进制表示。例如,CRC-8 使用的多项式为 "100110001"。请注意,多项式应为进制形式。 接下来,我们使用 Excel 的 "XOR" 函数来执行多项式除法。我们将使用多项式的系数与数据进行异或操作,并按照多项式的次数进行移位运算。然后,重复此过程直到完成除法运算。 在 Excel 中,我们可以通过复制粘贴公式来快速进行多项式除法的计算。我们先将多项式的系数和数据进行异或运算,并将结果写入一个单元格。然后,我们将多项式向左移动 1 位,并重复上述步骤,直到所有位都进行了 XOR 运算。 最后,我们将得到的校验码写入 Excel 中的一个单元格。校验码是进行了多项式除法后剩余的数据。 请注意,上述步骤仅适用于 CRC 的基本实现。对于特定的 CRC 算法,可能需要进行一些额外的步骤。此外,CRC 计算的精确性取决于输入的数据和所选择的 CRC 多项式。 总之,在 Excel 中计算 CRC 校验码需要理解 CRC 算法,并使用 Excel 功能进行多项式除法的计算。希望以上解答对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值