Страница 2 из 2

Re: crc8 даласса

Добавлено: Ср янв 08, 2014 17:14:01
zöner

Re: crc8 даласса

Добавлено: Пт янв 10, 2014 12:36:21
FILIK
Спасибо за книгу ,скачал но там сильно уж сложно -это я не потянул .Зато нарыл одну вещь http://habrahabr.ru/post/140611/.Научился, сейчас проктикуюсь в этом. Есть вопрос код хеминга который вот сдесь http://habrahabr.ru/post/140611/ он только одиночные ошибки находит или же множество допустим более 5-9?

Re: crc8 даласса

Добавлено: Пт янв 10, 2014 13:05:43
Kavka
Чтобы определить наличие ошибок используйте CRC по битам данных. А вот если ошибки нашлись, тогда можно и Хэммингом попробовать восстановить. Затем проверить снова по CRC.
Вариант на хабре позволяет исправлять однократные и обнаруживать двукратные ошибки в блоке.

Re: crc8 даласса

Добавлено: Пт янв 10, 2014 13:18:16
FILIK
Если я вас правильно понял то сперва 1-сообщение+crc.2-кодировать кодом хеминга.3-отправить данные.после получения расчитать crc.если всё хорошо то использавать,если данные пришли с ошибкой исправлять кодом хеминга.

Re: crc8 даласса

Добавлено: Пт янв 10, 2014 20:57:00
Kavka
Да, только не забудьте отделить котлеты от мух биты данных от дополнительных битов по Хэммину и CRC по данным.
А можно ещё и биты по Хэммингу обсчитать CRC. Тогда:
1) если CRC по данным совпадает, то - данные целы;
2) если CRC по данным НЕ совпала, а CRC по битам Хэмминга совпала, то восстановить по Хэммингу и проверить CRC по данным, если CRC по данным совпадает, то - данные целы;
3) если обе CRC не совпали, то, IMHO, надо передавать данные по новой.

Re: crc8 даласса

Добавлено: Пн янв 13, 2014 13:24:06
FILIK
хороше с этим понятно.если я правелно понял код хеминга может востановить только 1 битные ошибку в слове или больше?

Re: crc8 даласса

Добавлено: Пн янв 13, 2014 18:52:58
Kavka
Такой как на хабре, да. В общем случае можно построить более мощный код (по другому алгоритму), который может исправлять и определять большее количество ошибок. Теоретическую основу можно посмотреть там где сложно :) - Уоррен Г.Алгоритмические трюки для программистов, глава 15, стр 357.
Есть ещё коды с коррекцией ошибок на основе полей Галуа. Если не ошибаюсь, то они использовались в Арвиде (кто помнит такой аппарат знают, что там исправлялись трёхкратные ошибки в блоке)

Добавил спустя пару минут.
Вот, например.

Re: crc8 даласса

Добавлено: Вт янв 14, 2014 11:30:16
FILIK
в вашем ответе немного я не понял.1что такое на хабре (из вашего текста).2в книге которую вы мне рекомендовали для чтения информация очень сложная для моего начинающего понимания.для начало пожалуста объясните как мне научится вычислять растояние хеминга допустим есть число0111000101110111,ведь я немогу просто выбрать позиции12345?

Re: crc8 даласса

Добавлено: Вт янв 14, 2014 14:04:09
Kavka
Про хабр.
FILIK писал(а):Зато нарыл одну вещь http://habrahabr.ru/post/140611/
Про вычисление расстояния Хэмминга там, в книге, тоже написано! И вы не читали! Да не то что не читали, даже не просматривали эту книжку. Иначе не задавали бы такой глупый вопрос.
Чтобы разобраться, а не просто повторить частный случай, вам придётся прочитать и вникнуть.

Re: crc8 даласса

Добавлено: Вт янв 14, 2014 15:05:31
FILIK
возможно я вас не так понял,страница которую вы указали её там нет.книга состоит из 282 страниц.привожу как выглядит то что я читал.если вас не затруднит скиньте именно то что вы рекомендовали для ознакомления.

Re: crc8 даласса

Добавлено: Вт янв 14, 2014 20:04:57
Kavka
У вас урезанное издание
http://radiokot.ru/forum/viewtopic.php? ... 1#p1887601

Re: crc8 даласса

Добавлено: Ср янв 15, 2014 12:29:38
FILIK
за книгу огромное спасибо,начал разбираться.и сразу несколько выводов(если что-то не правильно исправте)1-код хеминга (еще раз повторюсь)исправляет один бит и детектирует двойные биты(ошибки).2сообщение разбивается на блок фиксированой длины+с добавлением контрольных бит(пример 10101010+контр.бты).3-не могу понять формулу на стр.358 тесть есть у меня число 10101010 +7 контрольных биn+1?

