SPRUII0F May 2019 – June 2024 TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S
Table 44-6 lists the memory-mapped registers for the GCRC_REGS registers. All register offset addresses not listed in Table 44-6 should be considered as reserved locations and the register contents should not be modified.
| Offset | Acronym | Register Name | Write Protection | Section |
|---|---|---|---|---|
| 0h | CRCCTRL | CRC Control Register | Go | |
| 4h | CRCPOLY | CRC Polynomial Register | Go | |
| 8h | CRCDATAMASK | CRC Data Mask Register | Go | |
| Ch | CRCDATAIN | CRC Data Input Register | Go | |
| 10h | CRCDATAOUT | CRC Data Output Register | Go | |
| 14h | CRCDATATRANS | CRC Transformed Data Register | Go |
Complex bit access types are encoded to fit into small table cells. Table 44-7 shows the codes that are used for access types in this section.
| Access Type | Code | Description |
|---|---|---|
| Read Type | ||
| R | R | Read |
| Write Type | ||
| W | W | Write |
| Reset or Default Value | ||
| -n | Value after reset or the default value | |
| Register Array Variables | ||
| i,j,k,l,m,n | When these variables are used in a register name, an offset, or an address, they refer to the value of a register array where the register is part of a group of repeating registers. The register groups form a hierarchical structure and the array is represented with a formula. | |
| y | When this variable is used in a register name, an offset, or an address it refers to the value of a register array. | |
CRCCTRL is shown in Figure 44-3 and described in Table 44-8.
Return to the Summary Table.
This is the Control Register for GCRC module.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | DATATYPE | ||||||
| R-0h | R/W-2h | ||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| BITREVERSE | ENDIANNESS | POLYSIZE | |||||
| R/W-0h | R/W-0h | R/W-20h | |||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-10 | RESERVED | R | 0h | Reserved |
| 9-8 | DATATYPE | R/W | 2h | Defines the datatype of the element of the data array, on which CRC is to be computed. 00 : Byte data type 01 : 16 bit data type 10 : 32 bit data type 11 : Reserved Note: This field works in conjunction with ENDIANNESS field. Reset type: CM.RESETn |
| 7 | BITREVERSE | R/W | 0h | 0: DATAIN bus to the CRC engine is sent as is. 1: DATAIN bus to the CRC engine is bit reversed. Reset type: CM.RESETn |
| 6 | ENDIANNESS | R/W | 0h | 0: Little endian. Endianness applies to word and half word writes. 1: Big endian. Endianness applies to word and half word writes. Note: This field works in conjunction with DATATYPE field. Reset type: CM.RESETn |
| 5-0 | POLYSIZE | R/W | 20h | POLYSIZE: The value in this field determines the order of the polynomial. For example a value of 0x20 implies an order of 32,a value of 0x18 implies an order of 24 and a value of 0x10 implies an order of 16 and so on. Note: A value of 0x0 is not valid and values more than 0x20 will be treated as 0x20. Reset type: CM.RESETn |
CRCPOLY is shown in Figure 44-4 and described in Table 44-9.
Return to the Summary Table.
This register is used to store the Polynomial to used for the CRC calculation.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| POLY | |||||||||||||||||||||||||||||||
| R/W-04C11DB7h | |||||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | POLY | R/W | 04C11DB7h | Polynomial value. For example, if the 1.x^3 + 0.x^2 + 1.x^1 + 1.x^0 (CRC3), taking the coeffecients and forming a binary string would result in 1011. The value to be programmed in this field is 11 (0x3), as MSB is assumed to be 1. Note: CRCCTRL.POLYSIZE should be programmed to 0x3 to indicate it is a CRC3 polynomial. Note: A value of zero for the POLY field in invalid and the behavior is not deterministic. Reset type: CM.RESETn |
CRCDATAMASK is shown in Figure 44-5 and described in Table 44-10.
Return to the Summary Table.
This register is used to apply a data mask to the input data and decide which bits are used in CRC calculation.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||||||||||
| R-0h | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | DATAMASK | ||||||||||||||
| R-0h | R/W-0h | ||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-5 | RESERVED | R | 0h | Reserved |
| 4-0 | DATAMASK | R/W | 0h | Number of bits to be masked. For example, DATAMASK equals 0x3, 3 most significant bits of data will be masked. Note: For byte data type (DATATYPE = 0x0) DATAMASK < 8, For 16 bit data type (DATATYPE = 0x1) DATAMASK < 16, For 32 bit data type (DATATYPE = 0x2) DATAMASK < 32, Reset type: CM.RESETn |
CRCDATAIN is shown in Figure 44-6 and described in Table 44-11.
Return to the Summary Table.
This register contains the raw input data (before transformations) that will be used in the CRC calculation.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATAIN | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATAIN | R/W | 0h | DATAIN field: This register holds the last value on which CRC was computed. Reset type: CM.RESETn |
CRCDATAOUT is shown in Figure 44-7 and described in Table 44-12.
Return to the Summary Table.
This register contains the calculated CRC value. It is also used to set an initial seed value for the CRC calculation.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATA | R/W | 0h | CRCDATAOUT value: This register stores the computed CRC, It can be initialized to the required seed value before the CRC computation begins, in which case it will act as a seed register. When this register is written, the value written into this register is considered as data (with a seed value of 0) and the CRC for this value is updated back to CRCDATAOUT register (This is required for Type-2 CRC implementation). Note: Seed value needs to be written only after all the other configuration registers are initialized for proper functioning of CRC module. Reset type: CM.RESETn |
CRCDATATRANS is shown in Figure 44-8 and described in Table 44-13.
Return to the Summary Table.
This register contains the actual data that will be used for the CRC calculations. This is the value of CRCDATAIN after the bit mask, bit reverse, and data endianess transformations.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATAIN | |||||||||||||||||||||||||||||||
| R-0h | |||||||||||||||||||||||||||||||
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | DATAIN | R | 0h | DATAIN field: This register holds the the data value as seen by the core CRC engine after endianess, bit reversal and masking transformation. Can be used for debug. Reset type: CM.RESETn |