• Menu
  • Product
  • Email
  • PDF
  • Order now
  • C2000 器件中的 CRC 引擎

    • ZHCACL4A april   2020  – may 2023 TMS320F280021 , TMS320F280021-Q1 , TMS320F280023 , TMS320F280023-Q1 , TMS320F280023C , TMS320F280025 , TMS320F280025-Q1 , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S , TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

       

  • CONTENTS
  • SEARCH
  • C2000 器件中的 CRC 引擎
  1.   1
  2.   C2000 器件中的 CRC 引擎
  3.   商标
  4. 1 引言
    1. 1.1 首字母缩写词
  5. 2 BGCRC
  6. 3 GCRC
  7. 4 VCU CRC
  8. 5 ERAD CRC
  9. 6 CLA CRC (PSA)
    1. 6.1 CLA PSA
      1. 6.1.1 适用于 PAB 的 PSA
      2. 6.1.2 适用于 DWDB 的 PSA
      3. 6.1.3 计算 PSA 时的注意事项
  10. 7 CLA-PROMCRC – CLA 程序完整性检查
  11. 8 使用软件计算 CRC
  12. 9 针对具体用例的 CRC 建议
  13. 10CRC 模块比较
  14. 11CRC 引擎与器件映射表
  15. 12参考文献
  16. 13修订历史记录
  17. 重要声明
search No matches found.
  • Full reading width
    • Full reading width
    • Comfortable reading width
    • Expanded reading width
  • Card for each section
  • Card with all content

 

Application Note

C2000 器件中的 CRC 引擎

本资源的原文使用英文撰写。 为方便起见,TI 提供了译文;由于翻译过程中可能使用了自动化工具,TI 不保证译文的准确性。 为确认准确性,请务必访问 ti.com 参考最新的英文版本(控制文档)。

摘要

本应用报告将介绍 C2000 器件系列中提供的各种 CRC 模块。文中提供了软件示例参考,并重点说明了 CRC 模块之间的差异。此外,节 9还讨论了为特定用例选择 CRC 模块的相关指导。

商标

C2000is a TM ofTI corporate name.

Other TMs

1 引言

循环冗余校验 (CRC) 是一种用于通信网络和数据存储的错误检测机制。节 11中讨论的 C2000 系列器件包含许多 CRC 模块(节 10中讨论了不同的属性),这些模块提供了相关选项,让终端应用程序构建器为应用程序选择合适的引擎。此外,在 CLB、FSI、USB、CAN、EMAC、EtherCAT 等本文档未讨论的 C2000 器件中存在 CRC 引擎。如果数据和相应的 CRC 一起修改,该机制无法检测到这一情况。

1.1 首字母缩写词

表 1-1 首字母缩写词
首字母缩写词全称
BGCRC后台循环冗余校验
CAN控制器局域网
CLA控制律加速器(F28x 系列器件的协处理器)
CLB可配置逻辑块
CM连接管理器
CRC循环冗余校验
ECC错误校正码
EMAC以太网介质访问控制器
ERAD嵌入式实时分析和诊断单元
FSI快速串行接口
PAB程序地址总线
GCRC通用循环冗余校验
PROMCRC程序 ROM CRC
PSA并行签名分析
VCUViterbi、复杂数学和 CRC 单元

2 BGCRC

后台循环冗余校验 (BGCRC) 引擎可用于计算存储器区域的 CRC,而无需使用 CPU 或 CLA。然后可以使用 CRC 计算结果来检测存储器损坏。BGCRC 只需配置一次即可使用。BGCRC 在计算 CRC 后与配置的黄金值进行比较,然后可以在发现有任何错误时触发 NMI 或 CLA 任务。

BGCRC 模块能够作为后台进程从存储器中连续读取数据,并在应用程序运行时直接在后台工作。读取发生在空闲时间(此时 CPU、CLA、DMA 等其他主器件均未访问存储块),因此功能访问不受影响。该模块还在读取存储器时执行 ECC/奇偶校验。读取期间发生的任何 ECC 或奇偶校验错误都将通过设置相应的 NMI 标志并生成一个中断(如果已配置)来指示。

