Jump to content

    
Sign in to follow this  
Pasha_a13

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

Recommended Posts

Добрый день!

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

 

Спасибо!

Share this post


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

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

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

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

Share this post


Link to post
Share on other sites
- сначала попытаться ужать исходные данные

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

 

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

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

 

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

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

 

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

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

 

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

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

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

Share this post


Link to post
Share on other sites
у меня контроллер atmega8 , не сильно много места свободного и вычислительной мощности

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

Share this post


Link to post
Share on other sites

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

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

Share this post


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

 

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

 

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

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

 

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

 

Share this post


Link to post
Share on other sites

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

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

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

 

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this