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

Код Рида-Соломона для короткого пакета из 2-х байт.

Доброго дня!

Есть два байта информации, мне надо передать их по радиоканалу.

Хочу взять код с избыточностью 100%, то есть превратить их в 4 байта.

Подойдет ли код Рида-Соломона для этой цели?

Делать буду на FPGA Altera, там есть IP-блоки кодера и декодера Р-С.

Или код РС больше подходит для более длинных пакетов?

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


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

Есть два байта информации, мне надо передать их по радиоканалу.

Хочу взять код с избыточностью 100%, то есть превратить их в 4 байта.

Подойдет ли код Рида-Соломона для этой цели?

А существует ли код Рида-Соломона с такими параметрами?

 

Стр. 4, правая колонка, в самом низу примеры: https://www.um.edu.mt/__data/assets/pdf_fil...tion_Part_1.pdf

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


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

Уважаемый Grizzzly, нет страницы 4 в приложенном Вами документе. Может не ту часть приложили?

 

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


Ссылка на сообщение
Поделиться на другие сайты
А существует ли код Рида-Соломона с такими параметрами?

Если не вру, то должен быть код (8,4), укороченный из (15,11) с 4-хбитными символами и исправлением одной символьной ошибки.

Можно сделать укороченный БЧХ (32,16) с исправлением двух битовых ошибок. Лучше будет, или хуже зависит от характера ошибок.

Изменено пользователем KalashKS

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


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

KalashKS, спасибо, буду пробовать.

и исправлением одной символьной ошибки

А не двух символов? Вроде бы код Рида-Соломона может исправить количество ошибок равное половине избыточности?

Если у меня избыточность 4 символа по 4 бита, значит должен исправить до 8-и битовых ошибок. Или же я ошибаюсь?

 

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


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

 

А не двух символов? Вроде бы код Рида-Соломона может исправить количество ошибок равное половине избыточности?

Если у меня избыточность 4 символа по 4 бита, значит должен исправить до 8-и битовых ошибок. Или же я ошибаюсь?

Все-таки наврал, вы правы. Исправляет 2 ошибки. Пойду вспоминать, как они работают.

А по реализации на таких длинах, возможно, готовые блоки будут неоптимальны. Если тактовые частоты позволяют, табличное декодирование может быть лучшим вариантом.

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


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

а может просто Хэмминг 7,4 по нибблам?

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


Ссылка на сообщение
Поделиться на другие сайты
а может просто Хэмминг 7,4 по нибблам?

Да, наверное, Рида-Соломона не подходит для такого короткого пакета.

Посему, переформулирую вопрос: какой код лучше использовать для кодирования 16-и бит информации с увеличением длины до 32-х бит?

Среда - радио, с помехами и замираниями.

Код Голея бы прекрасно подошел, но он 12-бит - ни то ни се, и не 8 и не 16.

Сразу в умные книги просьба не отправлять, уже скачал, читаю :)

 

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


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

Может быть, такая конструкция https://ieeexplore.ieee.org/document/260165/ ?

Каково время когерентности канала? Сколько битов укладывается? Если оно велико, то можно БЧХ и перемежитель. Но здесь требования по задержке нужно учитывать.

 

Возможно, следует посмотреть в сторону полярных кодов: http://elkhamy.byethost13.com/pubs/GC15_HARQ_RC_Polar_CW.pdf

Правда, для них декодирование требует бОльших затрат. Конечно, для малых длин они тоже не очень, но в 5G как раз для коротких пакетов в канале служебной информации были выбраны они.

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


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

Из любопытсва глянул в матлабе. Для ФМ2 и АГБШ полубайтовый RS (8,4) выигрывает у 4-х Хэммингов примерно 0,5 дБ по PER 1e-4. А дальше, как написали выше, нужна конкретика про ваш канал и то, какие там ошибки.

Изменено пользователем KalashKS

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


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

Для таких коротких пакетов строить канал по принципу "демодулятор с жестким решением + декодер" наверное не стоит.

Из вариантов я бы рассмотрел сигнально-кодовые конструкции, например, на основе преобразования Адамара (Complementary code keying)

 

Дальше в списке коды, позволящие осуществлять декодирование "мягких" решений: TC, BPTC, LDPC, Сверточный

 

Если демодулятор - данность, то, да, ваш выбор - это RS или BCH с индикацией "затираний" на входе.

Дробить пакет на более короткие смысла не имеет.

 

Если у вас канал с замираниями, то лучше сразу ориентироваться на разнесение - пространственное, временное и/или частотное.

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


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

Спасибо за ответы!!!

Если у вас канал с замираниями

Да, канал с замираниями - ионосферный КВ. Частотное и пространственное разнесение планируем использовать, но пока юзаем железку без разнесения.

 

Если демодулятор - данность,

Не, демодулятор тоже свой, пока начали с QPSK, а дальше видно будет.

Я уже осознал, что дробить короткий пакет на еще более мелкие смысла нет. Буду искать код 32-16.

Сначала попробуем на жестких решениях, посмотрим, насколько плохо получается, а затем попробуем сделать мягкое декодирование.

 

сигнально-кодовые конструкции, например, на основе преобразования Адамара (Complementary code keying)

Это не функции Уолша? Можно в двух словах смысл использования Адамар в качестве кода? Не понимаю просто этого.

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


Ссылка на сообщение
Поделиться на другие сайты
Можно в двух словах смысл использования Адамар в качестве кода?

 

Можно построить код Рида-Маллера с декодером на основе быстрого преобразования Уолша-Адамара, такой декодер, будучи блочным, может работать на честных мягких решениях без алгоритмов вроде Чейза.

 

Пример: код Рида-Маллера (32, 10), используемый для кодирования бит TFCI в 3G (UMTS). Информации в интернете полно, например погуглите патент US20140169273A1.

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


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

Спасибо, Stelth-Coder!

А бывает код Рида-Малера размером (32, 16)?

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


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

На здоровье.

 

https://en.m.wikipedia.org/wiki/Complementary_code_keying.

 

В .11b исползуются последовательности 8 bits -> 8 chips qpsk. Вам нужно расширить этот вид модуляции до 16bits -> 16 chips qpsk и построить для него демодулятор-декодер макс. правдоподобия на основе преобразования Уолша-Адамара.

 

В двух словах: вам нужно построить ансамбль из 2^16 последовательностей с максимальным значением евклидовой метрики между соседними.

 

Спасибо за ответы!!!

 

Это не функции Уолша? Можно в двух словах смысл использования Адамар в качестве кода? Не понимаю просто этого.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация