• Github 中文镜像
Sign inSign up
Watch966
Star102.4k
Fork61.8k
Branch: master
Switch branches/tags
Branches
Tags
  • master
  •  
K / 循环冗余码(CRC)在嵌入式网络中的多项式选择.md
移动浏览 Clone
加载中...
到移动设备上浏览
2338 lines 681.50 kB
First commit on 25 Nov 2022

    注意: 这是一篇机器翻译的存档,用于阅读原文时对比理解,不是直接拿来阅读的。

    本论文的中文说明请看:CRC 循环冗余算法最佳长度的选择

    嵌入式网络的循环冗余码 (CRC) 多项式选择

    抽象的

    循环冗余码 (CRC) 提供了第一行

    防御许多网络中的数据损坏。
    不幸的是,许多常用的 CRC 多项式
    提供比
    他们可能。 详尽的探索表明,大多数
    先前发布的 CRC 多项式要么较差
    替代品或只是特定的好选择
    消息长度。 不幸的是这些缺点和
    局限性似乎常常被忽视。

    这张纸

    描述了嵌入式的多项式选择过程
    网络应用,建议一套不错的
    一般用途

    多项式。

    一套35个新

    除了之前发布的 13 个多项式
    多项式为 3 到 16 位提供了良好的性能
    数据字长高达 2048 位的 CRC。

    一、简介

    循环冗余码 (CRC) 是常用的

    用于嵌入式网络和其他应用程序中的错误检测
    阳离子。 但许多应用程序采用 CRC 提供
    错误检测能力远低于他们可能达到的水平
    对于给定数量的 CRC 位。 这主要是因为
    几乎没有公布的指南和较少的定量数据
    权衡决策的基础。 帮助改善
    这种情况,本文提出“好”的通用目的
    用于错误检测应用的 CRC,包括
    许多当前和未来的嵌入式网络协议和
    其他用途的数据字长度可达 2048 位。

    虽然在标准中可以找到各种 CRC 设计

    和民间传说,其中大部分都远非最适合
    在嵌入式网络中发现的短消息。 对于嵌入-
    ded 网络,感兴趣的属性通常是
    汉明距离 (HD),这是可能的最小值
    必须注入 mes- 的位反转数
    sage 会创建一个该 mes- 无法检测到的错误
    sage 的基于 CRC 的帧校验序列。 例如,
    如果给定网络的 CRC 多项式的 HD=6,则
    表示没有可能的组合 1-, 2-, 3-, 4-,
    也不是 5 位错误(其中位错误是位的反转
    值),这可能会导致未检测到的错误,但有

    至少一个 6 位的组合,当作为一个集合被破坏时
    在一条消息中,该 CRC 无法检测到。 一个额外的
    感兴趣的 tional 属性是突发错误检测能力
    ity,但我们将讨论的所有代码都可以检测突发错误
    到 CRC 宽度的大小。 其他可能的评估
    标准存在,例如单向误码检测
    (取决于数据值)和高噪声检测。
    可惜好像没有什么权威的
    嵌入式网络中故障的表征。 我们的在-
    与行业的互动表明 HD 用于随机指标
    二进制对称通道上的悬垂错误通常是
    嵌入式网络CRC de-考虑的主要因素
    符号,因此是我们在本文中使用的指标。

    经过一系列针对行业应用的协议评估

    出现问题的阳离子是否会
    有可能达到给定的汉明距离 (HD)
    对于给定的 CRC 大小,我们决定探索设计
    CRC 大小、消息长度和可达到的空间
    汉明距离。 结果表明,有显着
    提高 CRC 有效性的重要机会
    因为一些常用的 CRC 性能不佳
    曼斯。 此外,工业实践中使用的许多来源
    tice 教工程师在不考虑的情况下选择多项式
    考虑到被错误检查的数据的长度,
    这忽略了一个重要的工程权衡。 和,
    即使工程师想要做出详细的设计权衡,
    关于多项式性能的工具和数据表很少
    并且往往难以应用。

    本文提出了一小组多项式,亲

    提供良好的整体性能,同时包含消息
    长度作为关键设计参数。 讨论后——
    基础和以前的工作,一种定义方法
    “好的”CRC 设计被提出,应用的结果
    荷兰国际集团提出的方法。 比较发布-
    拟议设计的 lished CRC 揭示了这两种优势
    以及现有实践中的严重缺陷。

    2. 背景

    CRC 可以被认为是一个(非安全的)摘要函数——

    化为一个数据字,可用于检测数据corrup-
    化。 在数学上,CRC 可以描述为治疗

    1

    菲利普考普曼

    ECE部门和ICES

    卡内基·梅隆大学

    美国宾夕法尼亚州匹兹堡

    koopman@cmu.edu

    Tridib Chakravarty

    美国宾夕法尼亚州匹兹堡

    tridib@alumni.carnegiemellon.edu

    预印本:可靠系统和网络国际会议,DSN-2004

    .


    二进制数据字作为 GF(2) 上的多项式
    (

    IE

    , 每个多项式系数是

    零或一)和执行多项式二
    一个愿景

    生成多项式

    G(x),

    这通常被称为 CRC 多项式
    米亚尔。 (CRC 多项式也称为
    反馈多项式,参考
    基于硬件的移位寄存器的反馈抽头
    ter 实现。)剩下的
    除法运算提供了一个错误检测
    作为帧校验 Se- 发送的化值
    网络消息中的序列 (FCS) 或
    存储为数据完整性检查。 无论是
    pleded在硬件或软件中, CRC
    计算采用按位转换的形式
    数据字对二进制ver-的演变
    CRC 多项式的 sion。 数据字
    size 是受 CRC 保护的数据,但不包括
    CRC本身。 [Peterson72] 和 [Lin83] 是其中之一
    CRC 的单引标准参考著作。 [威尔斯99]
    为非专业人士提供讨论。

    通过比较 FCS 执行错误检测

    计算数据对 FCS 值最初 COM-
    与原始数据一起发送或存储。 一个
    如果存储的 FCS 和
    计算出的 FCS 值不相等。 然而,与所有
    数字签名方案,有一个小的,但有限的,概率
    能够反转足够数量的数据损坏
    将出现正确模式中的位错误并导致
    检测不到的错误。 最小位反转次数
    需要实现这种未检测到的错误(

    IE

    , 高清

    值)是 CRC 多项式设计中的核心问题。

    使用正确的多项式是基于 CRC 错误的核心

    错误检测方案。 gen- 的质因数分解
    erator 多项式带来了一定的潜力
    特性,特别是给出了之间的权衡
    可能检测到的错误的最大数量

    对比

    数据字

    多项式有效的长度。 许多聚
    nomials 适合短词但不适合长词,
    反之亦然。 不幸的是,多项式的因式分解
    mial 不足以确定实际的 HD。 多聚糖-
    有前途分解的 mial 可能容易受到
    位错误的某种组合,即使是短消息
    长度。 因此,分解特征表明潜在的
    tial能力,但任何特定的评估是必需的
    多项式才适合用于 CRC 函数。

    传统观点认为选择一个

    CRC多项式是使用一个已经很普遍的
    用过的。 例如,[Press92] 列出了 16 位多项式和
    声明多项式的选择“只是一个约定俗成的问题
    化。” 这种方法假设这些多项式是
    选择最佳错误检测,这在某些情况下是
    不正确。 例如,几个标准化的 16 位多边形

    nomials 的错误检测性能不如 avail-
    有能力的替代品,并且似乎已被选为微型
    一次减少反馈值中“1”的位数
    当每个这样的位都有大量的硬件实现时-
    化成本。 [Lin83] 指出多项式选择是“一个
    非常困难的问题”,并说一些好的循环
    代码已被发现,但未提供详细信息。 最多
    编码理论和实践书籍类似[Wells99]
    因为它们只给出了少数已发布的多项式
    很少或根本没有关于多项式选择权衡的指导。

    汉明权重

    是错误的数量,在所有

    可能的消息损坏,CRC 未检测到
    使用特定的多项式。 一组汉明权重
    捕获不同位数的性能
    在特定数据字长度的消息中中断,与
    每个连续较长的数据字长具有一组
    具有更高值的汉明权重。 第一个非零
    汉明权重决定了代码的汉明距离。

    表 1 显示了一些示例汉明权重

    在 48 位的数据字大小的 CRC 多项式,这是一个
    许多嵌入式网络的代表性长度。 这
    显示的第一个多项式是无处不在的 CCITT-16 多边形
    标称 0x8810。 0x8810 是十六进制表示
    多项式 x

    16

    +x

    12

    +x

    5

    +1,与 x

    16

    作为最高位

    和一个隐含的 +1 术语,这在基于软件的
    CRC 实施。 它只有三个“反馈”位
    设置在多项式中,这有利于早期
    硬件实现。 对于 48 位的数据字
    在长度上,CCITT-16 检测所有 1 位错误(任何
    CRC 多项式),以及所有 2 位和 3 位错误。 然而,它
    只提供这个长度的 HD=4 因为,如所示
    表 1 中的权重,它未能检测到所有可能的 84
    4 位错误。 相比之下,16 位多项式 0xC86C
    [Baicheva00] 在此长度上达到 HD=6。

    对于这个例子,我们也可以比 CCITT-16 做得更好

    使用较小的 CRC。 众所周知的 CAN 15 位多项式

    2

    CRC尺寸

    (位)

    CRC多项式

    高清

    损坏位数的汉明权重:

    1位

    2位

    3位

    4位

    5位

    6位

    16

    CCITT-16

    0x8810

    4

    0

    0

    0

    84

    0

    2 430

    16

    [白切娃00] 0xC86C 6

    0

    0

    0

    0

    0

    2 191

    15

    能够

    0x62CC

    6

    0

    0

    0

    0

    0

    4 314

    12

    CRC-12

    0xC07

    4

    0

    0

    0

    575

    0

    28809

    12

    0x8F8

    5

    0

    0

    0

    0

    1 452

    13 258

    8

    DARC-8

    0x9C

    2

    0

    66

    0

    2 039

    13 122 124 248

    8

    CRC-8

    0xEA

    4

    0

    0

    0

    2 984

    0

    253 084

    7

    CRC-7

    0x48

    3

    0

    0

    216

    2 690

    27 051 226 856

    7

    0x5B

    4

    0

    0

    0

    5 589

    0

    451 125

    表 1. 数据字大小为 48 位的示例汉明权重。


    mial 0x62CC,针对最大数据字大小进行了优化
    到 112 位,在此长度提供 HD=6,仅丢失
    所有可能的 6 位错误中的 4,314 个,同时使用少一位
    它的 15 位 CRC。 不过,也许令人惊讶的是 12 位
    多项式0x8F8在这个长度下可以达到HD=5,而
    最佳发布的 12 位 CRC,0xC07,仅实现
    高清=4。 8 位 CRC-8 多项式 0xEA 也实现了
    在这个长度上 HD=4——但设计师必须知道
    使用发布的多项式而不是发布的
    DARC-8 多项式,它没有。 最小的CRC
    在此长度上实现 HD=4 的多项式是 7 位 CRC
    0x5B(尽管权重高于 CCITT-16),al-
    尽管发布的最好的 7 位 CRC 仅达到 HD=3。
    这个例子指出了两个基本问题
    目前的做法:已发布的 poly-
    nomials,并且需要具体的指导
    什么时候使用的多项式。

    提议改变几十年的根深蒂固

    CRC 民间传说和标准化是一项不小的任务。 尽管
    有些人可能认为几乎不需要新的 CRC
    多项式,因为网络标准强制使用
    现有的多项式,这通常不是嵌入的情况
    网络。 新的嵌入式网络不断
    正在开发中,每个都有独特的性能和错误
    检测权衡。 列车控制网络 (TCN)
    最近的例子,我们为其提供了有效的 CRC-
    展示了 8 位 CRC 的 ness 评估可能具有
    与 7 位 CRC plus 相比,提供 HD=4 保护
    使用的奇偶校验位方案仅提供 HD=3 保护
    [库普曼01]。 平心而论,TCN 受限于
    使用 7 位 CRC 的传统兼容性; 但许多原型
    新应用领域的 cols 没有那么受限。
    此外,专有嵌入式网络开发
    工业中不断发生。 鉴于没有尽头
    特定应用网络的激增
    协议,找出最好的 CRC 是有意义的
    多项式,以便它们可以被新的应用程序使用
    tions和新兴标准。

    3. 以前的工作

    以前发表的关于 CRC 有效性的工作有

    受到确定性的计算复杂性的限制
    计算各种多项式的权重。 只有少数德
    多项式的尾部调查已经发表。
    Baicheva 调查了 8 位 CRC 多项式
    数据字长为 127 的因式分解结构
    [Baicheva98]。 Baicheva 提出了一个很好的多项式
    优于 ATM 报头 CRC 多项式。 但是,作为
    下面讨论的实际最佳多项式
    ATM 报头数据字长有一个因式分解
    未在该调查中进行评估。 这说明了import-
    设计时详尽搜索多项式的 tance-
    荷兰国际集团一个应用程序的CRC。

    Baicheva 后来调查了所有 16 位 CRC 的数据字

    最多 1024 位长度 [Baicheva00],识别各种
    多项式在一般情况下既“好”又是最佳的
    特定的数据字长。

    后来的调查报告

    [Kazakov01] 将这些结果扩展到更长的数据字,
    专注于计算逐点最优边界
    16 位 CRC 有效性。 我们已经包括了他们的结果
    在我们对备选方案的评估中。

    虽然经常使用 8 位和 16 位 CRC 大小,但它也

    通常在嵌入式网络应用程序中使用其他 CRC 大小
    并发症,以节省带宽,同时实现一个partic-
    ular 所需的高清。 正如 CAN 使用 15 位
    而不是 16 位 CRC,甚至在 FCS 字段上节省一位
    带来重要的改变。

    查找众所周知的多项式的完整列表-

    als in print 很难。 [Peterson72] 给出了一个 irreduc-
    16 次或以下的 ible 多项式,但不给出
    错误检测能力的评价,当这些聚
    nomials 用于 CRC。 搜索显示已发布
    3-、4-、5-、6-、7-、8-、10-、12-、14-、15- 和 的多项式
    16 位 CRC。 在许多情况下,有不止一项建议
    给定 CRC 大小的修正多项式。 更糟糕的是,在
    在 CRC-12 多项式的情况下,存在三种不同的
    以相同名称给出的多项式,大多数参考
    他们两个之间平分秋色。 用的话说
    多项式 candi- 的更完整列表之一
    日期,“这些 [多项式] 在位 1 和计算上不同
    使用它们返回不同的值。 引用均匀
    分裂,很难知道哪个是正确的”[Jaffer03]。 鉴于
    缺乏已发表的定量分析,流行度降低
    测试是选择多项式的常用方法。

    本文旨在发布易于使用的工程

    多项式大小 3 到 16 的 CRC 选择指南
    嵌入式网络位。 CRC性能被阻止-
    通过执行每一个possi-的完整评估开采
    消息中未检测到的错误模式,如中所述
    [Koopman02],产生一个精确的结果而不是一个 ap-
    接近。 本文的余额首先呈现一些
    说明当前问题严重性的案例研究,
    然后描述了一种选择“好”将军的方法
    目的多项式,最后呈现数据供选择-
    荷兰国际集团嵌入式网络多项式。

    4. 当前协议的案例研究

    采用先前发布的多项式有两个

    潜在问题。 一个问题是一些多项式
    在使用中只是提供非常差的错误检测能力
    全面的。 第二个问题是,即使是“好”的多项式
    mial 必须针对粒子的消息大小进行优化-
    ular 长度,并且在误用于消息时会做得很差
    不同的长度。 当前多聚体的一些案例研究-
    使用中的 mials 说明了这些要点。

    3


    4.1.

    USB 与 ITU 的 5 位 CRC

    5 位 CRC 用于提供

    通用串行总线 (USB) 令牌的错误检测和
    由电信系统的国际电联标准。 图-
    ure 1 显示了这些多项式的性能 com-
    与可实现的最佳界限相比较。 的概率
    未检测到的错误 P

    出去

    是从以下概率求和的

    在假定的连续更高数量的比特错误
    误码率 (BER) 为 10

    -6

    按百分比加权

    每个相应的多项式权重捕获的错误
    每个数据字长。 显示的边界线假定
    为每个长度选择不同的最优多项式,
    因此对性能有严格的约束。 较低的数字
    更好,表明未检测到错误的可能性较低
    ror 滑过 CRC。

    USB 5 位 CRC 标准“USB-5”是十六进制的

    mal 值 0x12 = x

    5

    + x

    2

    + 1 [USB00]。 这个多项式是

    USB 用来保护长度为 11 位的数据字。
    USB-5 是 11 位消息的最佳选择,并且几乎是最佳选择
    mal 对于更长的数据字长。 然而,这不是必要的——
    sarily 对于大小为 10 和更小的数据字是一个不错的选择,
    因为它比边界差了一个完整的高清位。

    ITU G.704 [G704] 使用 5 位多项式 CCITT-5,

    0x15 = x

    5

    + x

    3

    + x + 1. 图 1 显示 CCITT-5 是最优的

    长度为 10。然而,CCITT-5 比 HD 差了整整一点
    USB-5 的长度为 11-26,大于 2 倍
    在更长的长度上比绑定(和 USB-5)差。 电联
    G.704 使用 CCITT-5 的数据字长为 3151 位,
    这显然是一个低效的长度
    CRC。 (在 3151 位 USB-5 是最佳的,是 2.077 倍
    比 CCITT-5 更擅长错误检测。)

    CCITT-5 的多项式可以被 (x+1) 整除,它重新

    导致能够检测所有奇数位翻转和
    通常被认为是可取的(例如,[Tanenbaum96])。
    实际上,在数据字长为 3151 时,CCITT-5 是最好的
    可被 (x+1) 整除的所有 5 位多项式中的多项式。
    另一方面,USB-5 不能被 (x+1) 整除并且每个
    在 10 位以上的所有长度上都比 CCITT-5 更好。 至
    理解为什么 USB-5 在图 1 中表现得更好,它
    有助于检查长度为3151的权重结构,
    如表 2 所示。对于 10 的 BER

    -6

    , 大多数消息

    长度 3151 遭受零位、1 位或可能的 2 位错误,其中
    每增加一个错误位的数量,可能性就会降低。 作为
    表 2 显示,USB-5 在 de- 时的效率几乎是其两倍
    检测 2 位错误和 3 位错误
    USB-5 的重量不够高
    它超过了这个优势。

    因此,

    USB-5 在此 BER 方面更胜一筹。

    4.2.

    8 位多项式

    常用8位多项式

    因为它们对 8 位有效
    微控制器应用程序。

    也许

    最常用的 8 位多项式是“CRC-8”,
    这是 0xEA = x

    8

    +x

    7

    +x

    6

    +x

    4

    +x

    2

    +1。 图 2 表明

    此多项式提供 HD=4 直到长度为 85。但是,
    在长度为 86 到 119 时,与 a 相比,它仅提供 HD=2
    HD=4 的边界。 在长度超过 119 时,它提供相同的
    HD=2 作为边界,但 P 明显更高

    出去

    .

    总的来说,这个多项式在长度为 85 之前是足够的,但是
    可以改进。 当前 CRC-8 的许多用途
    因此,系统是有问题的,因为它们试图
    为大数据字提供错误检测(例如
    跨越一条长消息或一大块内存数据)。

    4

    多项式

    高清

    损坏位数的汉明权重:

    1位

    2位

    3位

    4位

    5位

    USB-5 0x12

    2

    0

    159 075 163 552 409 128 929 654 767 81 278 805 135 219

    CCITT-5 0x15

    2

    0

    330 435

    0

    257 909 068 726

    0

    表 2. CCITT-5 和 USB-5 的权重; 数据字长 3151 位。

    数据字长(位)

    8

    16

    32

    64

    128

    256

    512

    1024

    2048

    P

    出去

    1e-12

    1e-15

    1e-18

    1e-21

    1e-24

    1e-27

    0x15 CRC-5
    0x12 USB-5
    边界

    高清=2

    高清=3

    高清=4

    0x15

    0x12

    图 1. 已发布的 5 位 CRC 的性能。

    数据字长(位)

    8

    16

    32

    64

    128

    256

    512

    1024

    2048

    P

    出去

    1e-12

    1e-15

    1e-18

    1e-21

    1e-24

    1e-27

    1e-30

    1e-33

    0x9C DARC-8
    0xEA CRC-8
    0x97
    边界

    高清=2

    高清=3

    高清=4

    高清=5

    0x9C

    0xEA

    0x97

    图 2. 8 位,HD=4 CRC 性能。


    设计师如何才能比 CRC-8 做得更好? 一种方法是

    利用已发布的改进多项式。 在
    在这个特殊情况下,[Baicheva98] 发表了 polyno-
    mial C2,值为 0x97 = x

    8

    +x

    5

    +x

    3

    +x

    2

    +x+1 。 图 2

    显示 0x97 具有相同或更好的性能
    每个数据字长度的 CRC-8(长度也是如此
    也超过 2048 位)。 因此,0x97

    主宰-

    内茨

    CRC-8 因此无条件地更好

    给定我们的故障假设的多项式选择。 而且,
    0x97 在长度为 119 时具有最佳性能,这是最大的
    HD = 4 的可能长度可以用
    8 位 CRC。 不幸的是,这样的多项式分析是
    其他情况很难找到; 没有发表
    完成其他 CRC 尺寸的调查,除了那些已经
    提及。

    ATM-8 HEC 多项式 0x83 = x

    8

    + x

    2

    + x + 1

    (据说来自ITU标准I.432)不占优势
    CRC-8,但接近于 C2。 两个多项式执行
    长度超过 112 位基本相同,但 ATM-8
    在长度为 8 位时,性能比 C2 差 45%。 为一个
    32位ATM数据字,C2比C2有效4.9%
    ATM-8 用于中低 BER 的错误检测。

    选择已发布多项式的一个陷阱是它

    对于大多数数据字长可能不好。 考试-
    请,

    发展研究中心

    多项式

    [ETSI02]

    0x9C

    =

    X

    8

    +x

    5

    +x

    4

    +x

    3

    +1 最适合长度 8,但仅提供

    HD=2,长度为 10 及以上,P 相当差

    出去

    表现-

    曼斯如图2所示。 DARC应用程序使用
    这个数据字长为 16 到 48 位的多项式,
    它表现不佳的地方。

    图 2 清楚地表明有两个错失的机会

    即使在选择最佳发布的 8 位 CRC 时也是如此
    多项式。 首先是他们错过了 HD=3 “壁架”
    在长度 120 和 247 之间的边界曲线上。秒
    另一个是它们都不是接近最佳长度的
    248 及更高。 例如,CRC-8 是 3.3 的因数
    更糟的是 1024 位。 其他已发布的 CRC,例如
    ATM HEC 做的不比 2.3 差
    绑定在 1024 位和更高位。 但是,有多项式
    比 HD=3 和常用的要好得多
    HD=2 应用程序。 图 3 显示 0xA6 = x

    8

    +x

    6

    +x

    3

    +x

    2

    +1 保持 HD=3 到 247 位,确实是 opti-

    那个长度的马尔。 此外,0xA6 提供性能 al-
    与长度为 120 的边界最难以区分
    及以上。

    真实协议的两个例子有助于说明 po-

    改进 CRC 的潜力:SMBus 和 Xmodem。 总线
    是一种用于“智能”电池的低速通信总线
    IES和便携式电子设备电源管理应用程序
    并发症。

    SMBus 1.1 版添加了 CRC-8

    多项式 [Smbus00],大概继承自
    年长的我

    2

    C总线标准。 许多消息之间

    长度为 16 位和 40 位,并受到适当的保护

    HD=4 时的 CRC-8。 但是,有一个数据包传输
    导致 35 字节(280 位)消息支付的命令
    负载。 CRC-8 提供的保护仅为 HD=2
    消息 11 字节或更长。 ATM-8 多项式
    可能是一个更好的选择,因为它本来可以
    HD=4 用于较长的消息,并提供更好的错误检测
    保护 HD=2 操作区域。

    可以证明 0xA6 本来是一个

    SMBus 的更好选择,具体取决于预期
    消息工作量。 较长的消息会产生更大的目标
    对于随机位错误,因此更有可能ac-
    累积多个错误。 如果消息工作量为
    特定应用中的 SMBus 大量使用长
    消息, HD = 0xA6 和 3 操作区域
    HD=2 操作区域的更好性能可能会超过
    权衡增加脆弱性的惩罚(HD=3 in-
    而不是 HD=4) 用于短消息。 详情取决于
    未检测到错误概率的加权和
    每个长度的消息,这将因应用程序而异。
    但关键是有时值得放弃一点
    短消息长度的错误检测以获得更好的亲
    保护更长的消息。 (另一种策略是
    将 0xA6 用于长消息和良好的 HD=4 poly-
    短消息的名义。)

    另一个常见的 CRC-8 应用程序是

    XMODEM 协议,由 Ward Christansen 在
    1977. 该协议以 128 字节(1024
    位)受 CRC-8 保护的块。 虽然多项式评估
    ations 不是普遍可用然后,任何改变
    此处讨论的自然 CRC(DARC-8 除外)将具有
    是一个更有效的选择。

    5.多项式选择

    好的 HD=4 多项式和 a 之间的区别

    8 位 CRC 的良好 HD=3/HD=2 多项式说明
    一种通用的 CRC 选择方法可能会花费
    大量的错误检测性能,在-
    包括丢失一点(或更多)可能的错误检测
    某些消息长度的能力。 因此,选择
    一个好的 CRC 多项式必须不仅涉及大小
    CRC,还有数据字的大小。 而且,
    许多常用的多项式不太适合
    可能的应用。 因此,我们提出“好”的多聚体-
    mal 候选人,并规定了一种选择方法
    每个申请的合适人选。

    5.1.

    候选多项式选择

    为通用用途选择一个“好的”多项式是

    当然是工程判断的问题。 接下来-
    荷兰国际集团选择过程被选择导致多项式
    主要是维持高 HD 值最长
    数据字长可能,二次实现良好
    在较短的长度上表现出色,第三次取得了良好的成绩

    5


    性能在更长的长度比规定的最大美国 -
    年龄长度。 请牢记这些目标的优先顺序
    嵌入式网络应用程序通常具有最大
    需要一定HD的mum消息长度; 这么短
    消息可以受益于改进的 HD 保护,因此
    只要长消息的保护不是实质性的牺牲
    已申请; 有时协议的修订会增加我-
    sages 比原来想象的要长,真好
    在较长的消息长度性能是可取的作为
    安全网。

    对所有不同的 CRC 执行了随后的步骤

    大小为 3 位到 16 位的多项式。

    (1) 计算数据字处所有多项式的权重

    长度为 8 位到 2048 位。

    (2) 通过选择 polyno- 找到边界权重

    每个长度具有最低权重的 mial(即生成
    逐点最优多项式的列表)。 一般来说这个
    表示选择不同的多项式作为边界
    每个长度从 8 位到 2048 位,虽然在
    许多情况下会出现单个高性能多项式
    考虑多个绑定值。 这个数据是
    我们的“绑定”曲线的来源。

    (3) 确定边界中的“断点”,其中

    可实现的最佳 HD 值变化。 例如,8 位
    图2中的CRC bound有如下断点:HD=5
    可能长度为 9,所以 HD=5 断点在 9。
    HD=4 断点长度为 119(HD=4 是最好的)
    ble HD 从长度 10 到 119)。 HD=3 断点位于
    长度 247。当然 HD=2 在所有长度上都是可能的
    与任何 CRC 多项式。 按照后续步骤
    依次为每个断点。

    (4) 找出所有达到HD界的多项式

    在断点处。 这保证了多项式 se-
    lected 一直进入边界曲线的“角落”
    在断点。 如果有多个多项式,选择
    权重最低的那个。 如果最低价出现平局
    权重或几个低权重彼此在 1% 以内
    (接近平局),调用步骤(5)和(6)。 如果有一个现有的
    在边界的 1% 范围内发布多项式,使用那个
    多项式。 此步骤排除了可能是
    以降低 HD 为代价在较低的权重下表现更好 be-
    fore断点(CRC-8的HD=4断点,
    如图 2 所示,是一个多项式的例子
    由于这个原因从考虑中删除)。

    (5) 如果Step中已经识别出多个多项式

    4、选择具有最长中断长度的多项式
    指向下一个更高的 HD 值。 例如,有
    达到断点的 30 个不同的 10 位多项式
    HD=3,长度为1013,全部有相同的3位
    汉明权重。 然而,在这些多项式中,
    HD=4 可能的最长长度是长度 73
    来自多项式 0x327,使其成为“好”的选择
    多项式。 同样,多项式 0xBAAD 是唯一的
    提供长度为 2048 的 HD=4 和
    HD=5 最大长度为 108 位(其他多项式 HD=4
    在 2048 位提供 HD=5 较短的数据字长),
    性能仅比最优差 0.39%
    长度为 2048 的多项式,即 0xD3E9,由
    [卡扎科夫01]。 此筛选步骤提供多项式
    不仅在断点处提供良好的性能,
    但在更短的长度上也有更好的高清效果。

    6

    高清最大长度

    多项式

    CRC 大小(位)

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    高清=2

    2048+

    0x5

    2048+

    0x9

    2048+

    0x12

    2048+

    0x21

    2048+

    0x48

    2048+

    0xA6

    2048+
    0x167

    2048+
    0x327

    2048+

    0x64D

    高清=3

    11

    0x9

    26

    0x12

    57

    0x21

    120

    0x48

    247

    0xA6

    502

    0x167

    1013

    0x327

    2036

    0x64D

    2048

    0xB75

    高清=4

    10

    0x15

    25

    0x2C

    56

    0x5B

    119

    0x97

    246

    0x14B

    501

    0x319

    1012

    0x583

    2035

    0xC07

    2048

    0x102A

    2048

    0x21E8

    2048

    0x4976

    2048

    0xBAAD

    高清=5

    9

    0x9C

    13

    0x185

    21

    0x2B9

    2

    0x5D7

    53

    0x8F8

    没有任何

    113

    0x212D

    136

    0x6A8D

    241

    0xAC9A

    高清=6

    8

    0x13C

    12

    0x28E

    22

    0x532

    27

    0xB41

    52

    0x1909

    57

    0x372B

    114

    0x573A

    135

    0xC86C

    高清=7

    12

    0x571

    没有任何

    12

    0x12A5

    13

    0x28A9

    16

    0x5BD5

    19

    0x968B

    高清=8

    11

    0xA4F

    11

    0x10B7

    11

    0x2371

    12

    0x630B

    15

    0x8FDB

    表 3. 在给定 CRC 大小和数据字长的情况下,HD 的“最佳”多项式。

    带下划线的多项式之前已作为“好”多项式发布。

    6


    (6) 如果第 5 步不适用或出现平局,请选择

    在 2048 位具有最佳性能的多项式(最大
    计算出的最大长度)。 这产生了一个多项式
    长数据字长的良好性能。

    (7) 如果第 6 步是近似平局(HD 权重是

    在 1% 以内),选择具有最佳权重的多项式
    更小的长度,即使那些更小的长度在
    与断点相同的高清。

    应用此选择过程的结果显示在

    表 3. 表 3 中的每个单元格都有两个数字 - 顶部数字 -
    给定 HD 处断点长度的误码率,以及底部
    直到断点的长度的“好”多项式。
    超过 2048 位的长度没有详细研究,但是对于
    11 位和更小的 CRC,给定的多项式也是
    对于任意更长的长度接近最优。 下划线的
    多项式是以前发布的多项式
    适用于 CRC(详见表 4)。 桌子
    3 可以通过以下方式使用:

    给定 CRC 大小和长度,找到一个“好的”多项式:

    在表 3 中选择适当的 CRC 大小列。
    选择最小长度大于或的行
    等于所需的长度。 那个盒子里的多项式
    将提供该长度的最佳高清效果,并且
    CRC 大小。 例如,对于 9 位 CRC,长度为 246
    将使用多项式 0x14B 并实现 HD=4,但是
    长度为 247 时可达到的最佳 HD 为 HD=3
    使用多项式 0x167。

    找到实现给定所需的最小大小的 CRC
    特定长度的高清:

    选择表 3 的行

    所需的高清。 选择最左边的那一列
    长度大于或等于所需的行
    长度。 这是最小的 CRC,可以提供
    所需长度的所需 HD。 例如HD=6
    对于 52 位的数据字长可以用一个来实现
    使用多项式 0x1909 的 13 位 CRC。
    当然这个选型表也不是没有限制的。

    对于只有一个数据字长度的应用程序,
    并且即使在
    在多项式选择上付出更多努力的代价,一个最优
    应选择多项式。

    5.2.

    已发布多项式的性能

    尽管表 3 有许多新颖的多项式

    als,这并不一定意味着以前发布的
    listed 多项式将在任何特定的情况下表现不佳
    应用。 特别是,自我强加的要求
    达到断点值的最大可能 HD
    取消了一些其他好的标准多项式的资格。
    例如,CAN 多项式 0x62CC 适用于
    长度可达 112 位,但在 112 位 com- 有一个断点
    与 HD=6 的 114 位边界断点相比较。 为了
    大多数应用程序,CAN 多项式可能是好的

    够了,选择一个新颖的多聚体没有什么意义-
    米亚尔。 因此,重要的是提出对
    常用多项式的性能,所以去
    签名者可以在额外的潜在努力之间进行选择
    证明“非标准”多项式选择与
    潜在的错误检测增益。

    表 4 是公共使用或公共使用的多项式列表

    我们在文献中提出的“好”多项式
    遇到过。 (仅从 pub- 中选择多项式
    先前讨论的已发布的 8 位和 16 位调查有
    被包括在内,因为它们大部分是点解决方案
    化而不是一般的建议多项式。)最好的
    已给出每个多项式的可用引用,
    以及最常用的昵称。

    表 4 给出了数据字长的性能

    通过 2048 位。 为了使数据易于管理,perfor-
    曼斯分为四列。 第一栏
    表明性能是最佳的或接近最佳的
    (在最佳性能范围的 1% 以内)。 这
    第二列表示未检测到的错误概率
    在界限的两倍之内,这是一些-
    什么武断的区别,但总体上是有用的传达
    哪些多项式接近于特定的
    数据范围。 第三列表示 polyno-
    mials 的未检测错误率是
    界,第四列表示每个聚-
    nomial 的 HD 比 bound 差一位或多位。 联合国-
    带下划线的条目对应于来自
    表 3. 这些多项式的权重表和
    边界可从主要作者处获得,并且在
    网址为 http://www.ece.cmu.edu/~koopman/crc

    某些 CRC 多项式似乎不正确,因为重新

    数据转录或类似错误的结果
    随着时间的流逝,多项式被传递。 为了
    示例 [Ottoson01] 给出了 0x68 的“CRC-7”值
    而不是其他地方给出的 0x48,这可能是由于
    将一位数据转录错误转换为源代码二进制文件

    7

    高清=2

    高清=3

    高清=4

    高清=5

    0xA6

    数据字长(位)

    8

    16

    32

    64

    128

    256

    512

    1024

    2048

    P

    出去

    1e-12

    1e-15

    1e-18

    1e-21

    1e-24

    1e-27

    1e-30

    1e-33

    0xA6
    边界

    图 3. 长度为 120 的良好 8 位多项式
    以上。


    8

    钢筋混凝土

    尺寸

    (位) 昵称多项式

    资源

    性能与给定长度的界限相比

    1%以内

    边界

    在 2 倍以内

    边界

    同样的高清,但是

    超过 2 倍

    边界

    更糟糕的高清

    比约束

    3

    0x5 = (x

    3

    + x + 1)

    [RFC 3095]

    8-2048

    4

    CCITT-4:

    0x9 = (x

    4

    + x + 1)

    [G704]

    8-2048

    4

    CRC-4:

    0xF = (x

    4

    + x

    3

    + x

    2

    + x + 1)

    [奥托森01]

    12-2048

    8-11

    5

    CRC-5:

    0x15 = (x+1)(x

    4

    + x

    3

    + 1)

    [G704]

    8-10

    27-2048

    11-26

    5

    0x12 = (x

    5

    + x

    2

    + 1)

    [USB00]

    11-13; 17-2048

    14-16

    8-10

    6

    DARC-6:

    0x2C = (x+1)(x

    5

    + x

    4

    + x

    2

    + x + 1)

    [ETSI02]

    12-25

    8-11

    58-2048

    26-57

    6

    CRC-6:

    0x21 = (x

    6

    +x+1)

    [G704]

    26-28; 37-2048

    29-36

    8-25

    7

    0x5B = (x+1)(x

    6

    + x

    5

    + x

    3

    + x

    2

    + 1)

    新的

    29-56

    11-28

    8-10; 121-2048

    57-120

    7

    CRC-7:

    0x48 = (x

    7

    +x

    4

    +1)

    [G704]

    87-91; 99-2048

    57-86; 92-98

    8-56

    7

    0x44 = (x

    7

    +x

    3

    +1)

    (CRC-7 取反)[G832]

    87-91; 99-2048

    57-86; 92-98

    8-56

    FT2:

    0x72 = (x

    7

    +x

    6

    +x

    5

    +x

    2

    +1)

    [放克 88]

    87-89; 99-2048

    57-86; 90-98

    8-56

    7

    0x67 = (x+1)(x

    3

    + x + 1)

    (X

    3

    + x + 1)

    [RFC3095]

    121-2048

    8-120

    7

    0x68 = (x+1)(x

    2

    + x + 1)

    (X

    4

    +x

    3

    +1)

    [奥托森01]

    8

    121-2048

    9-120

    8

    DARC-8:

    0x9C = (x

    8

    + x

    5

    + x

    4

    + x

    3

    + 1)

    [ETSI02]

    8-9

    248-2048

    10-247

    8

    C2:

    0x97 = (x+1)(x

    7

    + x

    6

    + x

    5

    + x

    2

    + 1)

    [白切娃98]

    27-50; 52; 56-119 18-26; 51; 53-55 10-17; 248-2048 8-9; 120-247

    8

    DOWCRC:0x98 = (x+1)(x

    7

    +x

    6

    +x

    5

    +x

    3

    +x

    2

    +x+1)

    [Whitfield01]

    43-119

    19-42

    10-18; 248-2048 8-9; 120-247

    8

    ATM-8:

    0x83 = (x+1)(x

    7

    +x

    6

    +x

    5

    +x

    4

    +x

    3

    +x

    2

    +1)

    [奥托森01]

    53-119

    18-52

    10-17; 248-2048 8-9; 120-247

    8

    WCDMA-8:0xCD = (x+1)(x

    7

    + x

    3

    + 1)

    [奥托森01]

    28-31; 43-119

    20-27;32-42

    10-19; 248-2048 8-9; 120-247

    8

    0xA6 = (x

    8

    +x

    6

    +x

    3

    +x

    2

    +1)

    新的

    136-140;

    210-2048

    11-15; 120-135;

    141-209

    10

    8-9; 16-119

    8

    CRC-8:

    0xEA = (x+1)(x

    2

    +x+1)

    (X

    5

    +x

    4

    +x

    3

    +x

    2

    +1)

    [奥托森01]

    20-85

    10-19; 248-2048

    8-9;86-247

    9

    0x13C = (x+1)(x

    8

    +x

    7

    +x

    6

    +x

    4

    +x

    2

    +x+1)

    新的

    8

    503-2048

    9-502

    9

    0x185 = (x

    2

    + x + 1)

    (X

    3

    +x

    2

    + 1)

    (X

    4

    +x

    3

    +1)

    新的

    13-16

    9-12; 503-2048

    8; 17-502

    9

    0x14B = (x+1)(x

    8

    +x

    7

    +x

    3

    +x

    2

    +1)

    新的

    147-246

    26-28; 30-146

    14-25; 29;

    503-2048

    8-13;

    247-502

    9

    0x167 = (x

    9

    +x

    7

    +x

    6

    +x

    3

    +x

    2

    +x +1)

    新的

    45-46; 48;

    412-2048

    18-44; 47;

    247-411

    14-17

    8-13; 49-246

    10

    0x28E = (x+1)(x

    2

    + x + 1)

    (X

    3

    +x

    2

    + 1)

    (X

    4

    +x

    3

    +1)

    新的

    9-12

    8; 77-95

    22-76; 1014-2048

    13-21;

    96-1013

    10

    0x2B9 = (x

    5

    +x

    2

    +1)

    (X

    5

    +x

    3

    +x

    2

    +x +1)

    新的

    17-21

    13-16

    1014-2048

    8-12;

    22-1013

    10

    CRC-10:

    0x319 = (x+1)(x

    9

    + x

    4

    + 1)

    [Jaffer03]

    306-501

    73-305

    22-72; 1014-2048

    8-21;

    502-1013

    10

    0x327 = (x

    10

    +x

    9

    +x

    6

    +x

    3

    +x

    2

    +x +1)

    新的

    880-2048

    32-73; 502-879

    22-31

    8-21; 74-501

    11

    0x571 = (x

    11

    +x

    9

    +x

    7

    +x

    6

    +x

    5

    +x +1)

    新的

    8-12

    2037-2048

    13-2036

    11

    0x532 = (x+1)(x

    10

    +x

    9

    +x

    5

    +x +1)

    新的

    21-22

    13-20

    2037-2048

    8-12;

    23-2036

    11

    0x5D7 = (x

    11

    +x

    9

    +x

    8

    +x

    7

    +x

    5

    +x

    3

    +x

    2

    +x +1)

    新的

    25-28; 1775-2048

    23-24;

    1013-1774

    8-22;

    29-1012

    11

    0x583 = (x+1)(x

    10

    +x

    9

    +x

    7

    +x

    6

    +x

    5

    +x

    4

    +x

    3

    +x

    2

    +1)

    新的

    625-1012

    13-17; 96-624

    27-95; 2037-2048

    8-12;18-26;
    1013-2036

    11

    0x64D = (x

    11

    +x

    10

    +x

    7

    +x

    4

    +x

    3

    +x +1)

    新的

    111-131;

    1775-2048

    62-110; 96-624;

    1013-1774

    27-61

    8-26;

    132-1012

    12

    0xA4F = (x+1)(x

    11

    +x

    10

    +x

    6

    +x

    5

    +x

    4

    +x

    2

    +1)

    新的

    8-11

    12-2048

    12

    0xB41 = (x+1)(x

    3

    +x

    2

    +1)

    (X

    8

    +x

    4

    +x

    3

    +x

    2

    +1)

    新的

    22-27

    13-21

    12

    8-11

    12

    0x8F8 = (x

    12

    +x

    8

    +x

    7

    +x

    6

    +x

    5

    +x

    4

    +1)

    新的

    42-53

    28-41

    8-27;

    54-2048

    12

    0xC05 = (x

    2

    +x+1)

    (X

    2

    +x+1)

    (X

    8

    +x

    7

    +x

    6

    +x

    5

    +x

    2

    +x+1)

    [Press92]

    55-160

    54

    8-53;

    161-2048

    12

    0xC06 = (x

    12

    +x

    11

    +x

    3

    +x

    2

    +1)

    [Whitfield01]

    8-2048

    12

    CRC-12:

    0xC07 = (x+1)(x

    11

    +x

    2

    +1)

    [奥托森01]

    1074-2035

    221-1073

    54-220

    8-53;

    2036-2048

    12

    0xB75 = (x

    2

    +x+1)

    (X

    3

    +x

    2

    +1)

    (X

    7

    +x

    5

    +x

    4

    +x

    3

    +1)

    新的

    2036-2048

    8-2035

    表 4. BER = 10 时多项式的性能

    -6

    . 带下划线的范围对应于表 3。


    9

    钢筋混凝土

    尺寸

    (位)

    昵称多项式

    资源

    性能与给定长度的界限相比

    1%以内

    边界

    在 2 倍以内

    边界

    同样的高清,但是

    超过 2 倍

    边界

    更糟糕的高清

    比约束

    13

    0x10B7 = (x+1)(x+1)(x

    11

    +x

    9

    +x

    7

    +x

    6

    +x

    5

    +x +1)

    新的

    10-11

    8-9

    12-2048

    13

    0x12A5 = (x

    2

    +x+1)

    (X

    11

    +x

    10

    +x

    6

    +x

    5

    +x

    4

    +x

    2

    +1)

    新的

    12-13

    53-56

    8-11; 14-52;

    57-2048

    13

    0x1909 = (x+1)(x

    12

    +x

    8

    +x

    7

    +x

    6

    +x

    5

    +x

    4

    +1)

    新的

    44-52

    21-43

    13, 14-20

    8-12;

    53-2048

    13

    0x102A = (x

    4

    +x

    3

    +x

    2

    +x+1)(x

    9

    +x

    8

    +x

    4

    +x

    3

    +x

    2

    +x+1)

    新的

    363-2048

    171-362

    53-170

    8-52

    14

    0x2371 = (x+1)(x+1)(x+1)(x

    11

    +x

    10

    +x

    6

    +x

    5

    +x

    4

    +x

    2

    +1)

    新的

    11

    10

    8-9

    12-2048

    14

    0x28A9 = (x

    14

    +x

    12

    +x

    8

    +x

    6

    +x

    4

    +x +1)

    新的

    13-14

    12; 136-317

    114-135

    8-11; 15-113;

    318-2048

    14

    0x372B = (x+1)(x+1)(x

    12

    +x

    11

    +x

    10

    +x

    7

    +x

    5

    +x

    4

    +x

    3

    +x +1)

    新的

    51-57

    30-50; 304-2048

    14-29; 114-303

    8-13;

    58-113;

    14

    0x212D = (x

    7

    +x

    6

    +x

    3

    +x +1)

    (X

    7

    +x

    6

    +x

    5

    +x

    4

    +1)

    新的

    101-113

    20-21; 58-100

    14-19

    8-13; 22-57;

    114-2048

    14

    0x21E8 = (x

    4

    +x

    3

    +x

    2

    +x +1)(x

    10

    +x

    9

    +x

    4

    +x +1)

    新的

    1940-2048

    227-1939

    114-226

    8-113

    14

    DARC-14:

    0x2402 = (x+1)(x

    13

    + x

    12

    + x

    11

    +x +1)

    [ETSI02]

    540-2048

    114-539

    8-113

    15

    0x630B = (x+1)(x

    14

    +x

    9

    +x

    3

    +x

    2

    +1)

    新的

    12

    10-11; 732-2048

    8-9; 137-731

    13-136;

    15

    0x5BD5 = (x

    3

    +x

    2

    +1)

    (X

    12

    +x

    11

    +x

    8

    +x

    6

    +x

    5

    +x

    3

    +x

    2

    +x+1)

    新的

    16

    14-15

    13

    8-12;

    17-2048

    15

    0x573A = (x+1)(x

    14

    +x

    13

    +x

    10

    +x

    8

    +x

    7

    +x

    6

    +x

    4

    +x+1)

    新的

    78; 98-114

    49-77; 79-97

    17-48

    8-16;

    115-2048

    15

    能够:

    0x62CC = (x+1)(x

    7

    +x

    3

    +1)

    (X

    7

    +x

    3

    +x

    2

    +x +1)

    [博世91]

    64-112

    49-63

    17-48

    8-16;

    113-2048

    15

    0x6A8D = (x

    15

    +x

    14

    +x

    12

    +x

    10

    +x

    8

    +x

    4

    +x

    3

    +x +1)

    新的

    123-136

    115-122

    8-114;

    137-2048

    15

    0x4976=(x

    4

    +x

    3

    +x

    2

    +x+1)(x

    11

    +x

    10

    +x

    8

    +x

    7

    +x

    6

    +x

    4

    +x

    2

    +x+1)

    新的

    1771-2048

    441-1770

    17-18; 137-440

    8-16; 19-136

    15

    0x4001 = (x

    15

    +x +1)

    [吉尔摩02]

    8-2048

    15

    0x740A=(x

    3

    +x

    2

    +1)

    (X

    6

    +x+1)

    (X

    6

    +x

    4

    +x

    2

    +x+1) [MPT1327]

    8-2048

    16

    0x8FDB =

    (x+1)(x

    15

    +x

    14

    +x

    13

    +x

    12

    +x

    10

    +x

    8

    +x

    6

    +x

    5

    +x

    3

    +x

    2

    +1)

    新的

    14-15

    12-13; 42-51;

    913-2048

    8-11; 20-41;

    242-912

    16-19;

    52-241

    16

    0x968B = (x

    2

    +x+1)

    (X

    14

    +x

    13

    +x

    9

    +x

    7

    +x

    5

    +x

    4

    +1)

    新的

    19

    16-18; 245-363

    8; 242-244

    9-15;

    20-241;

    364-2048

    16

    0xC86C = (x+1)(x

    15

    +x

    11

    +x

    10

    +x

    9

    +x

    8

    +x

    7

    +x

    5

    +x

    4

    +x

    2

    +x+1)

    [白切娃00]

    110-111; 113-135

    39-109; 112

    20-38

    8-19;

    136-2048

    16

    C

    3

    0xAC9A = (x

    16

    +x

    14

    +x

    12

    +x

    11

    +x

    8

    +x

    5

    +x

    4

    +x

    2

    +1)

    [卡斯塔尼奥利90]

    219-241

    33-35; 136-218

    8; 20-32

    9-19;

    36-135;

    242-2048

    16

    0xBAAD = (x

    3

    +x

    2

    +1)

    (X

    6

    +x

    5

    +x

    2

    +x+1)

    (X

    7

    +x

    3

    +1)

    新的

    1578-2048

    242-1577

    20

    8-19; 21-241

    16

    0xD3E9 = (x

    3

    +x

    2

    +1)

    (X

    6

    +x

    5

    +x

    2

    +x+1)

    (X

    7

    +x

    6

    +x

    5

    +x

    4

    +1)

    [卡扎科夫01]

    1270-2048

    256-1269

    242-255

    8-241

    16

    CRC-16:

    0xA001 = (x+1)(x

    15

    +x

    14

    +1)

    [Press92]

    1270-2048

    242-1269

    8-241

    16

    ANSI-16:

    0xC002 = (x+1)(x

    15

    + x + 1)

    [USB00]

    1270-2048

    242-1269

    8-241

    16

    0xD04B = (x+1)(x+1)

    (X

    14

    +x

    13

    +x

    12

    +x

    10

    +x

    8

    +x

    6

    +x

    5

    +x

    4

    +x

    3

    +x+1)

    [奥托森01]

    39-67;

    1146-2048

    8; 20-38;

    242-1145

    9-19; 68-241

    16

    IEC-16:

    0xADC9=(x+1)(x+1)(x

    7

    +x

    6

    +x

    3

    +x+1)

    (X

    7

    +x

    6

    +x

    5

    +x

    4

    +x

    3

    +x

    2

    +1)

    [白切娃00]

    39-112

    8-9; 20-38

    10-19;

    113-2048

    16

    CCITT-16:

    0x8810 = (x+1)(x

    15

    +x

    14

    +x

    13

    +x

    12

    +x

    4

    +x

    3

    +x

    2

    +x+1)

    [ETSI02]

    1015-2048

    242-1014

    8-241

    笔记:

    所有多项式都表示为不可约因子的乘积

    所有标有 (

    ) 是原始的。

    表 4 继续。


    数据数组。 不幸的是,0x68 被其他六个控制
    多项式,通常低于 0x48。

    类似地 [Jaffer03] 表明各种基于网络的

    源在 0xC06 和 0xC07 之间平均分配,因为
    荷兰国际集团“标准”CRC-12多项式。

    数值的

    食谱

    指出 CRC-12 是 0xC05 [Press92]。 一罐

    推测这些也是一位转录错误。

    6。结论

    使用 CRC 的新嵌入式网络不断

    正在创建。 不幸的是,选择的通常做法 -
    荷兰国际集团下推定公布的CRC多项式
    说它“好”会遇到麻烦,因为有些人发表了
    值表现很差。 而且,即使是一个好
    公布的多项式是可用的,一般没有
    发布了关于数据字长范围的指南
    就此而言,量化数据既无益也无助于显示
    淡化来自任何竞争发布者的良好多项式-
    已发布或标准化的“坏”多项式。

    本文提出了所有的第一个详尽的调查

    CRC 多项式从 3 位到 15 位,并讨论
    16 位多项式也是如此。 选择方法
    一般“好”的CRC多项式是基于实现
    荷兰国际集团最大汉明距离尽可能长
    数据字大小和其他性能考虑因素。
    我们给出的良好多项式表应该能够实践
    尝试者在选择效果时使用定量信息
    用于嵌入式计算错误检测的多项式
    数据字大小高达 2048 位的应用程序。

    7.致谢

    感谢 Kobey DeVale 在早期探索中提供的帮助-

    系统。 这项工作部分得到了来自
    庞巴迪运输公司,通用汽车合作伙伴-
    卡内基梅隆大学的 rative 实验室和
    宾夕法尼亚基础设施技术联盟。

    8. 参考资料

    [Baicheva98] Baicheva, T., S. Dodunekov & P.​​ Kazakov, “关于

    具有 8 位冗余的循环冗余校验码
    跳舞,”

    电脑通讯

    ,卷。 21, 1998, p.

    1030-1033.

    [Baicheva00] Baicheva, T., S. Dodunekov & P.​​ Kazakov, “Unde-

    循环冗余的检测错误概率性能
    16 位冗余的 dancy 校验码,”

    IEEE 过程。

    通讯。

    ,卷。 147号 10月5日 2000 年,第 101-1 页 253-256。

    [博世91] 博世,

    CAN规范

    , 第 2 版,1991 年。

    [Castagnoli93] Castagnoli, G., S. Braeuer & M. Herrman,

    “优化循环冗余校验码
    24 位和 32 位奇偶校验位”,

    IEEE 跨。 关于通讯

    ,

    卷。 41,第 6 期,1993 年 6 月。

    [Gilmore02] Gilmore, J.,“并行 CRC 方程生成器”

    (源代码),2002 年 10 月 22 日访问:
    http://www.physics.ohio-state.edu/~cms/crc_generator

    [ETSI02]

    搜索,

    无线电广播系统; 数据收音机

    频道(DARC); 无线信息娱乐系统
    转发和远程分配,ETSI EN 300 751,V1.2.1,

    2002 年 10 月。

    [Funk88] Funk, G.,《标准框架的性能比较》

    IEC规定的传输格式FT1.2和FT2
    TC57",

    ntzArchive 第 10 卷

    ,1988 年,第 217-221 页。

    [G704]

    国际的

    电信

    联盟,

    一般的

    数字传输系统的方面:同步
    在 1544、6312、2048、8488 和 44 处使用的帧结构
    736 kbit/s 等级,ITU-T 建议书
    G.704(以前称为“CCITT 建议书”)

    , 1995 年 7 月。

    [G832] 国际电信联盟,

    的运输

    PDH 网络上的 SDH 元素:帧和复用
    结构,ITU-T 建议 G.832(以前
    “CCITT 推荐”)

    , 1993 年 11 月。

    [Jaffer03]

    杰弗,

    一个。,

    “数学

    包裹:

    循环的

    校验和”,于 2003 年 9 月 27 日在
    http://www.swiss.ai.mit.edu/~jaffer/slib_4.html#IDX522

    [Kazakov01] Kazakov, P.,“快速计算

    CRC码的最小权重词,”

    IEEE 跨。 在-

    形成论

    , (47) 3, 2001 年 3 月,第 1190-1195 页。

    [Koopman01] Koopman, P. & T. Chakravarty,“分析

    列车通信网络协议错误检测
    能力”,2001 年 2 月 25 日,http://www.tsd.org/papers/

    [库普曼02]

    Koopman, P.,“32 位循环冗余码

    用于互联网应用,”

    国际 会议。 可靠的系统

    和网络 (DSN)

    , 华盛顿特区,2002 年 7 月,pp.

    459-468.

    [Lin83] Lin, Shu & D. Costello,

    差错控制编码

    ,

    普伦蒂斯·霍尔,1983 年。

    [MPT1327] MX.com,

    错误检测和纠正

    使用 MX429A 或 MX809 的 MPT1327 格式消息
    设备,应用笔记 MPT1327

    , 1999.

    [Ottosson01] Ottosson, T., T. Eriksson, P. Frenger, T. Ringström

    & J. Samuelsson,“crc.cpp”,1.8 版,2003 年 5 月 22 日,网址:
    http://itpp.sourceforge.net/crc_8cpp-source.html

    [Peterson72] Peterson, W. & E. Weldon,

    纠错

    代码

    ,麻省理工学院出版社,第二版,1972 年。

    [Press92] Press, W., S. Teukolsky, W. Vetterling, & B. Flannery,

    C 中的数值方法(第 2 版)

    , 剑桥出版社,2002 年。

    [RFC3095] Bormann, C.(编辑),

    RFC 3095 - 稳健标头

    压缩(ROHC):框架和四个配置文件:RTP,
    UDP、ESP 和未压缩

    , 2001, 访问:

    http://www.faqs.org/rfcs/rfc3095.html

    [Smbus00] SBS 实施者论坛,

    系统管理总线

    (SMBus)规范,

    2.0 版,2000 年 8 月 3 日。

    [Tanenbaum96] Tanenbaum, A.,

    计算机网络

    (第 3 版),

    普伦蒂斯·霍尔,1996 年。

    [USB00]

    通用串行总线规范

    ,修订版 2.0,2000 年。

    [Wells99] 威尔斯,R.,

    应用编码和信息论

    工程师

    , 普伦蒂斯-霍尔, 1999.

    [Whitfield01] Whitfield, H.,“用于循环冗余的 XFCN

    检查计算”,2001 年 4 月 24 日,访问地址:
    http://主页。
    cs.ncl.ac.uk/harry.whitfield/home.formal/CRCs.html

    10


    勘误表

     

     

     

    下列的

     

    更正

     

     

    到过

     

    制成

     

     

    这个

     

    纸:

     

     

    8/3/2014:

        

     

    6,

     

    桌子

     

    3

     

    钢筋混凝土

     

    0x5D7

     

    提供

     

    高清=5

     

    向上

     

     

    长度

     

    26

     

    位。

     

     

    原来的

     

     

    表明的

     

    只要

     

    向上

     

     

    25

     

    位。

     

    谢谢

     

     

    伯托尔德

     

     

    为了

     

    报告

     

    这个

     

    问题。