User1285 0 25 марта, 2015 Опубликовано 25 марта, 2015 · Жалоба Добрый день! Прошу прощения если подобная тема уже поднималась. Возникла проблема - необходимо обеспечить помехоустойчивость радиоканала. Есть уже готовое железо, собранное на TXC101 и TRC101, частота 433,92МГц. Железо менять нельзя, могу только программно улучшать что-то. Канал односторонний, т.е. полноценную передачу данных с ACK сделать не получается. Соответственно стоит задача обеспечить максимальную помехоустойчивость отправляемой информации. Мне необходимо передавать пакеты длиной порядка 500 байт. Скорость 9600. Однако не хотелось бы сильно наращивать размер пакета, т.к. это удлинит время передачи. Передавать по несколько раз одни и те же пакеты тоже не сильно хорошо, т.к. передаваемые данные меняются постоянно(где-то раз в секунду) и потому очень желательно чтобы каждый пакет доходил максимально полным(максимально восстановленным). Посоветуйте пожалуйста как сделать правильно: - сначала попытаться ужать исходные данные а потом закодировать чем-то типа кодов Хемминга? - или при помехоустойчивом кодировании нежелательна предварительное сжатие (архивация) данных? - стоит ли использовать перемежение(перемешивание) для лучшего восстановления битых блоков данных? - какое кодирование лучше применить? (у меня контроллер atmega8 , не сильно много места свободного и вычислительной мощности) - насколько сильно разрастается размер пакета при кодировании позволяющем восстановить порядка 25-50% битого пакета? Я читал про коды Рида Соломона но я думаю наврядле я смогу реализовать нечто подобное. Коды Хемминга я так понимаю проще будет реализовать, но достаточно ли мне будет этого. Какие есть оптимальные варианты? Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 25 марта, 2015 Опубликовано 25 марта, 2015 · Жалоба Добрый день! Возникла проблема - необходимо обеспечить помехоустойчивость радиоканала. ... Какие есть оптимальные варианты? Как вариант (ресурсоемкое): LDPC (irreglar or regular) на 2/3, т.е. 1/3 избыточная информация будет Хотя все зависит от кол-во памяти и требованием к времени обработки... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 25 марта, 2015 Опубликовано 25 марта, 2015 · Жалоба - сначала попытаться ужать исходные данные Какой смысл? Если один раз сожмётся в 100 байт а другой раз в 499 то что будете делать? а потом закодировать чем-то типа кодов Хемминга? Исправляет одну-единственную битовую ошибку. - или при помехоустойчивом кодировании нежелательна предварительное сжатие (архивация) данных? Не имеет никакого значения. - стоит ли использовать перемежение(перемешивание) для лучшего восстановления битых блоков данных? Это самый последний аспект вашей проблемы и будет зависеть от всего остального. - какое кодирование лучше применить? (у меня контроллер atmega8 , не сильно много места свободного и вычислительной мощности) Я читал про коды Рида Соломона но я думаю наврядле я смогу реализовать нечто подобное. Рид-Соломон это чуть ли не самое простое, что вы можете применить. Ну БЧХ ещё. - насколько сильно разрастается размер пакета при кодировании позволяющем восстановить порядка 25-50% битого пакета? :-)))))))))))) 50% невозможно. Сгенерите случайный блок данных и угадаете 50% битов реального пакета :-))))))) Около 25% битовых ошибок теоретически можно исправить при скорости кода 1/4 (это значит полезной информации 1/4), если он работает на пределе Шеннона. Но вы к нему приблизитесь не ближе чем на несколько дБ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ivan55 0 26 марта, 2015 Опубликовано 26 марта, 2015 · Жалоба а поподробнее, как передаете сигнал? какая модуляция? ОСШ на входе демодулятора? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 26 марта, 2015 Опубликовано 26 марта, 2015 · Жалоба ..если данные - телеметрия, наверное достаточно быть уверенным в том что пакет пришёл верный. Может вам не нужно ничего восстанавливать а достаточно надёжной контрольной суммы в конце пакета, плюс их дублирование. А можно передавать пакеты вдвое медленней - у вас при той же выходной мощности будет на 3 Дб С\ш лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 26 марта, 2015 Опубликовано 26 марта, 2015 · Жалоба у меня контроллер atmega8 , не сильно много места свободного и вычислительной мощности вот на этом тему можно и закрыть. из доступного защитить кодом хэминга (7,4) тетрады. правда избыточность будет..... либо CRC для фильтрации на приемной стороне. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 8 26 марта, 2015 Опубликовано 26 марта, 2015 · Жалоба Я на атмеге на посылке 6 байт и контрольной сумме 2 байта исправляю табличным способом все одиночные и двойные ошибки, а также пакетные (идущие подряд) тройные и четверные. Теоретически на моем коде делением полиномов можно исправлять и все тройные, но алгоритм деления сложный, обошелся таблицей. Код из стандарта MPT-1327, описан в документации на модемы CML FX809,429,829 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 26 марта, 2015 Опубликовано 26 марта, 2015 · Жалоба - стоит ли использовать перемежение(перемешивание) для лучшего восстановления битых блоков данных? Перемежение вам поможет только если вы будете разбивать свои 500 байт на несколько кусков и эти куски отдельно обрабатывать. Т.е. если, например взять 4608 бит, разбить на 128 кусков по 36 бит и закодировать БЧХ(36,48) который исправляет 2 ошибки, а затем перемешать куски, чтобы сначала шли первые биты из каждого, затем вторые и т.д. - то из переданных 6144 бит могут быть востановленны после повреждения - 256. Другими словами помеха длительностью 26мС вам будет не страшна при 9600бод, если не собьёт синхронизацию. PS: Всё вышеизложенное я привёл в качестве примера для чего нужно перемежение, реализовывать 128 БЧХ на атмеге не стоит... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 26 марта, 2015 Опубликовано 26 марта, 2015 · Жалоба В принципе, если Хеминг применить к каждому байту, то помехозащищенность будет не плохая Можно для этих целей поставить внешнюю маленькую ПЛИС, которая будет выполнять декодирование и кодирование по Хемингу ссылка на zip архив И в этом случае количество передаваемой информации будет избыточной (плата за помехозащищенность) примерно на 1/3. Лучше по помехозащищенности будет LDPC, которые я ранее предложил (мое мнение) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться