CRC校验码的检错性能(三)——基于对偶码重量分布计算漏检概率

CRC(Cyclic Redundancy Check,循环冗余校验),是一种数字编码技术,广泛应用于数字通信的传输差错检测,或数字存储的数据完整性检测,最早由W. Wesley Peterson于1961年发表的论文《Cyclic Codes for Error Detection》中提出。

事实上,对于差错检测而言,几乎不太可能做到检出所有(100%)的错误,意即检测手段给出“无错”结论时,这一结论本身很难做到100%的置信度。因此,人们评价一种检错手段的性能时,通常真正关心的是“错误已经发生,但未能发现”的概率(本文称之为漏检概率Pud,Probability of Undetected Error),显然,这个概率越小越好!

本文是作者关于“CRC校验码检错性能”的系列文章之三(注:文中公式较多,若显示不全,请刷新页面重试!另:三篇连读,且电脑版阅读体验更佳。):

CRC校验码的检错性能(一)—— 检出(或漏检)比例

CRC校验码的检错性能(二)—— 漏检概率的评估和计算(未完工。暂用作者在知乎的回答代替。敬请期待正式版);

CRC校验码的检错性能(三)——基于对偶码重量分布计算漏检概率

本文在充分理解CRC校验码及其对偶码生成矩阵原理的基础之上,手工计算出CRC-4/SAE J2716的对偶码在码字长度\(n=16\)时的重量分布,引用Koopman教授公布的该校验码对应的原码重量分布数据,并利用Wolfram的在线计算工具完成了MacWilliams恒等式的验算。

MacWilliams恒等式揭示了线性分组码的原码和对偶码重量分布之间的关系,本文详细推导了基于CRC校验码之对偶码重量分布计算其漏检概率的公式。进一步分析了\( 0^{0} \)在数学上的争议性定义对漏检概率计算的影响,并通过对公式的简单变换而规避该影响。

最后,本文分别基于原码和对偶码的重量分布,完成了CRC-4/SAE J2716在码字长度\(n=16\),\( 10^{-6} \sim 0.5 \)误比特范围内的漏检概率计算。计算结果表明,在低误比特率条件下,基于对偶码重量分布计算CRC校验码漏检概率时,对计算的数值精度有着较高的要求。本文还更一般地基于对偶码完成了\(n=12/16/20\)时,所有的8个CRC-4的漏检概率计算。

1. CRC校验码及其对偶码

CRC校验码是一种二进制线性分组码,信息位长度\( k \),校验位长度\( r \),码字长度\( n=k+r \) 的CRC校验码,可通过一个\( r \)次的生成多项式\( G(x)=g_{r}x^{r}+\cdots +g_{1}x^{1}+g_{0}x^{0} \)构造,选定\( G(x) \)后,该线性分组码的典型生成矩阵\( G\left [ I_k \: P \right ] \)亦随之确定:

典型生成矩阵是一个\( k \)行\( n \)列的矩阵,每一行都是独立的(不可由其它任意行的线性组合获得),可用于构造该线性分组码的\( 2^{k}-1 \)个非0码字。线性分组码的典型生成矩阵具有如下性质

  • 交换典型生成矩阵的不改变生成的码字也不改变生成的码字集合之检错性能
  • 交换典型生成矩阵的会改变生成的码字生成的码字集合的重量分布不变,故整个码组对随机比特差错的检测性能保持不变

每个线性分组码\( C(n,k) \)都有唯一一个与之对应的对偶码\( C^{\perp }(n,n-k) \),对偶码的信息位长度为\( r \),校验位长度为\( k \),码字长度为\( n=k+r \),码字集合中共\( 2^{r} \)个合法码字。对偶码的典型生成矩阵\( G^{\perp}\left [ I_r \: P^T \right ] \)可由原CRC校验码的典型生成矩阵\( G\left [ I_k \: P \right ] \)变换获得(如下图所示):

  • 在典型生成矩阵\( G\left [ I_k \: P \right ] \)的\( k \)行\( r \)列校验位矩阵下方添加一个\( r \)行\( r \)列的单位矩阵,构成一个\( n \)行\( r \)列的矩阵\( H \);
  • 将矩阵\( H \)顺时针旋转90°即为对偶码的典型生成矩阵\( G^{\perp}\left [ I_r \: P^T \right ] \)。