该模块还提供了一个用于在配置后锁定和提交寄存器值的选项。CRC 计算时间也可以使用内部看门狗进行监控。引擎需要一个周期来计算每个 32 位字的 CRC。但是,由于 BGCRC 只在空闲时间内工作,因此一个存储块所用的总时间可能因 CPU/DMA/CLA 存储器对配置的存储块的访问情况而异。

该器件在 CPU1 和 CPU2 子系统中都有用于 CPU 和 CLA 的独立 BGCRC 实例。

更多有关计算时间和该模块中其他特性的详细信息,请参阅 TMS320F2838x 微控制器技术参考手册。

如需获取软件支持,请参阅 C2000ware:

  • driverlib 可参考 <C2000Ware 安装文件夹>\driverlib\<器件>\driverlib
  • 示例可参考 <C2000Ware 安装文件夹>\driverlib\<器件>\examples\c28x\bgcrc

3 GCRC

通用循环冗余校验 (GCRC) 仅适用于 F2838x 的连接管理器 (Cortex-M) 内核。此 CRC 引擎提供了用于计算 CRC 的自定义多项式选项。它能够计算字节、半字或字数据的 CRC。配置该模块后,CPU/DMA 应向引擎提供数据。

其他特性包括:

  • 能够定义数据的字节序和源数据的数据类型
  • 能够反转位顺序
  • 能够选择参与 CRC 计算的数据位

该模块还支持固定多项式路径,其中 CRC 配置按照以下值固定。此固定数据路径将在单个周期内计算给定数据集的 CRC。

  • 多项式:0x04C11DB7
  • 字节序:小端
  • 位反转:否
  • 数据类型:32 位
  • 数据掩码:无

对于 n 个数据字节,GCRC 需要 2n+2 个周期(针对 0x04c11db7 以外的多项式)。

更多有关该模块的详细信息,请参阅 TMS320F2838x 微控制器技术参考手册。

如需获取软件支持,请参阅 C2000ware:

  • driverlib 可参考 <C2000Ware 安装文件夹>\driverlib\f2838x\driverlib_cm
  • 示例可参考 <C2000Ware 安装文件夹>\driverlib\f2838x\examples\cm\gcrc

4 VCU CRC

除了 Viterbi 和复杂数学运算之外,C2000 器件上的 VCU 模块还执行 CRC 计算。该模块提供特殊指令来加速 CRC 计算,如果不使用该模块,在 C28x CPU 上可能需要几个周期进行此计算。C2000 器件上存在 3 种不同类型的 VCU 模块。要确定特定器件上可用的特定 VCU 模块(如果有),请参阅 C2000 实时控制外设参考指南。

  • VCU Type0 或 Type1(以不同形式表示为 VCU0、VCU-I),它们完全相同。
  • VCU Type2(以不同形式表示为 VCU2、VCU-II)。这是 VCU0 的较新版本。
  • VCRC - 这是模块的最新版本,仅包含 CRC 功能。删除了 Viterbi 和复杂数学功能。

该模块支持 8 位、16 位、24 位(VCU0 除外)或 32 位 CRC 的计算。VCRC 模块支持用户可配置的多项式,该多项式的值和大小(1 至 32 位)都很灵活。该模块还支持用户可配置的数据大小(1 至 8 位)。

表 4-1 不同 VCU 模块的特性
8 位 CRC
多项式
16 位 CRC 多项式 24 位 CRC 多项式 32 位 CRC 多项式 可配置数据和多项式
VCU0 0x07 0x8005
0x1021
不可用 0x4C11DB7 不可用
VCU2 0x07 0x8005
0x1021
0x5D6DCB 0x4C11DB7
0x1EDC6F41
不可用
VCRC 0x07 0x8005
0x1021
0x5D6DCB 0x4C11DB7
0x1EDC6F41
1-8 位数据
1-32 位多项式

VCU0/VCU2 支持固定多项式(如表 4-1 所示),这些多项式的错误检测功能如下:

  • 可以检测消息(任意长度)中的所有 single-bit 和 double-bit 错误
  • 可以检测任何具有奇数个错误的错误模式
  • 可以检测长度不超过 CRC 长度的所有突发错误,以及所有较长突发的一部分 (1 - 2-n)

