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:
-
Is the PSA Signature Register using the exact polynomial shown in TRM section 18.2.3?
-
Is any byte swap or word swap applied internally before compression?
-
When writing a 64-bit value to the PSA Signature Register, what is the exact bit ordering presented to the LFSR?
-
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.