SPRACR3A 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

 

  1.   CRC Engines in C2000 Devices
  2.   Trademarks
  3. Introduction
    1. 1.1 Acronyms
  4. BGCRC
  5. GCRC
  6. VCU CRC
  7. ERAD CRC
  8. CLA CRC (PSA)
    1. 6.1 CLA PSA
      1. 6.1.1 PSA for PAB
      2. 6.1.2 PSA for DWDB
      3. 6.1.3 Considerations While Computing the PSA
  9. CLA-PROMCRC – CLA Program Integrity check
  10. CRC Calculation Using Software
  11. CRC Recommendation for Use-Cases
  12. 10CRC Modules Comparison
  13. 11CRC Engines vs Devices Mapping Table
  14. 12References
  15. 13Revision History

VCU CRC

The VCU module on C2000 devices performs CRC computation in addition to Viterbi and Complex Math operations. It provides special instructions to speed up CRC computation which otherwise take several cycles on the C28x CPU. 3 different types of VCU modules are present on C2000 devices. To determine the specific VCU module (if any) available on a specific device, see the C2000 Real-Time Control Peripherals Reference Guide.

  • VCU Type0 or Type1 (variously represented as VCU0, VCU-I) – they are identical.
  • VCU Type2 (variously represented as VCU2, VCU-II). This is a newer version of VCU0.
  • VCRC - This is the latest version of the module which contains only CRC functionality. Viterbi and Complex Math functionality have been removed.

The module supports computation of 8-bit, 16-bit, 24-bit (except in VCU0), or 32-bit CRCs. The VCRC module supports user configurable polynomials, flexible both in value and size (1 to 32 bits). It also supports user configurable data sizes (1 to 8 bits).

Table 4-1 Features of Different VCU Modules
8-Bit CRC
Polynomial
16-Bit CRC Polynomial 24-Bit CRC Polynomial 32-Bit CRC Polynomial Configurable Data and Polynomial
VCU0 0x07 0x8005
0x1021
N/A 0x4C11DB7 N/A
VCU2 0x07 0x8005
0x1021
0x5D6DCB 0x4C11DB7
0x1EDC6F41
N/A
VCRC 0x07 0x8005
0x1021
0x5D6DCB 0x4C11DB7
0x1EDC6F41
1-8 bit data
1-32 bit polynomial

Fixed polynomials are supported by VCU0/VCU2 (listed in Table 4-1), and their error detection capabilities are as follows:

  • Can detect all single-bit and double-bit errors in the message (of arbitrary length)
  • Can detect any error pattern that has an odd number of errors
  • Can detect all burst errors of length up to the length of the CRC, and a fraction of all longer bursts (1 - 2-n)

For more information, see the TMS320C28x Extended Instruction Sets Technical Reference Manual.

The above mentioned capabilities provide the user with many options to meet varied application requirements. CRC computation can be performed on data from ROM, RAM, or FLASH. VCU also features bit-order support - CRC can be computed on data taken from memory "as is" or flipped. The latter is called a "Reflected CRC".

C2000Ware contains assembly-optimized software libraries for the VCU, and examples that demonstrate their use through C-callable assembly functions. In addition, for comparison, CRCs are computed using a Look-up Table approach (written in C), and the Linker generated CRC (at link-time; this is a feature provided by the C2000 Code Generation Tools).

The libraries support even or odd Parity support (Endianness). With even parity, CRC input computation begins on the low-byte in memory, while with odd parity, it begins with the high-byte in memory.

For software support, see C2000ware:

  • VCU0 - CRC C-callable assembly implementations can be found at C2000Ware_X_XX_XX_XX\libraries\dsp\VCU\c28\source\vcu0\crc
  • VCU2 - CRC C-callable assembly implementations can be found at C2000Ware_X_XX_XX_XX\libraries\dsp\VCU\c28\source\vcu2\crc.
  • Examples can be found at: C2000Ware_X_XX_XX_XX\libraries\dsp\VCU\c28\examples\crc