реклама на сайте
подробности

 
 
> Расширенный БЧХ-код (extended BCH code)
roman73
сообщение May 27 2011, 12:10
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262



Хочу разобраться с расширенным кодом БЧХ(1020, 998).

Генератор кода g(x)= m1(x)*m3(x)*m5(x)*(x^2+1), где
m1(x) = x^10+x^3 + 1
m3(x) = x^10+x^3+x^2+x+1
m5(x) = x^10+x^8+x^3+x^2+1

Перелопатил тонны литературы.
В основном пишут про расширение линейного кода в терминах проверочной матрицы.
или что к g(x) добавляется множитель (x+1),
который есть ни что иное, как бит четности.

Как декодировать такой код нигде не написано.
(есть про расширенный Рид-Соломон - но это другое - там добавляется целый проверочный СИМВОЛ).
У Блейхута описание идет в частотной области. ничего не понятно.

В книге
"L.Hanzo, T.H.Liew, B.L.Yeap - Turbo Coding, Turbo Equalisation and Space-Time Coding for Transmission over Wireless Channels"
Декодирование расширенных коды довольно поднобно описано. Но там мягкое декодирование.
Какие-то манипуляции с аналоговым сигналом.
Жестокая жесть.
Мне в общем нужет жесткий декодер. Ну может быть с поддержкой стираний
(так как будет использоваться в составе каскадного кода).

Замечу, что (x^2+1) = (x+1)(x+1).
В чем смысл добавления двух одинаковых множителей?
Что делать с двумя дополнительными проверочными битами?

Занимаюсь ECC-кодами около года. Сделал классический декодер кодов Рида-Соломона и БЧХ.
Декодер нерасширенного БЧХ сделан как прототип к текущему проекту. g(x) = m1(x)*m3(x)*m5(x).
Это код БЧХ "в узком смысле" (narrow sense): lcm(min_poly(alpha(1)), ... , min_poly(alpha(6))).
Работает и выдает неплохую производительность.

Кодирование, как я понял, делается обычным порядком - в проверочные позиции записывается остаток от деления на g(x).
Вот как работать с расширенным кодом - непонятно.
Прошу помощи клуба.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
miroshnikov-mai
сообщение Feb 25 2015, 15:06
Сообщение #2





Группа: Участник
Сообщений: 9
Регистрация: 23-07-13
Пользователь №: 77 654



Почитал стандарт - остались непонятны два момента:

1) Как все-таки декодировать код с полиномом gh(x) = x^30*m1(x^-1)*m3(x^-1)*m5(x^-1)*(x^2+x+1)?
2) Как добыть проверочные биты pH и pS для первого и второго кодеров из той мутаты, которая там вместо проверочных бит?
Go to the top of the page
 
+Quote Post
andyp
сообщение Feb 27 2015, 23:37
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(miroshnikov-mai @ Feb 25 2015, 18:06) *
1) Как все-таки декодировать код с полиномом gh(x) = x^30*m1(x^-1)*m3(x^-1)*m5(x^-1)*(x^2+x+1)?


Могу ошибаться, но:

Легко показать, что этот код является подкодом кода БЧХ с полиномомx x^30*m1(x^-1)*m3(x^-1)*m5(x^-1) - если кодовые слова делятся на gh(x), то они делятся и на x^30*m1(x^-1)*m3(x^-1)*m5(x^-1). Причем ,кодовое расстояние подкода осталось таким же как было у кода БЧХ (это уже не совсем очевидно, но про это написано в гугле при поиске BCH (1020, 988), где про него говорят, что он triple error correcting sm.gif)

Таким образом, вырисовывается следующая схема декодирования:
1. декодируем кодовые слова декодером кода БЧХ, исправляющим 3 ошибки
2. в случае успешного декодирования проверяем на равенство нулю два синдрома S(a^341) и S(a^682) (фактически, это проверка на принадлежность слова подкоду) - ну или еще каким способом убеждаемся, что кодовое слово после исправления ошибок делится на (x^2+x+1)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 17:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01289 секунд с 7
ELECTRONIX ©2004-2016