备注:本文构造的对偶码生成矩阵并不完全符合编码理论教材的数学定义与标准的对偶码生成矩阵具有完全一致的重量分布,故本文不再作进一步的矩阵变换。

以CRC-4/SAE J2716 SENT为例,其生成多项式\( G(x)=x^{4}+x^{3}+x^{2}+1 \),校验位长度\( r=4 \) ,信息位长度\( k=12 \)时,码字长度\( n=16 \),其典型生成矩阵如下图:

该CRC-4校验码之对偶码的典型生成矩阵、15个非0码字、各码字的汉明重量(标注于码字右侧),如下图:

可知该CRC-4校验码之对偶码的16个合法码字,以及它们的汉明重量:

  • 1个汉明重量为 0 的码字:0x0000;
  • 2个汉明重量为 6 的码字:0x8A34、0xC468;
  • 4个汉明重量为 7 的码字:0x268D、0x1D1A、0x68D1、0x5346;
  • 2个汉明重量为 8 的码字:0x4E5C、0xB1A3;
  • 4个汉明重量为 9 的码字:0xACB9、0xE2E5、0x972E、0xD972;
  • 2个汉明重量为10的码字:0x3B97、0x75CB;
  • 1个汉明重量为16的码字:0xFFFF。

2. 麦克威廉姆斯(MacWilliams,马克威伦)恒等式

设\( A_i \)是二进制线性分组码\( C(n,k) \)的\( 2^k \)个有效码字集合中重量为\( i \)的码字数目(数量),则集合\( A=\left \{ A_0,A_1,\cdots ,A_n  \right \} \)称为该分组码的重量分布。也可以把码\( C \)的重量分布写成多项式形式:

\[ A(x)=A_0x^0+A_1x^1+ \cdots + A_nx^n =\sum_{i=0}^{n}A_ix^i \]

称\( A(x) \)是二进制线性分组码\( C(n,k,d) \)的重量估值算子(简称重量算子),或称为重量枚举多项式。令\( C^{\perp }(n,n-k,d') \)为码\( C \)之对偶码,则\( C^{\perp } \)的\( 2^{n-k} \)个有效码字集合的重量枚举多项式\( B(x) \)可写为:

\[ B(x)=B_0x^0+B_1x^1+ \cdots + B_nx^n =\sum_{i=0}^{n}B_ix^i \]

二进制线性分组码\( C \)及其对偶码\( C^{\perp} \)的码字重量分布有这样一些性质

  • 零重(全0)码字的数量恒为一,即\( A_0=B_0 \equiv 1 \);
  • 全重(全1)码字的数量为0或1,即\( A_n=0或1 \),\( B_n=0或1 \);
  • 全重(全1)码字的数量为1(\( A_n=1 \))时,重量分布是对称的,即\( A_i=A_{n-i},0 \leqslant i \leqslant n \),
  • 码重数目之和等于码字总数,即\( \sum_{i=0}^{n}A_i=2^k \),\( \sum_{i=0}^{n}B_i=2^{n-k} \);
  • 码字重量或全是偶数,或者奇、偶重量的码字数目相等;
  • 线性分组码的码字重量全为偶数时,其对偶码有(且只有)一个全1码字;线性分组码奇、偶重量的码字数目相等时,其对偶码无全1码字;
  • 线性分组码有(且只有)一个全1码字时,其对偶码的码字重量全为偶数;线性分组码无全1码字时,其对偶码奇、偶重量的码字数目相等;

线性分组码及其对偶码的重量枚举多项式\( A(x) \)与\( B(x) \)之间有一个重要的恒等式——MacWilliams恒等式(注:式中的计算基于整数域而非GF(2)域):

\[ \begin{aligned} 
A(x)&=\sum_{i=0}^{n}A_ix^i= \frac{1}{2^{n-k}} (1+x)^{n} \sum_{i=0}^{n}B_i(\frac{1-x}{1+x})^i = \frac{1}{2^{n-k}} \sum_{i=0}^{n}B_i(1-x)^i(1+x)^{n-i} \\ \\
B(x)&= \sum_{i=0}^{n}B_ix^i= \frac{1}{2^k} (1+x)^{n} \sum_{i=0}^{n}A_i(\frac{1-x}{1+x})^i = \frac{1}{2^k} \sum_{i=0}^{n}A_i(1-x)^i(1+x)^{n-i}
\end{aligned} \]

MacWilliams恒等式的重要价值在于,为了计算一个\( (n,k) \)二进制线性码的重量枚举多项式,通常需要了解所有\( 2^k \)个码字的重量。显然这是一项艰巨的任务,除非\( k \)的取值相对较小。但是如果\( k \)的值非常大而\( (n-k) \)的值很小,就可以先计算其对偶码\( C^{\perp } \)的重量枚举多项式,由此再计算出\( C \)的重量枚举多项式。

以CRC-4/SAE J2716 SENT为例,其生成多项式\( G(x)=x^{4}+x^{3}+x^{2}+1 \),校验位长度\( r=4 \) ,信息位长度\( k=12 \)时,码字长度\( n=16 \),直接计算该CRC校验码的重量分布需要枚举4096个码字的重量\(^{[7]}\)(本文通过查询Philip Koopman的网站数据获得),而其对偶码(仅16个码字)的重量分布可手工计算或利用EXCEL编制简单的工具完成。该CRC校验码原码\(^{[7]}\)及其对偶码的重量分布如下表:

i

Ai

Bi

i

Ai

Bi

0

1

1

9

0

4

1

0

0

10

1017

2

2

11

0

11

0

0

3

0

0

12

219

0

4

233

0

13

0

0

5

0

0

14

17

0

6

1003

2

15

0

0

7

0

4

16

0

1

8

1595

2

依据上表分别写出此CRC校验码及其对偶码的重量枚举多项式:

\[ \begin{aligned} 
A(x)&=17x^{14}+219x^{12}+1017x^{10}+1595x^{8}+1003x^{6}+233x^{4}+11x^{2}+1x^{0} \\
B(x)&= 1x^{16}+2x^{10}+4x^{9}+2x^{8}+4x^{7}+2x^{6}+1x^{0}
\end{aligned} \]

利用MacWilliams恒等式基于\( B(x) \)求\( A(x) \)的验证,有(式中\( \color{red}{i} \)按升序排列):

\[ \begin{aligned}
A(x) &= \frac{1}{2^r} \sum_{i=0}^{n} B_i (1-x)^i (1+x)^{n-i} \\
       &= \frac{1}{16}[(1+x)^{16}+2(1-x)^{\color{red}{6}}(1+x)^{10}+4(1-x)^{\color{red}{7}}(1+x)^{9}+2(1-x)^{\color{red}{8}}(1+x)^8 \\
       & +4(1-x)^{\color{red}{9}}(1+x)^{7}+2(1-x)^{\color{red}{10}}(1+x)^{6}+(1-x)^{\color{red}{16}}]
\end{aligned} \]

上式基于手工计算过于繁琐,本文将其输入Wolfram网站的在线计算工具验证,结果正确,如下图:

利用MacWilliams恒等式基于\( A(x) \)求\( B(x) \)的验证,有(式中\( \color{red}{i} \)按升序排列):

\[ \begin{aligned}
B(x) &= \frac{1}{2^k} \sum_{i=0}^{n} A_i (1-x)^i (1+x)^{n-i} \\
        &= \frac{1}{4096}[(1+x)^{16}+11(1-x)^{\color{red}{2}}(1+x)^{14}+233(1-x)^{\color{red}{4}}(1+x)^{12}+1003(1-x)^{\color{red}{6}}(1+x)^{10} \\
        &+1595(1-x)^{\color{red}{8}}(1+x)^8+1017(1-x)^{\color{red}{10}}(1+x)^{6}+219(1-x)^{\color{red}{12}}(1+x)^{4}+17(1-x)^{\color{red}{14}}(1+x)^{2}]
\end{aligned} \]

将上式输入Wolfram网站的在线计算工具验证,结果正确,如下图:

备注本文不是对MacWilliams恒等式的证明!本文仅通过实际操作来理解MacWilliams恒等式

3. 基于对偶码重量分布的CRC校验码漏检概率计算公式

从前文可以看到,即便是对于12个信息位,4个校验位这样极小规模的CRC-4校验码,欲知其漏检概率,我们至少需要完成以下计算:

  • 依据生成多项式及CRC校验码计算方法,计算出该码组的4096个合法码字;
  • 计算出4096个码字的汉明重量,枚举出不同汉明重量值的数量;
  • 计算出每组汉明重量在给定误比特率下对应的概率;
  • 汉明重量≥1的概率之和即为本组CRC校验码在给定的误比特率下的漏检概率。

上述计算没有原理(或理解)上的难度,就是计算量特别大,几乎只能通过编制特定的计算机程序才能完成。而随着信息位长度的增加,很快(比如100-bits)令得计算机穷举法也成为一个理论,不再具备实际操作的可能。

我们已经知道,32位及以下的CRC校验码,通过计算机穷举计算其对偶码的重量分布 是具备工程实操性的。自然可以想到利用MacWilliams恒等式计算该CRC校验码的重量分布 A,从而计算出它的漏检概率\( P_{ud} \)。事实上,我们可以基于对偶码的重量分布,利用下式直接计算这个CRC校验码的漏检概率:

\[ \begin{aligned} 
P_{ud} &=\left [ \frac{1}{2^r} \sum_{i=\mathbf{\color{red}{0}}}^{n}B_i(1-2p)^i \right ] - (1-p)^n \\
            &=\left [ \frac{1}{2^r} \sum_{i=\mathbf{\color{blue}{1}}}^{n}B_i(1-2p)^i \right ] + \color{red}{2^{-r}} - (1-p)^n
\end{aligned} \]

证明过程如下,已知CRC校验码在误比特率\(p\)的BSC信道下,其漏检概率的计算公式为:

\[ \begin{aligned}
P_{ud} &= \sum_{i=\mathbf{\color{blue}{1}}}^{n} A_i p^i (1-p)^{n-i}  \\
            &= \left [ \sum_{i=\mathbf{\color{red}{0}}}^{n} A_i p^i (1-p)^{n-i} \right ] - 1\cdot p^0 (1-p)^{n-0} \\
            &= (1-p)^n \left [ \sum_{i=\mathbf{\color{red}{0}}}^{n} A_i (\frac{p}{1-p})^i \right ] - (1-p)^n
\end{aligned} \]

令\( x=\frac{p}{1-p} \),则\( \frac{1-x}{1+x}=1-2p \),\( 1+x=\frac{1}{1-p} \),代入MacWilliams恒等式,有:

\[ \begin{aligned} 
\sum_{i=0}^{n}A_ix^i &= \frac{1}{2^r}(1+x)^n\sum_{i=0}^{n}B_i(\frac{1-x}{1+x})^i  \\
\sum_{i=0}^{n}A_i(\frac{p}{1-p})^i &= \frac{1}{2^r} (\frac{1}{1-p})^n \sum_{i=0}^{n}B_i(1-2p)^i
\end{aligned} \]

将换元后的MacWilliams恒等式代入\( P_{ud} \) 的计算式,可得到基于对偶码的重量分布计算原CRC校验码漏检概率的公式:

\[ \begin{aligned} 
P_{ud} &= (1-p)^n\left [ \frac{1}{2^r}(\frac{1}{1-p})^n\sum_{i=0}^{n}B_i(1-2p)^i \right ] - (1-p)^n  \\
            &= \left [ \frac{1}{2^r}\sum_{i=0}^{n}B_i(1-2p)^i \right ] - (1-p)^n
\end{aligned} \]

若将CRC校验码漏检概率的两种计算方法写为一个计算式,有:

\[ P_{ud} = \sum_{i=\mathbf{\color{blue}{1}}}^{n}A_ip^i(1-p)^{n-i}
            = \left [ \frac{1}{2^r}\sum_{i=\mathbf{\color{red}{0}}}^{n}B_i(1-2p)^i \right ] - (1-p)^n \]

上式须在\( p\in [0,1] \)区间内均有意义:

1) \( p=0 \)时,表明无比特错误,因无错误发生,自然漏检概率\( P_{ud}=0 \),且错误图样集合有且仅有一个代表无错的全0码字,有\( A_i=0, i>0 \),

\[ P_{ud}=\sum_{i=1}^{n}A_ip^i(1-p)^{n-i}
           =\sum_{i=1}^{n}0\times 0^i \times 1^{n-i} \equiv 0 \]

\[或\]

\[ P_{ud}= \left [ \frac{1}{2^r}\sum_{i=0}^{n}B_i(1-2p)^i \right ] - (1-p)^n
           = \left [ \frac{1}{2^r}\sum_{i=0}^{n}B_i \times  1^i \right ] - 1^n
           = \frac{1}{2^r} \times 2^r - 1 \equiv 0 \]

2) \( p=1 \)时,表明每个比特都是错误的,错误图样集合有且仅有一个全1码字,有\( A_i=0, i<n \)。当全1码字是本码组有效码字时,\(A_n=1\),仅有的一个错误图样不能检出,漏检概率\( P_{ud}=1 \),且对偶码全为偶重码字;当全1码字是本码组无效码字时,\(A_n=0\),仅有的一个错误图样全部检出,漏检概率\( P_{ud}=0 \) ,且对偶码的偶重码字和奇重码字数量相等。

