|
Расширенный БЧХ-код (extended BCH code) |
|
|
|
May 27 2011, 12:10
|
Группа: Участник
Сообщений: 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). Вот как работать с расширенным кодом - непонятно. Прошу помощи клуба.
|
|
|
|
|
 |
Ответов
|
May 27 2011, 12:27
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(roman73 @ May 27 2011, 16:10)  Хочу разобраться с расширенным кодом БЧХ(1020, 998). Замечу, что (x^2+1) = (x+1)(x+1). В чем смысл добавления двух одинаковых множителей? Что делать с двумя дополнительными проверочными битами? Вот как работать с расширенным кодом - непонятно. Прошу помощи клуба. Обычно добавляется один множитель. Откуда взялся квадрат - непонятно. Возьмите свой старый проект (нерасширенного кода БЧХ). И без всяких полевых изворотов тупо добавьте проверку на четность по всему кодовому слову (один проверочный бит). Декодируете все по старому (не учитывая новый проверочный бит). После декодирования проверяете, сколько ошибок было исправлено. Если их было (d-1)/2, то проверяете , выполняется ли проверка на четность после исправления найденных ошибок. Если нет - вы обнаружили неисправимую комбинацию ошибок. Как-то так.
|
|
|
|
|
May 27 2011, 12:45
|
Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262

|
Цитата(SKov @ May 27 2011, 16:27)  Обычно добавляется один множитель. Откуда взялся квадрат - непонятно. Из спецификации.  Цитата(SKov @ May 27 2011, 16:27)  Возьмите свой старый проект (нерасширенного кода БЧХ). И без всяких полевых изворотов тупо добавьте проверку на четность по всему кодовому слову (один проверочный бит). Декодируете все по старому (не учитывая новый проверочный бит). После декодирования проверяете, сколько ошибок было исправлено. Если их было (d-1)/2, то проверяете , выполняется ли проверка на четность после исправления найденных ошибок. Если нет - вы обнаружили неисправимую комбинацию ошибок. Как-то так. Ну это первое, что приходит в голову. Возможно, дополнительную избыточность можно как-нибудь использовать более продуктивно...
|
|
|
|
|
May 27 2011, 13:03
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(roman73 @ May 27 2011, 16:45)  Из спецификации.  Если не секрет, из какой? Цитата Ну это первое, что приходит в голову. Возможно, дополнительную избыточность можно как-нибудь использовать более продуктивно... Тут все зыбко. Строго говоря, когда вы добавляете нулевой корень, то у вас просто увеличивается на единицу число проверочных символов кода, а число информационных уменьшается на столько же. А у вас длина меняется? - или я не понял вашей задачи?
|
|
|
|
|
May 27 2011, 13:10
|
Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262

|
Цитата(SKov @ May 27 2011, 17:03)  Если не секрет, из какой? G.975.1 I9 Цитата(SKov @ May 27 2011, 17:03)  Тут все зыбко. Строго говоря, когда вы добавляете нулевой корень, то у вас просто увеличивается на единицу число проверочных символов кода, а число информационных уменьшается на столько же. А у вас длина меняется? - или я не понял вашей задачи? Расширенные коды тем и отличаются, что увеличивают длину кодового слова. Нулевой корень (вернее alpha(0)) - это просто код не "в узком смысле" (синдромы нумеруются не с 1).
|
|
|
|
Сообщений в этой теме
roman73 Расширенный БЧХ-код (extended BCH code) May 27 2011, 12:10 roman73 Цитата(SKov @ May 27 2011, 17:03) Тут все... May 30 2011, 10:54 Gold777 Не пойму что-то почему код БЧХ(1020,988) является ... Nov 14 2012, 17:51 Denisnovel Кто нибудь выяснил, чем отличается расширенный код... Jan 15 2014, 11:55 miroshnikov-mai Почитал стандарт - остались непонятны два момента:... Feb 25 2015, 15:06 andyp Цитата(miroshnikov-mai @ Feb 25 2015, 18... Feb 27 2015, 23:37  andyp ps на счет точного равенство кодового расстояния м... Feb 28 2015, 09:13 miroshnikov-mai Спасибо, именно так сделал с первым полиномом g(x)... Mar 3 2015, 13:10 andyp Цитата(miroshnikov-mai @ Mar 3 2015, 16... Mar 3 2015, 14:02 miroshnikov-mai Спасибо, вы и так очень помогли, пойду читать Mar 3 2015, 14:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|