|
|
  |
Коды БЧХ, Вопросы по алгоритмам декодирования |
|
|
|
Mar 14 2012, 09:33
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753

|
Сейчас сделал так. Вроде работает. Буду тестировать. Код function automatic data_t start_root_index(input int step); start_root_index = (step*(gf_n_max - n /*+ 1*/)) % gf_n_max; endfunction
|
|
|
|
|
Mar 26 2012, 05:14
|
Группа: Новичок
Сообщений: 6
Регистрация: 26-03-12
Пользователь №: 71 000

|
Господа, просвятите начинающего! Задача стоит реализовать на языке MATLAB алгоритм Берлекемпа-Месси в декодере БЧХ. Алгоритм предусматривает использование компонент (элементов) синдрома, которые определяются как значения принятого слова (полинома) в нулях кода (в корнях порождающего многочлена). Мне непонятно, в какой форме должны находиться и использоваться в этой ситуации корни порождающего многочлена. Буду особенно благодарен за комментарии с примерами.
|
|
|
|
|
Mar 28 2012, 01:38
|
Группа: Новичок
Сообщений: 6
Регистрация: 26-03-12
Пользователь №: 71 000

|
Цитата(des00 @ Mar 27 2012, 12:16)  что мешает найти в матлабе файлик rsdec.m или bchdec.m и посмотреть ? отсутствие уверенности в том, что там именно нужный мне алгоритм
|
|
|
|
|
Mar 28 2012, 11:15
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(mad_physicist @ Mar 26 2012, 09:14)  Господа, просвятите начинающего! Задача стоит реализовать на языке MATLAB алгоритм Берлекемпа-Месси в декодере БЧХ. Алгоритм предусматривает использование компонент (элементов) синдрома, которые определяются как значения принятого слова (полинома) в нулях кода (в корнях порождающего многочлена). Мне непонятно, в какой форме должны находиться и использоваться в этой ситуации корни порождающего многочлена. Буду особенно благодарен за комментарии с примерами. Если хотите разобраться в алгоритме БМ, почитайте Морелос-Сарагоса - Искусство помехоустойчивого кодирования. Для алгоритма БМ нужны только компоненты синдромов. Компоненты синдромов рассчитываются с помощью элементов поля Галуа. О чем вы спрашиваете мне не очень понятно ( Что значит в какой форме должны находиться и использоваться в этой ситуации корни порождающего многочлена?).
Сообщение отредактировал Gold777 - Mar 28 2012, 11:26
|
|
|
|
|
Mar 29 2012, 01:23
|
Группа: Новичок
Сообщений: 6
Регистрация: 26-03-12
Пользователь №: 71 000

