Перейти к содержанию
    

Кодирование радиоканала

Добрый день!

 

Прошу прощения если подобная тема уже поднималась.

Возникла проблема - необходимо обеспечить помехоустойчивость радиоканала.

Есть уже готовое железо, собранное на TXC101 и TRC101, частота 433,92МГц. Железо менять нельзя, могу только программно улучшать что-то.

Канал односторонний, т.е. полноценную передачу данных с ACK сделать не получается. Соответственно стоит задача обеспечить максимальную помехоустойчивость

отправляемой информации.

Мне необходимо передавать пакеты длиной порядка 500 байт. Скорость 9600.

Однако не хотелось бы сильно наращивать размер пакета, т.к. это удлинит время передачи.

Передавать по несколько раз одни и те же пакеты тоже не сильно хорошо, т.к. передаваемые данные меняются постоянно(где-то раз в секунду) и потому очень желательно чтобы каждый пакет доходил максимально полным(максимально восстановленным).

Посоветуйте пожалуйста как сделать правильно:

- сначала попытаться ужать исходные данные а потом закодировать чем-то типа кодов Хемминга?

- или при помехоустойчивом кодировании нежелательна предварительное сжатие (архивация) данных?

- стоит ли использовать перемежение(перемешивание) для лучшего восстановления битых блоков данных?

- какое кодирование лучше применить? (у меня контроллер atmega8 , не сильно много места свободного и вычислительной мощности)

- насколько сильно разрастается размер пакета при кодировании позволяющем восстановить порядка 25-50% битого пакета?

 

Я читал про коды Рида Соломона но я думаю наврядле я смогу реализовать нечто подобное.

Коды Хемминга я так понимаю проще будет реализовать, но достаточно ли мне будет этого.

Какие есть оптимальные варианты?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день! Возникла проблема - необходимо обеспечить помехоустойчивость радиоканала. ... Какие есть оптимальные варианты?

Как вариант (ресурсоемкое):

LDPC (irreglar or regular) на 2/3, т.е. 1/3 избыточная информация будет

Хотя все зависит от кол-во памяти и требованием к времени обработки...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- сначала попытаться ужать исходные данные

Какой смысл? Если один раз сожмётся в 100 байт а другой раз в 499 то что будете делать?

 

а потом закодировать чем-то типа кодов Хемминга?

Исправляет одну-единственную битовую ошибку.

 

- или при помехоустойчивом кодировании нежелательна предварительное сжатие (архивация) данных?

Не имеет никакого значения.

 

- стоит ли использовать перемежение(перемешивание) для лучшего восстановления битых блоков данных?

Это самый последний аспект вашей проблемы и будет зависеть от всего остального.

 

- какое кодирование лучше применить? (у меня контроллер atmega8 , не сильно много места свободного и вычислительной мощности)

Я читал про коды Рида Соломона но я думаю наврядле я смогу реализовать нечто подобное.

Рид-Соломон это чуть ли не самое простое, что вы можете применить. Ну БЧХ ещё.

 

- насколько сильно разрастается размер пакета при кодировании позволяющем восстановить порядка 25-50% битого пакета?

:-)))))))))))) 50% невозможно. Сгенерите случайный блок данных и угадаете 50% битов реального пакета :-)))))))

Около 25% битовых ошибок теоретически можно исправить при скорости кода 1/4 (это значит полезной информации 1/4), если он работает на пределе Шеннона. Но вы к нему приблизитесь не ближе чем на несколько дБ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..если данные - телеметрия, наверное достаточно быть уверенным в том что пакет пришёл верный.

Может вам не нужно ничего восстанавливать а достаточно надёжной контрольной суммы в конце пакета, плюс их дублирование.

А можно передавать пакеты вдвое медленней - у вас при той же выходной мощности будет на 3 Дб С\ш лучше.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня контроллер atmega8 , не сильно много места свободного и вычислительной мощности

вот на этом тему можно и закрыть. из доступного защитить кодом хэминга (7,4) тетрады. правда избыточность будет..... либо CRC для фильтрации на приемной стороне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я на атмеге на посылке 6 байт и контрольной сумме 2 байта исправляю табличным способом все одиночные и двойные ошибки, а также пакетные (идущие подряд) тройные и четверные. Теоретически на моем коде делением полиномов можно исправлять и все тройные, но алгоритм деления сложный, обошелся таблицей.

Код из стандарта MPT-1327, описан в документации на модемы CML FX809,429,829

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- стоит ли использовать перемежение(перемешивание) для лучшего восстановления битых блоков данных?

 

Перемежение вам поможет только если вы будете разбивать свои 500 байт на несколько кусков и эти куски отдельно обрабатывать.

 

Т.е. если, например взять 4608 бит, разбить на 128 кусков по 36 бит и закодировать БЧХ(36,48) который исправляет 2 ошибки, а затем перемешать куски, чтобы сначала шли первые биты из каждого, затем вторые и т.д. - то из переданных 6144 бит могут быть востановленны после повреждения - 256.

Другими словами помеха длительностью 26мС вам будет не страшна при 9600бод, если не собьёт синхронизацию.

 

PS: Всё вышеизложенное я привёл в качестве примера для чего нужно перемежение, реализовывать 128 БЧХ на атмеге не стоит...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципе, если Хеминг применить к каждому байту, то помехозащищенность будет не плохая

Можно для этих целей поставить внешнюю маленькую ПЛИС, которая будет выполнять декодирование и кодирование по Хемингу

ссылка на zip архив

 

И в этом случае количество передаваемой информации будет избыточной (плата за помехозащищенность) примерно на 1/3.

Лучше по помехозащищенности будет LDPC, которые я ранее предложил (мое мнение)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...