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

 
 
> CRC вопрос!
bezobraznic
сообщение Oct 5 2007, 19:04
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-05-05
Пользователь №: 5 441



Необходимо гонять между контроллером и PC через уарт большие пакеты данных. Надо проверять целостность и если что повторять передачу. Кто реализовывал подобные задачи подскажите пожалуйста идею реализации!! Спасибо!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bezobraznic
сообщение Oct 6 2007, 12:20
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-05-05
Пользователь №: 5 441



Цитата(DiMomite @ Oct 6 2007, 14:10) *
Еще небольшое уточнение.
Есть 2 варианта определения того, что передача прошла без ошибок: первый описали вы, а второй - CRC считается для всех данных+поле CRC, в этом случае результат должен быть равен нулю при отсутствии ошибок (либо если их больше, чем может обнаружить код). Это никак не влияет на саму идею вычисления CRC, но если вы когда то столкнетесь со вторым вариантом реализации, так что бы это вас не смутило.



Я не понимаю почему црц должно быть равно 0 во втором варианте(данные+поле CRC) поясните если можно!!!

И ещё, В передатчике,если использовать 2 вариант, то я должен сначала посчитать црц по данным,
затем дополнить поле данных результатом црц, и потом опять считать црц !? И куда мне деть результат второго црц?
В приёмнике чё делать?

Распишите плиз 2й вариант а то я запутался!! Спасибо!!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 6 2007, 18:44
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(bezobraznic @ Oct 6 2007, 15:20) *
Я не понимаю почему црц должно быть равно 0 во втором варианте(данные+поле CRC) поясните если можно!!!
CRC - это остаток от деления массива данных (который берется как очень длинное число) на полином. По аналогии с простым делением - если A/B дает в остатке C, то (A-C)/B дадут в остатке ноль. При выполнении обычного деления используется вычитание делителя из делимого. Деление полиномов аналогично, только используется вычитание по модулю два. Которорое обладает таким свойством, что дает тот же самый результат, что и суммирование по модулю два. Когда мы добавляем рассчитанное CRC к массиву - мы фактически приписываем к делимому N нулей в конец (умножаем его на 2^N) и прибавляем CRC по модулю два к добавленным нулевым битам, или же, что тождественно, вычитаем его по модулю два. Получается, что мы из исходного данного вычли остаток и теперь деление на приемной стороне должно будет дать в остатке (т.е. в результате вычисления CRC) ноль.
Попытался, как смог, объяснить "на пальцах". Более подробно с выкладками у Скляра в "цифровой связи", ну и в других книгах.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AVR
сообщение Oct 6 2007, 19:13
Сообщение #4


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Есть одна интересная страница, которая сгенерирует код для рассчета CRC для требуемого полинома: crctool smile.gif Правда там на verilog генерируется, но не составляет труда переписать на Си.


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

Сообщений в этой теме
- bezobraznic   CRC вопрос!   Oct 5 2007, 19:04
- - rezident   Дык, а в чем собственно вопрос-то? Есть CRC8, CRC1...   Oct 5 2007, 19:14
- - PSP   В общем случае в зависимости от вероятности ошибки...   Oct 5 2007, 19:34
- - mdmitry   Посмотрите стандартные протоколы: xmodem, zmodem,...   Oct 5 2007, 19:45
- - rezident   Ну тогда еще один вариант CRC16. С начальным входн...   Oct 5 2007, 22:26
- - CD_Eater   Для больших пакетов рулит Adler32 (скорость вычисл...   Oct 6 2007, 06:11
- - Kuzmi4   2 PSP - а про корректирующие коды - можно поподроб...   Oct 6 2007, 08:24
|- - PSP   Цитата(Kuzmi4 @ Oct 6 2007, 11:24) 2 PSP ...   Oct 6 2007, 12:39
- - bezobraznic   Спасибо за ответы! Последний вопрос! Я по...   Oct 6 2007, 08:37
- - Kuzmi4   2 bezobraznic - правильно..   Oct 6 2007, 08:43
- - DiMomite   ЦитатаСпасибо за ответы! Последний вопрос...   Oct 6 2007, 11:10
- - sensor_ua   Цитатавторой - CRC считается для всех данных+поле ...   Oct 6 2007, 11:34
- - sensor_ua   В передатчике ничего не правим. В приёмнике подсчё...   Oct 6 2007, 12:26
- - DiMomite   Позволю себе немного дополнить и уточнить пост Сер...   Oct 6 2007, 22:16


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

 


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


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