Перейти к содержанию
    

Восстановить полином CRC16 по функции табличного рассчета

Все нормально получается. У Вас-то что выходит?

 

Используя функцию из первого поста: 0x5EC4

Используя калькулятор с вашими настройками 0x3E04

5EC4 != 3E04

 

Или я что-то не так понимаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Табличка какая-то левая.

У меня такая:

        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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Табличка какая-то левая.

У меня такая:

Ага, ясно. Я такую тоже встречал - начинает отличаться с третьей строчки...

А поиском по строчке из моей таблицы выдает всего пару исходников (причем, похоже что родственных).

Похоже, не судьба полином подобрать будет :)

Спасибо всем, кто старался помочь!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Табличку можно самому сформировать для любого полинома.

Чтобы не было недоразумений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно восстановить полином (для реализации его в FPGA) по следующему алгоритму расчета CRC16

 

Так может проще не искать полином? Просто зашейте эту таблицу в FPGA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так может проще не искать полином? Просто зашейте эту таблицу в FPGA.

 

 

http://electronix.ru/forum/index.php?showt...st&p=962810

 

В принципе, пока из положения вышел (ПЗУ в FPGA + расчет аналогичный как в плате), но ИМХО это не сильно красиво да и свои минусы есть (либо создавать по инстансу ПЗУ для каждого контроллера (а их десятки будут, те затраты Nx256*2), либо продумывать разделение доступа к одному

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так может проще не искать полином? Просто зашейте эту таблицу в FPGA.

Ага, а потом сравните затраты на полкило таблицы и один 16р сдвиговый регистр с обратными связями.

К тому же, как оказалось, таблица неправильная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К тому же, как оказалось, таблица неправильная.

В том то и беда, что неправильная. Девайс генерит CRC именно по этой, неправильной таблице. А вносить изменения в девайс пока нет ни времени, ни возможности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В том то и беда, что неправильная. Девайс генерит CRC именно по этой, неправильной таблице. А вносить изменения в девайс пока нет ни времени, ни возможности.

Значит, это уже не ЦРЦ, а чертечто. Можно ещё граблей наловить.

 

Например, свернув сообщение и сумму и не получив ожидаемого нуля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, свернув сообщение и сумму и не получив ожидаемого нуля.

Если такое будет вылезать, то возможен другой подход: считать CRC принятого пакета до старой CRC и затем сравнивать их.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема в том что ваши таблицы не простые, а разбиты по блокам из 16 значений,

для которых есть свое число инициализации. Например таблица из поста 17:

 

- Для первых 16 значений [0x0000, 0x1189, 0x2312 ... ] CRC poly : $1189 CRC init: $0000

- Для вторых 16 значений [0x1081, 0x0108, 0x3393 ... ] CRC poly : $1189 CRC init: $5DEF

- Для третьих 16 значений [0x2102, 0x308b, 0x0210 ... ] CRC poly : $1189 CRC init: $BBDE

 

Честно говоря сам полином и числа инициализации выбраны не стандартные.

 

Можно проверить и на калькуляторе, для числа $10, CRC poly : $1189 CRC init: $5DEF

результат будет 0x1081 (по таблице).

post-57986-1314877968_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...