SPRACR3A april 2020 – may 2023 F29H850TU , F29H859TU-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
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.
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).
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:
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: