SPRUJB6B November 2024 – May 2025 AM2612
CRC engine work in push through mode, that means it works on streaming data. This section describes SW programming model for CRC engines.
Initial seed value to be used. If starting seed value is other than all “0” or all “1” that it should be programmed to DTHE_S/P_CRC_SEED register.
Configure the starting seed value in DTHE_S/P_CRC_SEED if DTHE_S/P_CRC_CTRL[14:13] is set to “00”. In this option is set to “00” and seed register is not programmed, the residual seed from previous computation is taken as starting value.
If DTHE_S/P_CRC_CTRL[12] is set to select byte, CRC engine operates in byte mode and only Least significant byte is used for CRC calculation.
If DTHE_S/P_CRC_CTRL[12] is set to select byte, CRC engine operates in byte mode and only Least significant byte is used for CRC calculation.
At the end of CRC calculation i.e. when entire input data is passed through CRC
engine the result is available at following register
Post process CRC result in DTHE_S/P_CRC_RSLT_PP. post processing options are selectable through “oBR” and “oInv” bits of register DTHE_S/P_CRC_CTRL.
Data endian convention for CRC engine.
Data to be written into DTHE_S/P_CRC_DIN register in following way:
For example the input stream is expressed as byte stream Din
Din = {D0,D1,D2,D3,D4,D5,D6D7,D8,D9,D10,D11,D12,D12,D13,D14,D15,D16……..}
It should be fed to CRC engine as follows :
Byte Mode: DTHE_S/P_CRC_DIN register should be written in following order
{00, 00, 00, D0}
{00, 00, 00, D1}
{00, 00, 00, D2}
{00, 00, 00, D3}
{00, 00, 00, D4}
{00, 00, 00, D5}
{00, 00, 00, D6}
Word Mode: DTHE_S/P_CRC_DIN register should be written in following order
{D3, D2, D1, D0}
{D7, D6, D5, D4}
{D11, D10, D9, D8}