Oldring 0 21 марта, 2011 Опубликовано 21 марта, 2011 · Жалоба Поле адреса устройства считается при подсчете CRC7, но реально не передается. Это как? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба вместо addr,byte1,byte2,byte3,byte4,crc передаётся byte1,byte2,byte3,byte4,crc при сравнении на приёме вместо addr подставляется свой адрес девайса, который девайс ессно знает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба вместо addr,byte1,byte2,byte3,byte4,crc передаётся byte1,byte2,byte3,byte4,crc при сравнении на приёме вместо addr подставляется свой адрес девайса, который девайс ессно знает. Ваше объяснение ничего не объясняет. Это просто некорректная переформулировка некорректного первоначального описания. Устройство что, на шине одно, если "адрес не передается"? Если действительно так - тогда нет никакой разницы в вероятности пропуска ошибки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Описание вполне ясное. Все всё поняли, кроме Oldring-а :) Устройств много. А передавать адрес не обязательно, т.к. в алгоритмах девайсов с неправильным адресом CRC все-равно не совпадёт и пакет не будет "принят". Только у девайса с правильным адресом CRC совпадёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Устройств много. А передавать адрес не обязательно, т.к. в алгоритмах девайсов с неправильным адресом CRC все-равно не совпадёт и пакет не будет "принят". Только у девайса с правильным адресом CRC совпадёт. Тогда надо значительно увеличивать кодовое расстояние. Вот с википедии характеристика CRC8: MaxLen: 15 байт (127 бит) - обнаружение одинарных, двойных, тройных и всех нечетных ошибок CRC7 будет соответственно обнаруживать одинарные, двойные и тройные ошибки ВО ВСЁМ сообщении. То есть, максимально имеем 3 бита на адрес, и при этом любая дополнительная ошибка может перевести сообщение в разряд "правильных" для неправильного адреса. В общем, подход весьма скользкий. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба CRC7 будет соответственно обнаруживать одинарные, двойные и тройные ошибки ВО ВСЁМ сообщении. То есть, максимально имеем 3 бита на адрес, и при этом любая дополнительная ошибка может перевести сообщение в разряд "правильных" для неправильного адреса. В общем, подход весьма скользкий. Он "скользкий" так же как и сама CRC, когда незнакомый с ней человек с ней знакомится. Там всё просчитывается. Не на супер компутере, а скорее на калькуляторе. Непереданный байт адреса не является ошибкой. Потому как можно взять 8 бит адреса и так работать. Что уже противоречит ограничению в 3 бита. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
i-mir 0 22 марта, 2011 Опубликовано 22 марта, 2011 (изменено) · Жалоба Конкретные параметры топикстартер не указал, поэтому принимаю вариант предложеный GetSmart c CRC8. Задача: сравнить вероятности необнаруживаемого искажения посылок 6 байт и 5 байт для CRC8. Вероятность искажения одного бита в канале связи принимаем p=10-3. Тогда: Для 48 бит p(crc8)=1.4*10-9 Для 40 бит p(crc8)=6.8*10-10 Вывод: если адрес не передавать, то надежность будет выше в два раза. PS. Лень сейчас модельку переделать для CRC7, поэтому привожу готовое для CRC8. Порядок цифр примерно тот-же. Изменено 22 марта, 2011 пользователем i-mir Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Описание вполне ясное. Все всё поняли, кроме Oldring-а :) Устройств много. А передавать адрес не обязательно, т.к. в алгоритмах девайсов с неправильным адресом CRC все-равно не совпадёт и пакет не будет "принят". Только у девайса с правильным адресом CRC совпадёт. Если устройств много, тогда передавать адрес как раз обязательно. Иначе устройства не поймут, к кому пакет адресован. И принимать обязательно. Но при расчете CRC в устройстве эти биты известны заранее. Дело нt в том, понял я или нет, дело в чёткости формулировок, необходимой для анализа. Потому что если адрес передается, то ошибки в нём точно так же приводят к неправильному приёму пакета. А дальше многое зависит от количества устройств на шине и распределения их адресов. В крайнем случае 128 устройств на шине, пакеты к которым посылаются с равной вероятностью, всё сводится просто к оценке вероятности пропуска ошибки в пакете длиной 39 бит. На самом деле, не сильно выше, чем для пакета, длиной 32 бита, особенно, если ошибки приема битов в блоке могут коррелировать. Если же устройств сильно меньше 128, то дополнительным выбором хорошего распределения их адресов можно дополнительно снизить вероятность ошибочного приема адреса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 22 марта, 2011 Опубликовано 22 марта, 2011 (изменено) · Жалоба ...Иначе устройства не поймут, к кому пакет адресован. ...Дело на в том, понял я или нет, дело в чёткости формулировок, необходимой для анализа. Это не верно. Чёткая формулировка - при отсутсвии искажений в канале связи передавать адрес не обязательно. Устройства 100% поймут кому адресован пакет. CRC содержит адрес девайса точно так же как простейшая контрольная сумма например в HEX файле, если из HEX строки убрать первый байт. При наличии ошибок вопрос стоит только в их кол-ве, при котором пакеты будут правильно приниматься. Причём относительно ситуации с присутствием адреса в пакете, то бишь классическим свойствам CRC. Изменено 22 марта, 2011 пользователем GetSmart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Чёткая формулировка - при отсутсвии искажений в канале связи передавать адрес не обязательно. Устройства 100% поймут кому адресован пакет. При гарантированном отсутствии помех и CRC считать смысла нет. Подал адрес, и всё! В том-то и задача, что топикстартер хочет и от помех перестраховаться, и длину передачи уменьшить. Я так не делал бы. Чем более избыточный код, тем больше ошибок будет обнаружено. Хотя, если проверка сводится к байту CRC, то как раз будет менее достоверной информация для более длинного пакета. Но дело в том, что искажения одного байта адреса менее вероятны, чем искажения по всей длине пакета. Поэтому вероятность ложного принятия чужого пакета будет меньше. Что, если из-за многобитовой ошибки устройство посчитает своим пакет, предназначенный не ему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Это не верно. Чёткая формулировка - при отсутсвии искажений в канале связи передавать адрес не обязательно. Устройства 100% поймут кому адресован пакет. Тогда я вас совершенно не понимаю. Два устройства сидят на шине. Адрес не передается. Как устройства понимают, кому адресован пакет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Как устройства понимают, кому адресован пакет? Через (квази) обратное преобразование из CRC. Даже ViKo всё понял и задал правильный вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Непереданный байт адреса не является ошибкой. Потому как можно взять 8 бит адреса и так работать. Что уже противоречит ограничению в 3 бита. Если адрес передаваемого сообщения отличается от адреса приёмника более чем в 3 битах, CRC не выявит ошибки. Вот это я хотел сказать. Отсюда и ограничение в 3 бита адреса, не считая дополнительных ошибок. Или мы опять друг друга не поняли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Что, если из-за многобитовой ошибки устройство посчитает своим пакет, предназначенный не ему? Ровно та же ситуация и с обычной CRC. Вопрос только в относительности надёжности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 22 марта, 2011 Опубликовано 22 марта, 2011 · Жалоба Даже ViKo всё понял... почему "даже"? Ровно та же ситуация и с обычной CRC. Вопрос только в относительности надёжности. Не та же ситуация. Я чуть выше подкорректировал свой ответ. Зависит от длины сообщения. Здесь еще важно, что опаснее - передать сообщение не тому адресату, или передать ошибочное сообщение тому, кому нужно. Первое мне видится более тяжелым. Поэтому байт адреса я оставил бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться