Мне нужно реализовать CRC16-CCITT для HDL C, как часть разработки некоторой функции для управления внешним HW (некоторый тип антенны LTE). Проблема в том, что, хотя я нашел много онлайн-реализаций для CRC16-CCITT, выходные значения не соответствуют значениям CR C, которые отправил нам поставщик HW.
Например, это первый HDL C рама (под названием «устройство сканирования»), которые должны быть направлены на устройство, в шестнадцатеричном формате: 7EFFBF81F02A0113000000000000000000000000000000000000000313000000000000000000000000000000000000007F0F7E
1004 * Как можно видеть, 7E в начале и в конце являются разделителями, а последние 4 шестнадцатеричные символы - это CR C - это означает, что 0x7F0F - это результат CR C.
Однако многие онлайн-калькуляторы CR C выдают результат 0x6CC3 (посмотрите здесь, например: http://www.zorc.breitbandkatze.de/crc.html, https://www.lammertbies.nl/comm/info/crc-calculation)
То же самое относится и к другой команде, которая является соответствующей командой "receive" для вышеупомянутого. команда RCV: 7E00BF81F018010F4B4D4B3032313941303035335A585806024B4D040130F1ED7E
, что означает, что 0xF1ED - это CR C, и, опять же, это не то, что я вижу в других калькуляторах, которые выдают 0x7 * 101 *, у которых * 0 * 7 *, * 0 * * 8 *. поставщика для разъяснений, и он прислал нам эту справочную таблицу, которую они используют:
cr c таблица: {0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6 c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472 c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87 c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453 c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4 c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0 xab7a, 0xbaf3, 0x5285, 0x430 c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e0, 0x0x0x0x0x0x0x0x0b0x0x0x0xb0x0x0x0x0x0x0x0x0x15x0x0x0x5x0x0x0x15x0x0x0x030. между прочим , 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5 c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5011, 0x411 c, 0xx0x0x0x0 0x0 0a0x0 0x0 0a0x0 0a0x0 0a0x0 0a , 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22 c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6 * тысяче сорок-девять *, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03 c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0x3 0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x5x5x0x0x5x5x5x5x5x5x5x5x5x105105105105105105 0305x5 0405x5 0405x5 0506x5x5x5x5x5x5x600x0306106x5x6006006006b0e0e0 0x5 c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0 xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4 c, 0x79d7, 0x685e, 0x1ce1, 0x0d68 , 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41 c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495 c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78}
Это не похоже на обычную таблицу CRC16-CCITT, найденную в Интернете, например, найденную онлайн CRC16-CCITT :
stati c const unsigned short CRC_CCITT_TABLE [256] = {0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18 C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F, 0x3D0 038B0 0 038B0 0 038B0 0D0 0D0 0D0 0D0 0 0 0 0 0 0 0 8 0 0 0 0 5 0 0 0 5 0 8 0 0 0 8 0 0 0 0 5 0 0 0 8 0 0 0 8 0 0 0 8 0 0 0 8 0 0 0 8 0 0 8 0 0 8 0 0 8 0 0 8 0 0 8 0 0 8 0 0 38 0 0 38 0 0 8 0 0 38 6 0 5 0 0 5 6 0 5 0 5 0 0 6 0 5 0 5 6 0 5 6 0 5 6 0 0 5 6 0 0 0 5 0 0 5 0 0 5 0 0 5 0 0 5 0 0 8 0 0 0 5 6 0 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5A C, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6 , 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7B C, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x78A0, 0x0x0x0x0x0x0x0x0x0x0x0. , 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBD C, 0x0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0BBXBXBXXXXXXXXXXXXXXX 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDE C, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD , 0xCFF C, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 0 x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10 C, 0xC12D, 0xF14E, 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0393x0x0x030B0x0x0x0x0x0x0x0x0x0x0x. 0xE37F, 0xF35E, 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52 C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447 , 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73 C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x6x0x0x0686x0x6x0x0686x0x6x0x0x0x6x0x0x6x0x0x6x0x068x0x068x0x068x10x060x64x10x06800x060x10x10650000 к ПОРЯДКАМ 0x6657, 0x6x0686x0686x060x10x070x070x10x1600 , 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 0xCB7D, 0xDB5 C, 0xEB3F, 0xB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B5B0B0B0B0B0B0B0B0BBXF 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, 0xED0F, 0xDD6 C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D , 0xDF7 C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0 x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0};
Я пытался использовать их таблицу вместо моей, в нашей реализации CR C, но мы все равно получаем другие результаты, чем их.
Кто-нибудь понимает, что здесь происходит? какой CR C является действительно правильным HDL C CRC16-CCITT? Каков правильный результат CRC16-CCITT для вышеуказанных кадров?
Большое спасибо, ребята!