ZHCACL4A april   2020  – may 2023 F28377D-SEP , F29P589DM-Q1 , F29P589DU-Q1 , 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

 

  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修订历史记录

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