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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> CRC пакета Ethernet, подскажите алгоритм
eastwind
сообщение Jun 13 2007, 04:23
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 1-08-05
Пользователь №: 7 242



Подскажите алгоритм подсчета CRC32 для пакета Ethernet? Перепробовал массу вариантов и полиномов. Но все время не совпадает с CRC реального пакета.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
niksal
сообщение Jun 13 2007, 05:15
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 2-10-04
Пользователь №: 760



Попробуйте это:

http://www.easics.com/webtools/crctool
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jun 13 2007, 05:18
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(eastwind @ Jun 13 2007, 08:23) *
Подскажите алгоритм подсчета CRC32 для пакета Ethernet? Перепробовал массу вариантов и полиномов. Но все время не совпадает с CRC реального пакета.
Заранее спасибо.

У меня на сайте есть старая статья о проекте МАС. Там есть пара слов о CRC.
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
eastwind
сообщение Jun 13 2007, 05:48
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 1-08-05
Пользователь №: 7 242



CRC Tool я уже пробовал. Тоже не получается. Не сходится CRC - хоть тресни.
Go to the top of the page
 
+Quote Post
Кнкн
сообщение Jun 13 2007, 06:07
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 646
Регистрация: 21-06-04
Пользователь №: 71



Цитата(eastwind @ Jun 13 2007, 08:23) *
Подскажите алгоритм подсчета CRC32 для пакета Ethernet? Перепробовал массу вариантов и полиномов. Но все время не совпадает с CRC реального пакета.
Заранее спасибо.


Посмотрите на сайте XILINXa. у них есть статейка про это.
Проверено,что там все правильно.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jun 13 2007, 06:26
Сообщение #6


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(eastwind @ Jun 13 2007, 09:48) *
CRC Tool я уже пробовал. Тоже не получается. Не сходится CRC - хоть тресни.

а как вы его считаете? и с чем сравниваете при проверке?
если взять из опенкорес проекта езернет то всё получится rolleyes.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Krys
сообщение Jun 13 2007, 07:38
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Я брал вот этот в гигабит изернет:
http://www.easics.com/webtools/crctool
Учтите, что это всего лишь функция, вычисляющая требуемый полином. Потом с ним нужно проделать различные операции, прежде чем поместить в поле CRC пакета.
Какие операции проделать, нужно читать прямо в стандарте IEEE802.3, там этому посвящено всего полстраницы, но этого вполне достаточно.
Когда я пробовал, тоже поперепробывал вычислители функций с различных сайтов. Как оказалось, все они вполне пригодны. Нужно перепробовать различные комбинации сигналов: инверсия бит на определённой стадии или подмена направления возрастания значимости бит (передача от младшего к старшему или наоборот). Это нужно пытаться делать в разных точках схемы. На регистре, на входе, на выходе и т.д.
Необходимо также учесть начальное состояние регистра перед обработкой пакета.
Успехов!


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jun 13 2007, 09:18
Сообщение #8


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Krys @ Jun 13 2007, 11:38) *
Я брал вот этот в гигабит изернет:
http://www.easics.com/webtools/crctool
Учтите, что это всего лишь функция, вычисляющая требуемый полином. Потом с ним нужно проделать различные операции, прежде чем поместить в поле CRC пакета.
Какие операции проделать, нужно читать прямо в стандарте IEEE802.3, там этому посвящено всего полстраницы, но этого вполне достаточно.
Когда я пробовал, тоже поперепробывал вычислители функций с различных сайтов. Как оказалось, все они вполне пригодны. Нужно перепробовать различные комбинации сигналов: инверсия бит на определённой стадии или подмена направления возрастания значимости бит (передача от младшего к старшему или наоборот). Это нужно пытаться делать в разных точках схемы. На регистре, на входе, на выходе и т.д.
Необходимо также учесть начальное состояние регистра перед обработкой пакета.
Успехов!

а можно взять из опенкорес biggrin.gif
Код
    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


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 16 2007, 12:06
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всем привет!
А есть ли более "простые" алгоритмы вичисления CRC? Например, как в MODBUS, с помощью таблицы...


--------------------
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jun 21 2007, 14:35
Сообщение #10


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(prottoss @ Jun 16 2007, 16:06) *
Всем привет!
А есть ли более "простые" алгоритмы вичисления CRC? Например, как в MODBUS, с помощью таблицы...

критерий просто можно узнать?


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 21 2007, 14:38
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Postoroniy_V @ Jun 21 2007, 22:35) *
критерий просто можно узнать?
Критерий один - скорость smile.gif


--------------------
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jun 22 2007, 06:02
Сообщение #12


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(prottoss @ Jun 21 2007, 18:38) *
Критерий один - скорость smile.gif

1)а погуглить?
2)табличный метод в fpga накладно использовать да и не нужно
3) если же нужнен табличный метод не для fpga см п.1


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 22 2007, 12:12
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Postoroniy_V @ Jun 22 2007, 14:02) *
1)а погуглить?
2)табличный метод в fpga накладно использовать да и не нужно
3) если же нужнен табличный метод не для fpga см п.1


1) Если бы чего нагуглил, не обращался бы за помощью, или, по крайней мере, сообщил об этом в этой ветке.

2) Про fpga моей речи вообще не было, с чего вы его приплели?

3) Если есть чего сказать по существу, а не просто потрепаться см п. первый (внимательно)


--------------------
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jun 23 2007, 08:23
Сообщение #14


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(prottoss @ Jun 22 2007, 16:12) *
1) Если бы чего нагуглил, не обращался бы за помощью, или, по крайней мере, сообщил об этом в этой ветке.

2) Про fpga моей речи вообще не было, с чего вы его приплели?

3) Если есть чего сказать по существу, а не просто потрепаться см п. первый (внимательно)


0)тяжёлый случай a14.gif
1)специально и только для вас!
жмите сюда
2)читайте весь тред целиком
3)см п.0 и п.1


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 23 2007, 10:29
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Postoroniy_V @ Jun 23 2007, 16:23) *
0)тяжёлый случай a14.gif
1)специально и только для вас!
жмите сюда
2)читайте весь тред целиком
3)см п.0 и п.1
да, действительно, тяжелый smile.gif , сорри


--------------------
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th June 2025 - 15:01
Рейтинг@Mail.ru


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