реклама на сайте
подробности

 
 
> Восстановить полином CRC16 по функции табличного рассчета
Dima_G
сообщение Aug 17 2011, 02:27
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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 - не совпадает sad.gif
Пробовал сравнивать с иными полиномами - тоже безуспешно.
Железяка защищает этой CRC данные по HDLC

Может кто-нибудь сталкивался и сможет помочь?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
thermit
сообщение Aug 17 2011, 14:12
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Aug 17 2011, 14:52
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(thermit @ Aug 17 2011, 21:12) *
Табличка какая-то левая.
У меня такая:

Ага, ясно. Я такую тоже встречал - начинает отличаться с третьей строчки...
А поиском по строчке из моей таблицы выдает всего пару исходников (причем, похоже что родственных).
Похоже, не судьба полином подобрать будет sm.gif
Спасибо всем, кто старался помочь!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016