|
Цитата(Gold777 @ Mar 28 2012, 18:15)  Если хотите разобраться в алгоритме БМ, почитайте Морелос-Сарагоса - Искусство помехоустойчивого кодирования. Для алгоритма БМ нужны только компоненты синдромов. Компоненты синдромов рассчитываются с помощью элементов поля Галуа. О чем вы спрашиваете мне не очень понятно ( Что значит в какой форме должны находиться и использоваться в этой ситуации корни порождающего многочлена?). То, что я написал, основано именно на книге Морелоса-Сарагосы и статье С.В. Фёдорова о реализации БМ-алгоритма для РС-кодов на ПЛИС. Компоненты синдромов вычисляются путём подстановки корней порождающего полинома в полином принятого сообщения. Я пока не понимаю, как именно это должно происходить. То есть у меня имеется порождающий полином 14-й степени, нахождение его корней "в лоб", обычной арифметикой, даёт мне 14 комплексных корней. Я подозреваю, что такое решение не есть правильное, и необходимо использовать полиноминальную арифметику. Но каким образом это сделать я пока не знаю. Попутно задам ещё один вопрос: подскажите, как связаны между собой компоненты синдрома, о которых говорилось выше, и синдромный полином?
|
|
|
|
|
Mar 29 2012, 15:13
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Уважаемые гуру, подскажите что не так делаю. Решил проверить работу декодера БЧХ со стираниям. Взял алгоритм из Скляра : 1. заместить стирания нулями 2. заместить стирания единицам 3. декодировать оба и выбрать то слово, которое соответствует наименьшему числу ошибок, исправленных вне позиций стирания. Кол-во исправляемых стираний определяется по формуле p <= d-1. Набросал в матлабе простой пример. взял код {255, 131, 18}, с dmin = 37. Но не вижу исправления 36 стираний %( Единственная разница алгоритма в Скляре и в примере в том, что в примере добавляются только стирания, по идее кол-во ошибок вне позиций стирания в обоих случаях должно быть одинаковым. Или я слишком упрощаю и в этом и есть моя ошибка ? Спасибо.
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Mar 29 2012, 20:17
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(mad_physicist @ Mar 29 2012, 05:23)  То, что я написал, основано именно на книге Морелоса-Сарагосы и статье С.В. Фёдорова о реализации БМ-алгоритма для РС-кодов на ПЛИС. Компоненты синдромов вычисляются путём подстановки корней порождающего полинома в полином принятого сообщения. Я пока не понимаю, как именно это должно происходить. То есть у меня имеется порождающий полином 14-й степени, нахождение его корней "в лоб", обычной арифметикой, даёт мне 14 комплексных корней. Я подозреваю, что такое решение не есть правильное, и необходимо использовать полиноминальную арифметику. Но каким образом это сделать я пока не знаю. Попутно задам ещё один вопрос: подскажите, как связаны между собой компоненты синдрома, о которых говорилось выше, и синдромный полином? Необходимо использовать арифметику в поле Галуа. Для реализации в ПЛИС вам синдромный полином не нужен, нужны компоненты синдрома, которые потом используются в алгоритме для нахождения коэффициентов полинома локаторов ошибок. Разберитесь для начала как находятся компоненты синдрома и с арифметикой в поле Галуа, а потом уже к алгоритму переходите. Хорошо написано это в статье Рахман П.А. Основы защиты данных от разрушения. Коды Рида-Соломона.
|
|
|
|
|
Apr 2 2012, 01:46
|
Группа: Новичок
Сообщений: 6
Регистрация: 26-03-12
Пользователь №: 71 000

|
Цитата(Gold777 @ Mar 30 2012, 03:17)  Необходимо использовать арифметику в поле Галуа. Для реализации в ПЛИС вам синдромный полином не нужен, нужны компоненты синдрома, которые потом используются в алгоритме для нахождения коэффициентов полинома локаторов ошибок. Разберитесь для начала как находятся компоненты синдрома и с арифметикой в поле Галуа, а потом уже к алгоритму переходите. Хорошо написано это в статье Рахман П.А. Основы защиты данных от разрушения. Коды Рида-Соломона. Спасибо, обязательно воспользуюсь Вашими рекомендациями
|
|
|
|
|
Jun 4 2012, 12:02
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(des00 @ Mar 29 2012, 19:13)  Кол-во исправляемых стираний определяется по формуле p <= d-1. Набросал в матлабе простой пример. взял код {255, 131, 18}, с dmin = 37. Но не вижу исправления 36 стираний %(
Единственная разница алгоритма в Скляре и в примере в том, что в примере добавляются только стирания, по идее кол-во ошибок вне позиций стирания в обоих случаях должно быть одинаковым. Или я слишком упрощаю и в этом и есть моя ошибка ? Не смог разобраться с системой накопления статистики. Смысл графика также не очень ясен. И к своему стыду не понял, что имеется в виду под spike. У меня была более простая моделька (так сказать, показательно-учебная), но идентичная по сути. Ваш пример «хавает», исправляя 36 стираний при нуле ошибок. Кол-во исправляемых стираний + ошибок, действительно, по формуле 2b + u < d, где b — кол. битовых ошибок, u — количество стираний.
bch_with_erasures.zip ( 1.39 килобайт )
Кол-во скачиваний: 101Если, конечно, актуально.
|
|
|
|
|
Jun 4 2012, 16:39
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(x736C @ Jun 4 2012, 06:02)  Не смог разобраться с системой накопления статистики. Смысл графика также не очень ясен. И к своему стыду не понял, что имеется в виду под spike.  spike - импульсная ошибка, моделирую канал с импульсными ошибками, при наличии 100% ой схемы их обнаружений. статистика - кол-во выбитых бит на блок и итоговый бер Цитата У меня была более простая моделька (так сказать, показательно-учебная), но идентичная по сути. Ваш пример «хавает», исправляя 36 стираний при нуле ошибок. Кол-во исправляемых стираний + ошибок, действительно, по формуле 2b + u < d, где b — кол. битовых ошибок, u — количество стираний.
bch_with_erasures.zip ( 1.39 килобайт )
Кол-во скачиваний: 101Если, конечно, актуально. конечно актуально, а то судя по молчанию гуру, у меня появилось подозрение что вопрос мега ламерский и я туплю сильно %) правда тему я пока немного оставил, другим занялся. Спасибо что ответили, скоро обновлю выложенный бчх декодер версией со стираниями %) и в турбокоды нырну
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|