eastwind 0 13 июня, 2007 Опубликовано 13 июня, 2007 · Жалоба Подскажите алгоритм подсчета CRC32 для пакета Ethernet? Перепробовал массу вариантов и полиномов. Но все время не совпадает с CRC реального пакета. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
niksal 0 13 июня, 2007 Опубликовано 13 июня, 2007 · Жалоба Попробуйте это: http://www.easics.com/webtools/crctool Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 13 июня, 2007 Опубликовано 13 июня, 2007 · Жалоба Подскажите алгоритм подсчета CRC32 для пакета Ethernet? Перепробовал массу вариантов и полиномов. Но все время не совпадает с CRC реального пакета. Заранее спасибо. У меня на сайте есть старая статья о проекте МАС. Там есть пара слов о CRC. Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eastwind 0 13 июня, 2007 Опубликовано 13 июня, 2007 · Жалоба CRC Tool я уже пробовал. Тоже не получается. Не сходится CRC - хоть тресни. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Кнкн 5 13 июня, 2007 Опубликовано 13 июня, 2007 · Жалоба Подскажите алгоритм подсчета CRC32 для пакета Ethernet? Перепробовал массу вариантов и полиномов. Но все время не совпадает с CRC реального пакета. Заранее спасибо. Посмотрите на сайте XILINXa. у них есть статейка про это. Проверено,что там все правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 13 июня, 2007 Опубликовано 13 июня, 2007 · Жалоба CRC Tool я уже пробовал. Тоже не получается. Не сходится CRC - хоть тресни. а как вы его считаете? и с чем сравниваете при проверке? если взять из опенкорес проекта езернет то всё получится :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 13 июня, 2007 Опубликовано 13 июня, 2007 · Жалоба Я брал вот этот в гигабит изернет: http://www.easics.com/webtools/crctool Учтите, что это всего лишь функция, вычисляющая требуемый полином. Потом с ним нужно проделать различные операции, прежде чем поместить в поле CRC пакета. Какие операции проделать, нужно читать прямо в стандарте IEEE802.3, там этому посвящено всего полстраницы, но этого вполне достаточно. Когда я пробовал, тоже поперепробывал вычислители функций с различных сайтов. Как оказалось, все они вполне пригодны. Нужно перепробовать различные комбинации сигналов: инверсия бит на определённой стадии или подмена направления возрастания значимости бит (передача от младшего к старшему или наоборот). Это нужно пытаться делать в разных точках схемы. На регистре, на входе, на выходе и т.д. Необходимо также учесть начальное состояние регистра перед обработкой пакета. Успехов! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 13 июня, 2007 Опубликовано 13 июня, 2007 · Жалоба Я брал вот этот в гигабит изернет: http://www.easics.com/webtools/crctool Учтите, что это всего лишь функция, вычисляющая требуемый полином. Потом с ним нужно проделать различные операции, прежде чем поместить в поле CRC пакета. Какие операции проделать, нужно читать прямо в стандарте IEEE802.3, там этому посвящено всего полстраницы, но этого вполне достаточно. Когда я пробовал, тоже поперепробывал вычислители функций с различных сайтов. Как оказалось, все они вполне пригодны. Нужно перепробовать различные комбинации сигналов: инверсия бит на определённой стадии или подмена направления возрастания значимости бит (передача от младшего к старшему или наоборот). Это нужно пытаться делать в разных точках схемы. На регистре, на входе, на выходе и т.д. Необходимо также учесть начальное состояние регистра перед обработкой пакета. Успехов! а можно взять из опенкорес function[31:0] NextCRC; input[7:0] D; input[31:0] C; reg[31:0] NewCRC; begin NewCRC[0]=C[24]^C[30]^D[1]^D[7]; NewCRC[1]=C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7]; NewCRC[2]=C[26]^D[5]^C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7]; NewCRC[3]=C[27]^D[4]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6]; NewCRC[4]=C[28]^D[3]^C[27]^D[4]^C[26]^D[5]^C[24]^C[30]^D[1]^D[7]; NewCRC[5]=C[29]^D[2]^C[28]^D[3]^C[27]^D[4]^C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7]; NewCRC[6]=C[30]^D[1]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6]; NewCRC[7]=C[31]^D[0]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[24]^D[7]; NewCRC[8]=C[0]^C[28]^D[3]^C[27]^D[4]^C[25]^D[6]^C[24]^D[7]; NewCRC[9]=C[1]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^D[6]; NewCRC[10]=C[2]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[24]^D[7]; NewCRC[11]=C[3]^C[28]^D[3]^C[27]^D[4]^C[25]^D[6]^C[24]^D[7]; NewCRC[12]=C[4]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^D[6]^C[24]^C[30]^D[1]^D[7]; NewCRC[13]=C[5]^C[30]^D[1]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6]; NewCRC[14]=C[6]^C[31]^D[0]^C[30]^D[1]^C[28]^D[3]^C[27]^D[4]^C[26]^D[5]; NewCRC[15]=C[7]^C[31]^D[0]^C[29]^D[2]^C[28]^D[3]^C[27]^D[4]; NewCRC[16]=C[8]^C[29]^D[2]^C[28]^D[3]^C[24]^D[7]; NewCRC[17]=C[9]^C[30]^D[1]^C[29]^D[2]^C[25]^D[6]; NewCRC[18]=C[10]^C[31]^D[0]^C[30]^D[1]^C[26]^D[5]; NewCRC[19]=C[11]^C[31]^D[0]^C[27]^D[4]; NewCRC[20]=C[12]^C[28]^D[3]; NewCRC[21]=C[13]^C[29]^D[2]; NewCRC[22]=C[14]^C[24]^D[7]; NewCRC[23]=C[15]^C[25]^D[6]^C[24]^C[30]^D[1]^D[7]; NewCRC[24]=C[16]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6]; NewCRC[25]=C[17]^C[27]^D[4]^C[26]^D[5]; NewCRC[26]=C[18]^C[28]^D[3]^C[27]^D[4]^C[24]^C[30]^D[1]^D[7]; NewCRC[27]=C[19]^C[29]^D[2]^C[28]^D[3]^C[25]^C[31]^D[0]^D[6]; NewCRC[28]=C[20]^C[30]^D[1]^C[29]^D[2]^C[26]^D[5]; NewCRC[29]=C[21]^C[31]^D[0]^C[30]^D[1]^C[27]^D[4]; NewCRC[30]=C[22]^C[31]^D[0]^C[28]^D[3]; NewCRC[31]=C[23]^C[29]^D[2]; NextCRC=NewCRC; end endfunction она (функция) же для генерации црц и для проверки при проверки сравниваете полученое значение с magic значением 32'hc704dd7b Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 16 июня, 2007 Опубликовано 16 июня, 2007 · Жалоба Всем привет! А есть ли более "простые" алгоритмы вичисления CRC? Например, как в MODBUS, с помощью таблицы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 21 июня, 2007 Опубликовано 21 июня, 2007 · Жалоба Всем привет! А есть ли более "простые" алгоритмы вичисления CRC? Например, как в MODBUS, с помощью таблицы... критерий просто можно узнать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 21 июня, 2007 Опубликовано 21 июня, 2007 · Жалоба критерий просто можно узнать? Критерий один - скорость :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 22 июня, 2007 Опубликовано 22 июня, 2007 · Жалоба Критерий один - скорость :) 1)а погуглить? 2)табличный метод в fpga накладно использовать да и не нужно 3) если же нужнен табличный метод не для fpga см п.1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 22 июня, 2007 Опубликовано 22 июня, 2007 · Жалоба 1)а погуглить? 2)табличный метод в fpga накладно использовать да и не нужно 3) если же нужнен табличный метод не для fpga см п.1 1) Если бы чего нагуглил, не обращался бы за помощью, или, по крайней мере, сообщил об этом в этой ветке. 2) Про fpga моей речи вообще не было, с чего вы его приплели? 3) Если есть чего сказать по существу, а не просто потрепаться см п. первый (внимательно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 23 июня, 2007 Опубликовано 23 июня, 2007 · Жалоба 1) Если бы чего нагуглил, не обращался бы за помощью, или, по крайней мере, сообщил об этом в этой ветке. 2) Про fpga моей речи вообще не было, с чего вы его приплели? 3) Если есть чего сказать по существу, а не просто потрепаться см п. первый (внимательно) 0)тяжёлый случай :a14: 1)специально и только для вас! жмите сюда 2)читайте весь тред целиком 3)см п.0 и п.1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 23 июня, 2007 Опубликовано 23 июня, 2007 · Жалоба 0)тяжёлый случай :a14: 1)специально и только для вас! жмите сюда 2)читайте весь тред целиком 3)см п.0 и п.1 да, действительно, тяжелый :) , сорри Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться