Товарищи,
пните в нужном направлении - нужен помехоустойчивый протокол для передачи данных по радиоканалу (433 МГц). Нужно чтобы при искажении пакета данных, принимающая сторона могла бы восстановить исходный пакет без ошибок.
М.б. избыточное кодирование? Reed-Solomon, например.
MrYuran
Oct 4 2008, 16:05
Видал однажды техпроект широкополосной радио линии, там по-моему каскадный код применялся.
Рид-соломон поверх свёрточного. Но насчёт исправления на приёмном конце губу особо раскатывать не стоит. Исправлять можно одиночные редкие ошибки. Если вылетает полпакета, никакие коды не помогут. В общем, исходить надо из характера помехи. От пакетных помех применяют скремблирование, но тогда естественно возрастает время задержки и обработки.
Обычно применяется контроль ошибок и перезапрос пакета.
возможный вариант - при ошибке попытаться восстановить пакет, а при невозможности - перезапрос.
Восстанавливающие коды намного более избыточные, чем просто контролирующие.
То есть вам в первую очередь необходимо определиться - насколько важна пропускная способность канала - так как скремблирование избыточной информации не добавляет, то есть не снижает пропускную способность.
А все восстанавливающие коды, особенно с хорошими "возможностями восстановления" сильно нелинейно увеличивают размер передаваемых данных.
Valery_Vlad
Oct 4 2008, 18:26
Цитата(TOG @ Oct 4 2008, 18:11)

нужен помехоустойчивый протокол для передачи данных по радиоканалу (433 МГц). Нужно чтобы при искажении пакета данных, принимающая сторона могла бы восстановить исходный пакет без ошибок.
Мало данных. Нужно подробно описать систему, нужно задание на проектирование.
Цитата(MrYuran @ Oct 4 2008, 19:05)

Если вылетает полпакета, никакие коды не помогут.
Все зависит от того, что значит "вылетает". В смысле имеет место выпадение или вставка бит данных. Или-же в смысле искажены. Если последнее, то для этого используют перемежение как пример тракт DVB (там и сверточный код и перемежение и блочный код).
Спасибо.
Я так понял копать нужно в сторону кодирования Рида-Соломона и сверточного кода...
Скорость канала ~150 кбит/с. Нужно передавать файлы размером 300-400 kB. Размер пакета может быть любой(сейчас 512 байт). Помехи искажают 1--5 байт в пакете(512 байт), повреждается примерно каждый пятый пакет. Принимающая сторона должна принять все пакеты, востановить поврежденные(с помощью этих самых алгоритмов), при невозможности восстановления некоторых поврежденных пакетов послать запрос на повторную передачу именно этих нескольких пакетов.
Тоесть если из 20 битых пакетов приемник сможет восстановить хотя бы 15 это будет отлично, повторно придется запрашивать всего 5 пакетов. Это значительно может снизить общее время передачи.
Flasher
Oct 5 2008, 08:44
Посмотрите трансиверы Chipcon от TI -там все есть для вашей задачи.
one_eight_seven
Oct 5 2008, 09:56
Цитата
Я так понял копать нужно в сторону кодирования Рида-Соломона и сверточного кода...
Ну необязательно, может и код Голея сгодится. В случае со свёрточными кодами программа декодера может оказаться довольно жирной. Очень может быть, что гораздо дешевле и надёжнее поставить усилитель на передачу. Но если хотите решать проблему с помощью математики, а не физики, то тема "Помехоустойчивое кодирование" (канальное кодирование) в любой книге по цифровой связи, например, Дж. Прокис "Цифровая связь" или Бернард Скляр "Цифровая связь" вам в помощь. Но стоит просвятиться и в теме "бюджет канала".
Николай Иванович Приходько
Oct 7 2008, 08:55
Если поцедура кодирования/декодирования/восстановления занимает времени больше, чем повторная передача пакета, то эффективней не навороченные коды юзать, а просто повторную отправку пакета.
MrYuran
Oct 7 2008, 09:03
Цитата(Николай Иванович Приходько @ Oct 7 2008, 12:55)

Если поцедура кодирования/декодирования/восстановления занимает времени больше, чем повторная передача пакета, то эффективней не навороченные коды юзать, а просто повторную отправку пакета.
Есть специфические моменты.
Например, радиорелейка.
Чтобы отправить пакет с конца на конец, необходимо, допустим, пройти 10 пролётов. Вот и считайте затраты на "туда-обратно"
Николай Иванович Приходько
Oct 7 2008, 09:33
Цитата(MrYuran @ Oct 7 2008, 13:03)

Есть специфические моменты.
Например, радиорелейка.
Чтобы отправить пакет с конца на конец, необходимо, допустим, пройти 10 пролётов. Вот и считайте затраты на "туда-обратно"
Ничего не имею против. Я же писал :
Цитата(Николай Иванович Приходько @ Oct 7 2008, 12:55)

Если поцедура кодирования/декодирования/восстановления занимает времени больше, чем повторная передача пакета...
Grumbler_2002
Oct 7 2008, 14:47
Цитата(TOG @ Oct 5 2008, 08:50)

Размер пакета может быть любой(сейчас 512 байт). Помехи искажают 1--5 байт в пакете(512 байт), повреждается примерно каждый пятый пакет.
Какого рода ошибки? Пакетированные или одиночные? Сатистика есть? Какова требуемая достоверность на выходе?
furymaxx
Oct 8 2008, 12:28
Пакетные ошибки можно превратить в одиночные с помощью перемежителя. Отталкиваться нужно также от количества ошибок в канале связи и допустимого снижения скорости передачи.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.