Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Код Рида-Соломона для короткого пакета из 2-х байт.
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
soldat_shveyk
Доброго дня!
Есть два байта информации, мне надо передать их по радиоканалу.
Хочу взять код с избыточностью 100%, то есть превратить их в 4 байта.
Подойдет ли код Рида-Соломона для этой цели?
Делать буду на FPGA Altera, там есть IP-блоки кодера и декодера Р-С.
Или код РС больше подходит для более длинных пакетов?
Grizzzly
Цитата(soldat_shveyk @ May 24 2018, 16:35) *
Доброго дня!
Есть два байта информации, мне надо передать их по радиоканалу.
Хочу взять код с избыточностью 100%, то есть превратить их в 4 байта.
Подойдет ли код Рида-Соломона для этой цели?

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

Стр. 4, правая колонка, в самом низу примеры: https://www.um.edu.mt/__data/assets/pdf_fil...tion_Part_1.pdf
soldat_shveyk
Уважаемый Grizzzly, нет страницы 4 в приложенном Вами документе. Может не ту часть приложили?
KalashKS
Цитата(Grizzzly @ May 24 2018, 23:17) *
А существует ли код Рида-Соломона с такими параметрами?

Если не вру, то должен быть код (8,4), укороченный из (15,11) с 4-хбитными символами и исправлением одной символьной ошибки.
Можно сделать укороченный БЧХ (32,16) с исправлением двух битовых ошибок. Лучше будет, или хуже зависит от характера ошибок.
soldat_shveyk
KalashKS, спасибо, буду пробовать.
Цитата
и исправлением одной символьной ошибки

А не двух символов? Вроде бы код Рида-Соломона может исправить количество ошибок равное половине избыточности?
Если у меня избыточность 4 символа по 4 бита, значит должен исправить до 8-и битовых ошибок. Или же я ошибаюсь?
KalashKS
Цитата(soldat_shveyk @ May 25 2018, 12:56) *
KalashKS, спасибо, буду пробовать.

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

Все-таки наврал, вы правы. Исправляет 2 ошибки. Пойду вспоминать, как они работают.
А по реализации на таких длинах, возможно, готовые блоки будут неоптимальны. Если тактовые частоты позволяют, табличное декодирование может быть лучшим вариантом.
_pv
а может просто Хэмминг 7,4 по нибблам?
soldat_shveyk
Цитата
а может просто Хэмминг 7,4 по нибблам?

Да, наверное, Рида-Соломона не подходит для такого короткого пакета.
Посему, переформулирую вопрос: какой код лучше использовать для кодирования 16-и бит информации с увеличением длины до 32-х бит?
Среда - радио, с помехами и замираниями.
Код Голея бы прекрасно подошел, но он 12-бит - ни то ни се, и не 8 и не 16.
Сразу в умные книги просьба не отправлять, уже скачал, читаю sm.gif
Grizzzly
Может быть, такая конструкция https://ieeexplore.ieee.org/document/260165/ ?
Каково время когерентности канала? Сколько битов укладывается? Если оно велико, то можно БЧХ и перемежитель. Но здесь требования по задержке нужно учитывать.

Возможно, следует посмотреть в сторону полярных кодов: http://elkhamy.byethost13.com/pubs/GC15_HARQ_RC_Polar_CW.pdf
Правда, для них декодирование требует бОльших затрат. Конечно, для малых длин они тоже не очень, но в 5G как раз для коротких пакетов в канале служебной информации были выбраны они.
KalashKS
Из любопытсва глянул в матлабе. Для ФМ2 и АГБШ полубайтовый RS (8,4) выигрывает у 4-х Хэммингов примерно 0,5 дБ по PER 1e-4. А дальше, как написали выше, нужна конкретика про ваш канал и то, какие там ошибки.
Fat Robot
Для таких коротких пакетов строить канал по принципу "демодулятор с жестким решением + декодер" наверное не стоит.
Из вариантов я бы рассмотрел сигнально-кодовые конструкции, например, на основе преобразования Адамара (Complementary code keying)

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

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

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

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

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

Не, демодулятор тоже свой, пока начали с QPSK, а дальше видно будет.
Я уже осознал, что дробить короткий пакет на еще более мелкие смысла нет. Буду искать код 32-16.
Сначала попробуем на жестких решениях, посмотрим, насколько плохо получается, а затем попробуем сделать мягкое декодирование.

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

Это не функции Уолша? Можно в двух словах смысл использования Адамар в качестве кода? Не понимаю просто этого.
stealth-coder
Цитата(soldat_shveyk @ May 26 2018, 09:55) *
Можно в двух словах смысл использования Адамар в качестве кода?


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

Пример: код Рида-Маллера (32, 10), используемый для кодирования бит TFCI в 3G (UMTS). Информации в интернете полно, например погуглите патент US20140169273A1.
soldat_shveyk
Спасибо, Stelth-Coder!
А бывает код Рида-Малера размером (32, 16)?
Fat Robot
На здоровье.

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

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

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

Цитата(soldat_shveyk @ May 26 2018, 10:55) *
Спасибо за ответы!!!

Это не функции Уолша? Можно в двух словах смысл использования Адамар в качестве кода? Не понимаю просто этого.
soldat_shveyk
Спасибо, осмысливаю!
Цитата
В двух словах: вам нужно построить ансамбль из 2^16 последовательностей с максимальным значением евклидовой метрики между соседними.

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


Fat Robot
Я понимаю, что вопросов у вас много, но, пожалуйста, не поленитесь, посмотрите статью в вики, которую я привел.

Цитата(soldat_shveyk @ May 26 2018, 14:56) *
А какой длины ...?
Где найти ...?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.