TMS570LC4357: TMS570LC43x CRC PSA Signature Register – Need exact software implementation to reproduce hardware signature

Part Number: TMS570LC4357

I am using the CRC module in FULL_CPU mode and trying to reproduce the PSA Signature Register algorithm in software.

From the TRM:

Polynomial:
x^64 + x^4 + x^3 + x + 1

MSB of DATA is shifted first.

I performed the following hardware tests by writing a single 64-bit value to the PSA Signature Register and reading back PSA_SIGREGL1 and PSA_SIGREGH1.

Observed signatures:

Input = 0x0000000000000000
Output = 0x0000000000000000

Input = 0xFFFFFFFFFFFFFFFF
Output = 0x000000CA00000000

Input = 0x0102030405060708
Output = 0x1B362D6C775A41D8

Input = 0x8000000000000000
Output = 0x80000000000000AF

I implemented the LFSR described in the TRM using:

  • Polynomial x^64 + x^4 + x^3 + x + 1

  • MSB-first shifting

  • 64-bit seed = 0

The software reproduces some results but does not exactly match all hardware signatures.

Could TI clarify:

  1. Is the PSA Signature Register using the exact polynomial shown in TRM section 18.2.3?

  2. Is any byte swap or word swap applied internally before compression?

  3. When writing a 64-bit value to the PSA Signature Register, what is the exact bit ordering presented to the LFSR?

  4. Are PSA_SIGREGL1 and PSA_SIGREGH1 returned in the same order as the internal 64-bit signature or swapped?

My goal is to generate the exact PSA signature on a PC application for interoperability with a TMS570LC43x target.