|
Восстановить полином CRC16 по функции табличного рассчета |
|
|
|
Aug 17 2011, 02:27
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Добрый день! Нужно восстановить полином (для реализации его в FPGA) по следующему алгоритму расчета CRC16 Код unsigned crc16_table[256] = {
0x0000,0x1189,0x2312,0x329b,0x4624,0x57ad,0x6536,0x74bf,
0x8c48,0x9dc1,0xaf5a,0xbed3,0xca6c,0xdbe5,0xe97e,0xf8f7,
0x1891,0x0918,0x3b83,0x2a0a,0x5eb5,0x4f3c,0x7da7,0x6c2e,
0x94d9,0x8550,0xb7cb,0xa642,0xd2fd,0xc374,0xf1ef,0xe066,
0x3122,0x20ab,0x1230,0x03b9,0x7706,0x668f,0x5414,0x459d,
0xbd6a,0xace3,0x9e78,0x8ff1,0xfb4e,0xeac7,0xd85c,0xc9d5,
0x29b3,0x383a,0x0aa1,0x1b28,0x6f97,0x7e1e,0x4c85,0x5d0c,
0xa5fb,0xb472,0x86e9,0x9760,0xe3df,0xf256,0xc0cd,0xd144,
0x6244,0x73cd,0x4156,0x50df,0x2460,0x35e9,0x0772,0x16fb,
0xee0c,0xff85,0xcd1e,0xdc97,0xa828,0xb9a1,0x8b3a,0x9ab3,
0x7ad5,0x6b5c,0x59c7,0x484e,0x3cf1,0x2d78,0x1fe3,0x0e6a,
0xf69d,0xe714,0xd58f,0xc406,0xb0b9,0xa130,0x93ab,0x8222,
0x5366,0x42ef,0x7074,0x61fd,0x1542,0x04cb,0x3650,0x27d9,
0xdf2e,0xcea7,0xfc3c,0xedb5,0x990a,0x8883,0xba18,0xab91,
0x4bf7,0x5a7e,0x68e5,0x796c,0x0dd3,0x1c5a,0x2ec1,0x3f48,
0xc7bf,0xd636,0xe4ad,0xf524,0x819b,0x9012,0xa289,0xb300,
0xc488,0xd501,0xe79a,0xf613,0x82ac,0x9325,0xa1be,0xb037,
0x48c0,0x5949,0x6bd2,0x7a5b,0x0ee4,0x1f6d,0x2df6,0x3c7f,
0xdc19,0xcd90,0xff0b,0xee82,0x9a3d,0x8bb4,0xb92f,0xa8a6,
0x5051,0x41d8,0x7343,0x62ca,0x1675,0x07fc,0x3567,0x24ee,
0xf5aa,0xe423,0xd6b8,0xc731,0xb38e,0xa207,0x909c,0x8115,
0x79e2,0x686b,0x5af0,0x4b79,0x3fc6,0x2e4f,0x1cd4,0x0d5d,
0xed3b,0xfcb2,0xce29,0xdfa0,0xab1f,0xba96,0x880d,0x9984,
0x6173,0x70fa,0x4261,0x53e8,0x2757,0x36de,0x0445,0x15cc,
0xa6cc,0xb745,0x85de,0x9457,0xe0e8,0xf161,0xc3fa,0xd273,
0x2a84,0x3b0d,0x0996,0x181f,0x6ca0,0x7d29,0x4fb2,0x5e3b,
0xbe5d,0xafd4,0x9d4f,0x8cc6,0xf879,0xe9f0,0xdb6b,0xcae2,
0x3215,0x239c,0x1107,0x008e,0x7431,0x65b8,0x5723,0x46aa,
0x97ee,0x8667,0xb4fc,0xa575,0xd1ca,0xc043,0xf2d8,0xe351,
0x1ba6,0x0a2f,0x38b4,0x293d,0x5d82,0x4c0b,0x7e90,0x6f19,
0x8f7f,0x9ef6,0xac6d,0xbde4,0xc95b,0xd8d2,0xea49,0xfbc0,
0x0337,0x12be,0x2025,0x31ac,0x4513,0x549a,0x6601,0x7788
};
/* compute 16 bit CCITT crc using the table */
unsigned crc16(unsigned crc,unsigned b)
{
unsigned ret = crc16_table[(b ^ crc) & 0xff] ^ (crc >> 8);
return ret;
} Хоть в коде и написано что CCITT ( == 1021), но при проверке тестовых значений на онлайн калькуляторах CRC - не совпадает  Пробовал сравнивать с иными полиномами - тоже безуспешно. Железяка защищает этой CRC данные по HDLC Может кто-нибудь сталкивался и сможет помочь?
|
|
|
|
|
 |
Ответов
|
Aug 17 2011, 14:12
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Табличка какая-то левая. У меня такая: Код 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
|
|
|
|
|
Aug 17 2011, 14:52
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(thermit @ Aug 17 2011, 21:12)  Табличка какая-то левая. У меня такая: Ага, ясно. Я такую тоже встречал - начинает отличаться с третьей строчки... А поиском по строчке из моей таблицы выдает всего пару исходников (причем, похоже что родственных). Похоже, не судьба полином подобрать будет  Спасибо всем, кто старался помочь!
|
|
|
|
Сообщений в этой теме
Dima_G Восстановить полином CRC16 по функции табличного рассчета Aug 17 2011, 02:27 MrYuran Цитата(Dima_G @ Aug 17 2011, 06:27) Хоть ... Aug 17 2011, 04:53 Dima_G Цитата(MrYuran @ Aug 17 2011, 11:53) А за... Aug 17 2011, 04:59  MrYuran Цитата(Dima_G @ Aug 17 2011, 08:59) Вы пр... Aug 17 2011, 05:21   Dima_G Цитата(MrYuran @ Aug 17 2011, 12:21) Не, ... Aug 17 2011, 05:43    klop Когда то игрался с подобным. Вроде для реверсивног... Aug 17 2011, 06:14     Dima_G Цитата(klop @ Aug 17 2011, 13:14) Когда т... Aug 17 2011, 06:21      des00 Цитата(Dima_G @ Aug 17 2011, 00:21) Попро... Aug 17 2011, 06:52       Dima_G Цитата(des00 @ Aug 17 2011, 13:52) может ... Aug 17 2011, 07:02        klop было приблизительно так
Код// 0x1021
function ... Aug 17 2011, 08:34 thermit ЦитатаDima_G:
Хоть в коде и написано что CCITT ( =... Aug 17 2011, 09:19 Dima_G Цитата(thermit @ Aug 17 2011, 16:19) Поли... Aug 17 2011, 09:42 thermit Вот Aug 17 2011, 10:16 Dima_G Цитата(thermit @ Aug 17 2011, 17:16) Вот
... Aug 17 2011, 12:22 thermit Все нормально получается. У Вас-то что выходит? Aug 17 2011, 13:02 Dima_G Цитата(thermit @ Aug 17 2011, 20:02) Все ... Aug 17 2011, 13:40 MrYuran Табличку можно самому сформировать для любого поли... Aug 18 2011, 05:31 Ixt Цитата(Dima_G @ Aug 17 2011, 06:27) Нужно... Aug 18 2011, 07:20 Dima_G Цитата(Ixt @ Aug 18 2011, 14:20) Так може... Aug 19 2011, 01:39 MrYuran Цитата(Ixt @ Aug 18 2011, 11:20) Так може... Aug 19 2011, 05:09  Dima_G Цитата(MrYuran @ Aug 19 2011, 12:09) К то... Aug 19 2011, 06:45   MrYuran Цитата(Dima_G @ Aug 19 2011, 10:45) В том... Aug 19 2011, 06:49    Dima_G Цитата(MrYuran @ Aug 19 2011, 13:49) Напр... Aug 19 2011, 08:07 i-mir Проблема в том что ваши таблицы не простые, а разб... Sep 1 2011, 11:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|