Re: crc8 даласса

Добавлено: Ср янв 15, 2014 19:39:12
Kavka
Это неравенство определяет, так сказать, "минимальное" соотношение битов данных и проверочных битов для кодов с коррекцией ошибок. И всё.

Re: crc8 даласса

Добавлено: Чт янв 16, 2014 08:35:57
FILIK
тоесть проверочных бит должно быть не меньше определённого количества но небольше самого сообщения если я правильно понял вас ув.Kavka.

Re: crc8 даласса

Добавлено: Чт янв 16, 2014 12:15:51
Kavka
Это неравенство определяет минимальное количество проверочных битов для коррекции одной ошибки.
Ничего не мешает иметь проверочных битов больше чем битов данных. Тогда, например, можно составить код с коррекцией большего количества ошибок и детектирование ещё большего количества без возможности исправления.
Некоторые аспекты есть на стр. 372.

Re: crc8 даласса

Добавлено: Ср янв 29, 2014 12:00:11
iGraphicsS
Народ, помогите. У меня есть таблица рассчитанных (дизассемблиронных) значений CRC8-256 значений.

Код: Выделить всё

00h,5Eh,0BCh,0E2h,61h,3Fh,0DDh,83h,
0C2h,9Ch,7Eh,20h,0A3h,0FDh,1Fh,41h,
9Dh,0C3h,21h,7Fh,0FCh,0A2h,40h,1Eh,
5Fh,01h,0E3h,0BDh,3Eh,60h,82h,0DCh,
23h,7Dh,9Fh,0C1h,42h,1Ch,0FEh,0A0h,
0E1h,0BFh,5Dh,03h,80h,0DEh,3Ch,62h,
0BEh,0E0h,02h,5Ch,0DFh,81h,63h,3Dh,
7Ch,22h,0C0h,9Eh,1Dh,43h,0A1h,0FFh,
46h,18h,0FAh,0A4h,27h,79h,9Bh,0C5h,
84h,0DAh,38h,66h,0E5h,0BBh,59h,07h,
0DBh,85h,67h,39h,0BAh,0E4h,06h,58h,
19h,47h,0A5h,0FBh,78h,26h,0C4h,9Ah,
65h,3Bh,0D9h,87h,04h,5Ah,0B8h,0E6h,
0A7h,0F9h,1Bh,45h,0C6h,98h,7Ah,24h,
0F8h,0A6h,44h,1Ah,99h,0C7h,25h,7Bh,
3Ah,64h,86h,0D8h,5Bh,05h,0E7h,0B9h,
8Ch,0D2h,30h,6Eh,0EDh,0B3h,51h,0Fh,
4Eh,10h,0F2h,0ACh,2Fh,71h,93h,0CDh,
11h,4Fh,0ADh,0F3h,70h,2Eh,0CCh,92h,
0D3h,8Dh,6Fh,31h,0B2h,0ECh,0Eh,50h,
0AFh,0F1h,13h,4Dh,0CEh,90h,72h,2Ch,
6Dh,33h,0D1h,8Fh,0Ch,52h,0B0h,0EEh,
32h,6Ch,8Eh,0D0h,53h,0Dh,0EFh,0B1h,
0F0h,0AEh,4Ch,12h,91h,0CFh,2Dh,73h,
0CAh,94h,76h,28h,0ABh,0F5h,17h,49h,
08h,56h,0B4h,0EAh,69h,37h,0D5h,8Bh,
57h,09h,0EBh,0B5h,36h,68h,8Ah,0D4h,
95h,0CBh,29h,77h,0F4h,0AAh,48h,16h,
0E9h,0B7h,55h,0Bh,88h,0D6h,34h,6Ah,
2Bh,75h,97h,0C9h,4Ah,14h,0F6h,0A8h,
74h,2Ah,0C8h,96h,15h,4Bh,0A9h,0F7h,
0B6h,0FCh,0Ah,54h,0D7h,89h,6Bh,35h
Есть допустим принятое сообщение: 0x05 0x06 0x00 0x01 0x00 0x00 0xDC, где 0xDC это CRC8
Как при помощи этой таблицы посчитать CRC? Как я понял: 0x05 = по таблице 0x3F итд. Но у нас же 6 байт. Что со значениями надо делать?
Не могу толковой информации найти как работать с табличным методом расчета CRC8. Просто не хочу себе голову забивать как обсчитывать CRC, полиномами всякими... Нету времени на это.

А всё, разобрался.
Необходимо первое число из таблицы взять, потом его ксорить со следующим. Получившийся результат снова из таблицы, и снова ксорить со следующим. И так все байты.