更多信息,请参阅 TMS320C28x 扩展指令集技术参考手册。

上述功能为用户提供了多种选择来满足各种应用要求。可以对来自 ROM、RAM 或闪存的数据执行 CRC 计算。VCU 还支持位顺序,可以对“按原样”从存储器获取的数据或翻转的数据计算 CRC,后者称为“反射 CRC”。

C2000Ware 包含用于 VCU 并经过汇编优化的软件库,以及一些通过 C 语言调用的汇编函数演示软件库用法的示例。此外,为了进行比较,可以使用查找表方法(用 C 语言编写)计算 CRC,并获取链接器生成的 CRC(在链接时;这是 C2000 代码生成工具提供的功能)。

这些库支持偶校验或奇校验(字节序)。对于偶校验,CRC 输入计算从存储器中的低字节开始,而对于奇校验,则是从存储器中的高字节开始。

如需获取软件支持,请参阅 C2000ware:

  • VCU0 - 可在 C2000Ware_X_XX_XX_XX\libraries\dsp\VCU\c28\source\vcu0\crc 中找到 CRC C 语言调用的汇编实现。
  • VCU2 - 可在 C2000Ware_X_XX_XX_XX\libraries\dsp\VCU\c28\source\vcu2\crc 中找到 CRC C 语言调用的汇编实现。
  • 示例可在以下位置找到:C2000Ware_X_XX_XX_XX\libraries\dsp\VCU\c28\examples\crc

5 ERAD CRC

ERAD 模块中的 CRC 单元会监控 CPU 总线,并在执行自检代码时计算 CRC。CRC 单元的主要目的是确保 CPU 在多次迭代中执行相同的软件测试库时保持功能不变。这些 CRC 单元会监控不同的 CPU 接口,不能用于程序或数据存储器的 CRC 计算。

更多详细信息,请参阅 TMS320F28004x 微控制器技术参考手册 和 TMS320F2838x 微控制器技术参考手册。

6 CLA CRC (PSA)

6.1 CLA PSA

并行签名分析 (PSA) 可确保控制律加速器 (CLA) 上代码执行的完整性。CLA-PSA 逻辑可用于计算 CLA 的程序地址总线 (PAB) 和数据写入数据总线 (DWDB) 的签名。黄金签名可以离线计算得出,也可以在应用程序的初始化阶段计算得出。随后可以将该计算结果与执行期间计算的签名进行比较,以确保执行代码的正确性。

6.1.1 适用于 PAB 的 PSA

交叉检查适用于 PAB 的 PSA 将确保代码执行的正确顺序。使用适用于 PAB 的 PSA 可以检测由故障导致的意外代码分支。这是使用多项式 1 + x + x2 + x22 + x32 计算得出的。

6.1.2 适用于 DWDB 的 PSA

适用于 DWDB 的 PSA 可用于确保写入数据的完整性。如果需要计算一组存储器位置的 PSA(用于定期检查配置寄存器、静态存储器内容等的完整性),则需要首先将其读取到 CLA,然后写入到虚拟位置。适用于 DWDB 的 PSA 允许使用 MPSACTL.MPSA2CFG 配置来配置多项式。

  • 00 – PSA (1 + x + x2 + x22 + x32)
  • 01 – CRC32 (1 + x + x2 + x4 + x5 + x7 + x8 + x10 + x11 + x12 + x16 + x22 + x23 + x26 + x32)

6.1.3 计算 PSA 时的注意事项

  • 建议在事件模式下计算 PSA(MPSACTL.MPABCYC = 1 且 MPSACTL.MDWDBCYC = 1)。在周期模式下计算 PSA 对存储器访问有很强的依赖性,而这种依赖性在实际应用中可能难以确保。
  • 应在 PSA2 停止时执行多项式配置。

 

Texas Instruments

© Copyright 1995-2025 Texas Instruments Incorporated. All rights reserved.
Submit documentation feedback | IMPORTANT NOTICE | Trademarks | Privacy policy | Cookie policy | Terms of use | Terms of sale