\[ P_{ud}=\sum_{i=1}^{ \color{blue}{n} }A_ip^i(1-p)^{n-i}
           =\sum_{i=1}^{ \color{blue}{n-1} } 0\times 1^i \times 0^{n-i} + A_n \times 1^n \times \mathbf{\color{red}{0^0}} =\left\{\begin{matrix}
1, 当 A_n=1 & \\ 
0, 当 A_n=0 & 
\end{matrix}\right. \]

\[或\]

\[ P_{ud}= \left [ \frac{1}{2^r}\sum_{i=0}^{n}B_i(1-2p)^i \right ] - (1-p)^n
           = \left [ \frac{1}{2^r}\sum_{i=0}^{n}B_i \times (-1)^i \right ] - 0^n
           = \left\{\begin{matrix}
1, & 当B_i全为偶数时  \\ 
0, & 当B_i奇偶数量相等时 
\end{matrix}\right.  \]

3) \( p=1-p=0.5 \)时,\( P_{ud} = 2^{-(n-k)} - 2^{-n} = 2^{-r} - 2^{-n} \)。

\[ P_{ud}=\sum_{i=1}^{n}A_ip^i(1-p)^{n-i}
           = \sum_{i=1}^{n}A_i (\frac{1}{2})^i (\frac{1}{2})^{n-i}
           = (\frac{1}{2})^n\sum_{i=1}^{n}A_i
           = (\frac{1}{2})^n(2^k-1)
           = 2^{-(n-k)} - 2^{-n} \]

\[或\]

\[ \begin{aligned} P_{ud} &= \left [ \frac{1}{2^r}\sum_{i=0}^{n}B_i(1-2p)^i \right ] - (1-p)^n
              = \left [ \frac{1}{2^r}\sum_{i=0}^{n}B_i \times  0^i \right ] - (\frac{1}{2})^n
              = \frac{1}{2^r} (B_0 \times 0^0 + \sum_{i=1}^{n}B_i \times 0^i) - 2^{-n} \\
           & = 2^{-r} \times \mathbf{\color{red}{0^0}} - 2^{-n} 
              = 2^{-r} - 2^{-n} \end{aligned} \]

从\( p\in [0,1] \)全概率区间的讨论来看, CRC校验码漏检概率\( P_{ud} \)的两种计算方法,都存在须将\( 0^0 \)定义为1的计算问题,而\( 0^0 \)的定义在不同应用领域是有争议的,不同软件(或编程语言)也可能有不同的定义,如下图所示(右图为EXCEL的定义):

为避免\( 0^0 \)可能导致的程序计算错误,可将漏检概率的计算式改写为

\[ \begin{aligned}
P_{ud} &= \left [ \sum_{i=1}^{\mathbf{\color{red}{n-1}}}A_i p^i (1-p)^{\mathbf{\color{red}{n-i}}} \right ] + A_n p^n \\
            &= \left [ \frac{1}{2^r} \sum_{i=1}^{n}B_i (1-2p)^i \right ] + 2^{-r} - (1-p)^n
\end{aligned} \]

4. 计算示例

4.1 CRC-4/SAE J2716的漏检概率计算

以CRC-4/SAE J2716 SENT为例,其生成多项式\( G(x)=x^{4}+x^{3}+x^{2}+1 \),校验位长度\( r=4 \),信息位长度\( k=12 \),码字长度\( n=16 \)时,分别用两种方法计算该CRC校验码的漏检概率。从前文已知该校验码及其对偶码的重量枚举多项如下:

\[ \begin{aligned} 
A(x)&=17x^{14}+219x^{12}+1017x^{10}+1595x^{8}+1003x^{6}+233x^{4}+11x^{2}+1x^{0} \\
B(x)&= 1x^{16}+2x^{10}+4x^{9}+2x^{8}+4x^{7}+2x^{6}+1x^{0}
\end{aligned} \]

设信道的误比特率为\(p\),漏检概率如下计算:

\[ \begin{aligned} 
P_{ud_1}&=17p^{14}(1-p)^{2}+219p^{12}(1-p)^{4}+1017p^{10}(1-p)^{6}+1595p^{8}(1-p)^{8}+1003p^{6}(1-p)^{10} \\
          &+233p^{4}(1-p)^{12}+11p^{2}(1-p)^{14}+1p^{0}(1-p)^{16} \\ \\
P_{ud_2}&= 2^{-4} \times [(1-2p)^{16}+2(1-2p)^{10}+4(1-2p)^{9}+2(1-2p)^{8}+4(1-2p)^{7}+2(1-2p)^{6}] + 2^{-4} - (1-p)^{16}
\end{aligned} \]

例如,\( p=10^{-6} \)时,计算可得漏检概率\( \approx 1.1\times 10^{-11} \),更多的计算结果如下表:

值得注意的是,上表通过EXCEL计算获得。可以看到,两种方法计算的漏检概率并不完全相等,有着一个微小的偏差(见表格第5列)。两种计算方法的计算公式本身是精确的,二者计算结果的偏差由EXCEL的数值计算精度导致\(^{[8]}\),原理上来说,基于CRC校验码重量分布计算所得的\( P_{ud-1} \)在数值上的精度相对更高。

一般地,绘制本计算示例在\( 10^{-6}\sim0.5 \)误比特范围内,漏检概率曲线如下图:

其中:

  • 横轴为误比特率,纵轴为漏检概率,二者都是对数坐标;
  • bound曲线(虚线)为CRC校验码漏检概率所谓的\( 1/2^{r} \)上界;
  • Pud_1为基于CRC校验码的原码重量分布计算所得的漏检概率;
  • Pud_2为基于CRC校验码的对偶码重量分布计算所得的漏检概率。

码字长度\( n=16 \)时,CRC-4/SAE J2716的“漏检概率 vs 误比特率曲线”反映出:

  • 即便在\(p=0.01\)的极高误比特率BSC信道中,CRC-4/SAE J2716的漏检概率也远低于CRC-4所谓的\( 1/2^{r} \)上界(大约是上界值的1.5%);
  • 当\(p \leqslant 0.01\)时,误比特率每降低10倍,漏检概率降低100倍。

4.2 n =12/16/20时,所有CRC-4的漏检概率

当限定CRC校验位长度r =4时,所有可能的CRC-4生成多项式共8个(为多项式的周期;未列出因式的多项式表示不可约,若该4次不可约多项式的周期\(e=2^4-1=15\)则为本原多项式):

\[ \begin{aligned} 
POL=0b10001=0x11,e=\:4,G(x) &=x^4+1=(x+1)^4 \\
POL=0b11111=0x1F, e=\:5,G(x) &=x^4+x^3+x^2+x^1+1 \\
POL=0b10101=0x15,e=\:6,G(x) &=x^4+x^2+1=(x^2+x+1)^2 \\
POL=0b11011=0x1B,e=\:6,G(x) &=x^4+x^3+x^1+1=(x+1)^2(x^2+x+1) \\
POL=0b10111=0x17,e=\:7,G(x) &=x^4+x^2+x^1+1=(x+1)(x^3+x^2+1) \\
POL=0b11101=0x1D,e=\:7,G(x) &=x^4+x^3+x^2+1=(x+1)(x^3+x+1),CRC-4/SAE \: J2716 \\
POL=0b10011=0x13,e=15,G(x) &=x^4+x^1+1,CRC-4/ITU \\
POL=0b11001=0x19,e=15,G(x) &=x^4+x^3+1 \\
\end{aligned} \]

其中,0b10011/0b11001、0b10111/0b11101互为反多项式;0b10001、0b10101、0b11011、0b11111是自反多项式。用作CRC校验码的生成多项式时,多项式与其反多项式的检错能力一致。因此,对全部的8个CRC-4生成多项式作对比分析时,我们实际只需分析其中的6个。

CRC-4/ITU生成多项式(POL=0x13)的性质可知:

  • CRC-4/ITU选择的是本原多项式,生成多项式的汉明重量为3(奇数),不能确保检测出所有的奇数个比特的随机错误;
  • 生成多项式的周期e = 15,在码字长度n ≤ 15时,可检测出所有 ≤ 2比特的随机错误,即码字集合的最小汉明距离为3。这在码字较短的低误比特率应用中是一个显著优势,后文的漏检概率计算反映出,POL=0x13(及其反多项式0x19)的检错性能最佳。

CRC-4/SAE J2716生成多项式(POL=0x1D)的性质可知:

  • CRC-4/SAE J2716选择的生成多项式形如\( (x+1)G_1(x) \),生成多项式的汉明重量为4(偶数),可确保检测出所有的奇数个比特的随机错误;
  • 生成多项式的周期e = 7,在码字长度n ≤ 7时,可检测出所有 ≤ 3比特的随机错误,即码字集合的最小汉明距离为4,这看似是一个优势,但因多项式的周期太小,仅能在信息位长度 k ≤ 3时,方能发挥此优势,此条件下的编码效率过低,极大地限制了它在工程应用中的实际性能表现;
  • POL=0x1D、0x17、0x11、0x1B生成的码字集合全为偶重码,可知它们的对偶码包含全1码字,且有着对称的重量分布。

参考前文对偶码重量分布的枚举方法,码字长度 n = 12 时,全部的8个CRC-4校验码的对偶码重量分布如下表:

信息位长度k =8,码字长度n =12,CRC-4对偶码重量分布(空格表示0)

i

0

1

2

3

4

5

6

7

8

9

10

11

12

0x11

1

4

6

4

1

0x13

1

2

6

6

1

0x15

1

6

9

0x17

1

1

4

4

4

1

1

0x1B

1

3

8

3

1

0x1F

1

3

6

1

2

3

码字长度\(n=12\),误比特率\(10^{-6}\leqslant p \leqslant 0.5\),基于对偶码的重量分布,计算各CRC-4的漏检概率曲线如下图:

码字长度 n = 16 时,全部的8个CRC-4校验码的对偶码重量分布如下表:

信息位长度k =12,码字长度n =16,CRC-4对偶码重量分布(空格表示0)

i

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

0x11

1

4

6

4

1

0x13

1

7

8

0x15

1

4

2

4

4

1

0x17

1

2

4

2

4

2

1

0x1B

1

2

1

2

4

2

1

2

1

0x1F

1

6

4

1

4

码字长度\(n=16\),误比特率\(10^{-6}\leqslant p \leqslant 0.5\),基于对偶码的重量分布,计算各CRC-4的漏检概率曲线如下图:

码字长度 n = 20 时,全部的8个CRC-4校验码的对偶码重量分布如下表:

信息位长度k =16,码字长度n =20,CRC-4对偶码重量分布(空格表示0)

i

0

1~4

5

6

7

8

9

10

11

12

13

14

15

16

17~19

20

0x11

1

4

6

4

1

0x13

1

2

4

6

3

0x15

1

2

4

1

4

4

0x17

1

3

4

4

3

1

0x1B

1

1

2

2

4

2

2

1

1

0x1F

1

10

5

码字长度\(n=20\),误比特率\(10^{-6}\leqslant p \leqslant 0.5\),基于对偶码的重量分布,计算各CRC-4的漏检概率曲线如下图:

综合来看,在码字长度\( n\leqslant 20 \)时,8个CRC-4多项式中:

  • CRC-4/ITU,POL = 0x13和0x19互为反多项式,具有最佳的检错性能;
  • CRC-4/SAE J2716,POL = 0x1D和0x17互为反多项式,二者的检错性能低于多项式POL = 0x13;
  • POL = 0x15和0x1B的重量分布不同,但检错性能非常接近,二者性能略低于POL = 0x17;
  • POL = 0x11在8个CRC-4多项式中的检错性能最差。POL = 0x1F略优于0x11,但低于0x15。

4.3 POL=0x13/0x1D的对偶码重量分布

CRC-4在传感器芯片领域有着广泛的应用,厂商通常选择CRC-4/ITU或CRC-4 SAE J2716的生成多项式,特给出在信息位长度 k ≤ 32时,这两个多项式的对偶码的码字重量数据。

信息位长度 k ≤ 32 时,CRC-4/ITU(POL=0x13)的对偶码重量分布如图(表格中,信息位长度 k 对应列的数据,即为对偶码在该长度下的16个码字各自的汉明重量):

信息位长度 k ≤ 32 时,CRC-4/SAE J2716(POL=0x1D)的对偶码重量分布如图(表格中,信息位长度 对应列的数据,即为对偶码在该长度下的16个码字各自的汉明重量):

5. 总结

本文在充分理解CRC校验码及其对偶码生成矩阵原理的基础之上,手工计算出CRC-4/SAE J2716的对偶码在码字长度\(n=16\)时的重量分布,引用Koopman教授公布的该校验码对应的原码重量分布数据,并利用Wolfram的在线计算工具完成了MacWilliams恒等式的验算。

MacWilliams恒等式揭示了线性分组码的原码和对偶码重量分布之间的关系,本文详细推导了基于CRC校验码之对偶码重量分布计算其漏检概率的公式。进一步分析了\( 0^{0} \)在数学上的争议性定义对漏检概率计算的影响,并通过对公式的简单变换而规避该影响。

最后,本文分别基于原码和对偶码的重量分布,完成了CRC-4/SAE J2716在码字长度\(n=16\),\( 10^{-6} \sim 0.5 \)误比特范围内的漏检概率计算。计算结果表明,在低误比特率条件下,基于对偶码重量分布计算CRC校验码漏检概率时,对计算的数值精度有着较高的要求。本文还更一般地基于对偶码完成了\(n=12/16/20\)时,所有的8个CRC-4的漏检概率计算。

6. 参考文献

  1. Robert J.McEliece. 信息论与编码理论[M]. 第2版. 北京:电子工业出版社, 2004.
  2. 傅祖芸. 信息论—基础理论与应用[M]. 第4版. 北京:电子工业出版社, 2015.
  3. 刘景伟. 信息论与编码理论基础课件第3~5章[EB/OL]. 西安电子科技大学.
  4. 苗付友. 信息论与编码技术课件第7章[EB/OL]. 中国科学技术大学.
  5. 陆以勤. 现代编码理论与技术课件第3章[EB/OL]. 华南理工大学.
  6. 周武旸. 编码理论课件第1章[EB/OL]. 中国科技大学.
  7. Philip Koopman. CRC-4/SAE J2716的重量分布[EB/OL]. Carnegie Mellon University
  8. Microsoft. 在Excel中,浮点运算得到的结果可能不准确[EB/OL].

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值