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

 
 
> Коды БЧХ, Вопросы по алгоритмам декодирования
des00
сообщение Sep 22 2010, 05:44
Сообщение #1


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Гуру кодирования, просвятите по теме

Потребовалось мне для проекта сделать БЧХ декодер работающий в поле GF(2), реализовал его по алгоритму Берлекэмпа-Месси приведенному на рисунке. Мне интересно, чем определяется необходимость последней проверки алгоритма перед процедурой Ченя(на рисунке выделено)? Ведь для бинарных БЧХ кодов четные невязки всегда будут равны нулю, а на нечетных проходах, по блок-схеме алгоритма, мы всегда попадаем на изменение длинны и степени полинома локатора ошибок. Т.е. эта проверка ничего не определяет. Тогда зачем она нужна? Или такая ситуация возможна только для не бинарных кодов?

И вопрос по алгоритму Евклида. Во всех книгах написано что он лучше подходит для аппаратной реализации, чем алгоритм Берлекэмпа-Месси, из-за своей регулярной структуры. Но один из шагов алгоритма деление полинома на полином. В железе же это делается с помощью регистров с линейными обратными связями, что приводит к многотактному делению и появлению лишних задержек, что ИМХО не айс. Так в чем же его преимущество перед алгоритмом Берлекэмпа-Месси ?

Спасибо.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vadimuzzz
сообщение Sep 22 2010, 06:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



не гуру, но:
1. да, для двоичных кодов БЧХ процедура проще, четные итерации можно пропустить. если эта картинка из Блейхута, то в главе 7.6 есть подробности.
2. в той же книге про алгоритм Евклида говорится: "считается, что он менее эффективен в практическом использовании" smile.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 22 2010, 06:22
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(vadimuzzz @ Sep 22 2010, 00:13) *
1. да, для двоичных кодов БЧХ процедура проще, четные итерации можно пропустить. если эта картинка из Блейхута, то в главе 7.6 есть подробности.

т.е. для двоичных кодов последнюю проверку (if deg(Lambda) == L) можно отбросить?

Цитата
2. в той же книге про алгоритм Евклида говорится: "считается, что он менее эффективен в практическом использовании" smile.gif

а вот Сарагоса с Кларком говорят что наоборот, для железа Евклид самое то. Вот мне и интересно почему %)


--------------------
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Sep 22 2010, 06:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(des00 @ Sep 22 2010, 13:22) *
т.е. для двоичных кодов последнюю проверку (if deg(Lambda) == L) можно отбросить?

я так понимаю это от задачи зависит: нужно ли детектировать несправимую ошибку? если нет - выбросить. если надо - ввести дополнительные невязки.
Цитата
а вот Сарагоса с Кларком говорят что наоборот, для железа Евклид самое то. Вот мне и интересно почему %)

ну, они-то точно гуру smile.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 22 2010, 06:44
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(vadimuzzz @ Sep 22 2010, 01:34) *
я так понимаю это от задачи зависит: нужно ли детектировать несправимую ошибку? если нет - выбросить. если надо - ввести дополнительные невязки.

1. неисправимую ошибку можно детектировать в процедуре ченя, когда количество найденных корней не совпадет с порядком локатора ошибок.
2. написал на сях алгоритм (на основе сорцов из сети), при количестве ошибок больше чем можно исправить дает выполнение этого равенства. Поэтому меня и заинтересовал этот момент. Чую что здесь что то не то (хотя может быть я просто в алгоритме ошибся %)).

UPD. Вот я ламер, неисправимая ошибка и количество неисправимых ошибок это же разные вещи %) Если я сделал правильные умозаключения, то для двоичных кодов эта проверка не нужна, т.к. для этих кодов ветка 2L > r-1 никогда не выполняется. Поэтому степень полинома локаторов изменяется одновременно с L.


--------------------
Go to the top of the page
 
+Quote Post
SKov
сообщение Sep 22 2010, 10:44
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119



Цитата(des00 @ Sep 22 2010, 10:44) *
1. неисправимую ошибку можно детектировать в процедуре ченя, когда количество найденных корней не совпадет с порядком локатора ошибок.


Только для укороченных кодов. В остальных случаях Чень перебирает все элементы поля и среди них обязательно найдутся все корни полинома.

Цитата
2. написал на сях алгоритм (на основе сорцов из сети), при количестве ошибок больше чем можно исправить дает выполнение этого равенства. Поэтому меня и заинтересовал этот момент. Чую что здесь что то не то (хотя может быть я просто в алгоритме ошибся %)).
UPD. Вот я ламер, неисправимая ошибка и количество неисправимых ошибок это же разные вещи %) Если я сделал правильные умозаключения, то для двоичных кодов эта проверка не нужна, т.к. для этих кодов ветка 2L > r-1 никогда не выполняется. Поэтому степень полинома локаторов изменяется одновременно с L.

Эта проверка редко, но срабатывает. Степень не всегда меняется одновременно с L.
Помоделируйте декодер и поймаете такую ситуацию.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 22 2010, 16:03
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SKov @ Sep 22 2010, 04:44) *
Только для укороченных кодов. В остальных случаях Чень перебирает все элементы поля и среди них обязательно найдутся все корни полинома.

Вот что странно, я использовал в качестве базы пример
Код
* Title:   Encoder/decoder for binary BCH codes in C (Version 3.1)
* Author:  Robert Morelos-Zaragoza

там используется следующий алгоритм ченя
Код
            // put elp into index form
            for (i = 0; i <= L; i++)
                elp[i] = index_of[elp[i]];

            printf("sigma(x) = ");
            for (i = 0; i <= L; i++)
                printf("%3d ", elp[i]);
            printf("\n");
            printf("Roots: ");

            // Chien search: find roots of the error location polynomial
            for (i = 1; i <= L; i++)
                reg[i] = elp[i]; // промежуточная переменная, локаторы в индексной форме

            count = 0;  // считаем реальное количество корней
            for (i = 1; i <= n; i++) {  // осуществляем полный перебор по всем словам для поиска корней локатора ошибок
                q = 1;                  // индексы корней уравнения локаторов ошибок определяют местоположения ошибок
                for (j = 1; j <= L; j++)
                    if (reg[j] != -1) {             // перемножение
                        reg[j] = (reg[j] + j) % n;  // умножение на alpha^(-i*k)
                        q ^= alpha_to[reg[j]];      // делаем сложение в полиномиальной форме
                    }
                if (!q) {   // получили 0, значит искомое число есть корень уравнения
                    // store root and error location number indices
                    root[count] = i;        // сохраняем индекс корня
                    loc[count]  = n - i;    // вписываем местоположение конретной ошибки (она обратная индексу корня)
                    count++;
                    printf("%3d ", n - i);
                }
            }
            printf("\n");

            if (count == L)  // если счетчик корней равен степени полинома локаторов ошибок
            // no. roots = degree of elp hence <= t errors
                for (i = 0; i < L; i++)
                    recd[loc[i]] ^= 1;
            else    // elp has degree > t hence cannot solve
                printf("Incomplete decoding: errors detected\n");


В атаче сишный файл реализации (15,5,7) двоичного кодера. Если я правильно понял теорию это код максимальной длинны. В примере задаются 4 битовые ошибки, которые кодер не может исправить. В этом случае deg(Lambda) == 3, L == 3. Алгоритм Берлекэмпа-Месси не находит предпосылок к невозможности декодирования. Выясняется это только в процедуре Ченя, когда сравнивается количество найденых корней (count == 0) со степенью полинома локатора ошибок == длине LFSR регистра. При этом не находится ни одного корня, тогда как по вашим словам корни быть обязаны unsure.gif

В атаче модифицированный файл, оригинальный файл был взят здесь

Цитата
Эта проверка редко, но срабатывает. Степень не всегда меняется одновременно с L.
Помоделируйте декодер и поймаете такую ситуацию.

спасибо, соберу рандомно/переборный тест и проверю.
Прикрепленные файлы
Прикрепленный файл  bch.zip ( 7.17 килобайт ) Кол-во скачиваний: 138
 


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- des00   Коды БЧХ   Sep 22 2010, 05:44
|- - SKov   Цитата(des00 @ Sep 22 2010, 20:03) При эт...   Sep 22 2010, 17:58
- - des00   Есть такой вопрос по реализации декодера для ПЛИС....   Sep 27 2010, 13:21
|- - Mikhalych   Цитата(des00 @ Sep 27 2010, 17:21) Есть т...   Sep 28 2010, 07:26
|- - SKov   Цитата(Mikhalych @ Sep 28 2010, 11:26) Не...   Sep 28 2010, 11:58
|- - Mikhalych   Цитата(SKov @ Sep 28 2010, 15:58) Без обр...   Sep 28 2010, 12:54
|- - des00   Цитата(Mikhalych @ Sep 28 2010, 06:54) Я ...   Sep 28 2010, 13:53
||- - Mikhalych   Цитата(des00 @ Sep 28 2010, 17:53) ... ис...   Sep 28 2010, 14:08
|- - SKov   Цитата(Mikhalych @ Sep 28 2010, 16:54) Дл...   Sep 28 2010, 13:58
|- - des00   Цитата(Mikhalych @ Sep 28 2010, 07:54) ал...   Oct 1 2010, 07:40
|- - des00   Цитата(des00 @ Oct 1 2010, 02:40) либо я ...   Oct 2 2010, 08:50
|- - Gold777   Цитата(des00 @ Oct 1 2010, 10:40) либо я ...   Jan 12 2012, 14:39
- - vadimuzzz   поделить на aplha^i, i=1..2t   Sep 27 2010, 14:31
- - des00   Цитата(vadimuzzz @ Sep 27 2010, 09:31) по...   Sep 28 2010, 11:11
- - x736C   Сколько «жрет» ресурсов ваша реализация? AHDL срав...   Sep 28 2010, 11:43
|- - des00   Цитата(x736C @ Sep 28 2010, 06:43) Скольк...   Sep 28 2010, 11:57
- - x736C   Вопрос ко всем. А вы память используете?   Sep 28 2010, 12:59
|- - Mikhalych   Цитата(x736C @ Sep 28 2010, 16:59) Вопрос...   Sep 28 2010, 13:02
|- - x736C   Цитата(des00 @ Oct 4 2010, 16:34) ЗЫ. Мне...   Jan 19 2011, 09:57
|- - des00   Цитата(x736C @ Jan 19 2011, 03:57) Ув. de...   Jan 21 2011, 08:43
|- - x736C   Цитата(des00 @ Jan 21 2011, 11:43) да име...   Jan 21 2011, 13:19
|- - des00   Цитата(x736C @ Jan 21 2011, 07:19) Знаком...   Jan 22 2011, 12:46
- - des00   Гуру кодирования прошу вашей помощи. Как поступают...   Oct 4 2010, 09:58
|- - petrov   Цитата(des00 @ Oct 4 2010, 13:58) Гуру ко...   Oct 4 2010, 12:10
|- - des00   Цитата(petrov @ Oct 4 2010, 06:10) ИМХО э...   Oct 4 2010, 13:04
|- - Mikhalych   Цитата(des00 @ Oct 4 2010, 17:04) Вот мне...   Oct 4 2010, 13:10
||- - des00   Цитата(Mikhalych @ Oct 4 2010, 07:10) мож...   Oct 4 2010, 13:17
||- - Mikhalych   Цитата(des00 @ Oct 4 2010, 17:11) это для...   Oct 4 2010, 13:19
||- - des00   Цитата(Mikhalych @ Oct 4 2010, 07:19) а е...   Oct 4 2010, 13:34
||- - petrov   Цитата(des00 @ Oct 4 2010, 17:34) хмм, не...   Oct 4 2010, 13:38
|||- - des00   Цитата(petrov @ Oct 4 2010, 08:38) Так ес...   Oct 4 2010, 13:50
|||- - petrov   Цитата(des00 @ Oct 4 2010, 17:50) об этом...   Oct 4 2010, 14:12
||- - vadimuzzz   Цитата(des00 @ Oct 4 2010, 20:34) хмм, не...   Oct 4 2010, 14:22
||- - des00   Цитата(vadimuzzz @ Oct 4 2010, 09:22) как...   Oct 4 2010, 14:38
||- - GetSmart   Цитата(des00 @ Oct 4 2010, 19:38) Ну разв...   Oct 4 2010, 15:26
||- - des00   Цитата(GetSmart @ Oct 4 2010, 09:26) Разв...   Oct 4 2010, 15:46
|- - petrov   Цитата(des00 @ Oct 4 2010, 17:04) то что ...   Oct 4 2010, 13:30
- - GetSmart   Ещё раз подумал. Простой бит чётности в случае бол...   Oct 4 2010, 15:57
|- - petrov   Цитата(GetSmart @ Oct 4 2010, 19:57) Ещё ...   Oct 4 2010, 16:15
|- - des00   Цитата(petrov @ Oct 4 2010, 10:15) Более ...   Oct 4 2010, 16:32
|- - petrov   Цитата(des00 @ Oct 4 2010, 20:32) А что е...   Oct 4 2010, 16:54
||- - des00   Цитата(petrov @ Oct 4 2010, 10:54) Хотя б...   Jan 12 2012, 06:46
||- - petrov   Цитата(des00 @ Jan 12 2012, 10:46) Но ниг...   Jan 12 2012, 08:28
||- - des00   Цитата(petrov @ Jan 12 2012, 03:28) Да. н...   Jan 13 2012, 05:57
||- - Gold777   Цитата(des00 @ Jan 13 2012, 08:57) нда, в...   Jan 13 2012, 09:45
||- - des00   Цитата(Gold777 @ Jan 13 2012, 03:45) Вот ...   Jan 13 2012, 14:15
||- - Gold777   Цитата(des00 @ Jan 13 2012, 17:15) ошибка...   Jan 16 2012, 09:24
|- - SKov   Цитата(des00 @ Oct 4 2010, 20:32) странно...   Oct 4 2010, 18:59
- - Serg76   мало того, некоторые коды БЧХ используются в качес...   Oct 4 2010, 16:39
- - des00   Цитата(petrov @ Oct 4 2010, 10:54) Купить...   Oct 5 2010, 02:39
|- - vadimuzzz   Цитата(des00 @ Oct 5 2010, 09:39) А по оп...   Oct 5 2010, 05:00
||- - des00   Цитата(vadimuzzz @ Oct 5 2010, 00:00) нуж...   Oct 5 2010, 05:15
||- - des00   RE: Коды БЧХ   Oct 5 2010, 12:22
|- - petrov   Цитата(des00 @ Oct 5 2010, 06:39) я сильн...   Oct 5 2010, 07:29
|- - des00   Цитата(petrov @ Oct 5 2010, 02:29) В эзер...   Oct 5 2010, 08:25
|- - petrov   Цитата(des00 @ Oct 5 2010, 12:25) Ничего ...   Oct 5 2010, 08:41
|- - des00   Цитата(petrov @ Oct 5 2010, 03:41) Книгу ...   Oct 5 2010, 08:44
|- - SKov   Цитата(petrov @ Oct 5 2010, 12:41) Книгу ...   Oct 5 2010, 09:18
|- - des00   Цитата(SKov @ Oct 5 2010, 04:18) Я почему...   Oct 5 2010, 09:30
||- - SKov   Цитата(des00 @ Oct 5 2010, 13:30) тут Спа...   Oct 5 2010, 09:38
|- - petrov   Цитата(SKov @ Oct 5 2010, 13:18) Я почему...   Oct 5 2010, 09:34
|- - SKov   Цитата(petrov @ Oct 5 2010, 13:34) Изобре...   Oct 5 2010, 10:20
|- - vadimuzzz   Цитата(SKov @ Oct 5 2010, 17:20) Просто з...   Oct 5 2010, 11:51
|- - SKov   Цитата(vadimuzzz @ Oct 5 2010, 15:51) в н...   Oct 5 2010, 12:27
- - vadimuzzz   все украдено до нас http://www.seanerikoconnor.f...   Oct 5 2010, 05:40
|- - des00   Цитата(vadimuzzz @ Oct 4 2010, 23:40) все...   Oct 5 2010, 06:03
- - Serg76   petrov столько времени занимаюсь кодированием, а ...   Oct 5 2010, 09:44
- - wavemaster   А кто-нибудь сталкивался с алгоритмом на основе ма...   Nov 2 2010, 11:23
- - x736C   Хорошо. Итак. Архив содержит следующие документы:...   Jan 22 2011, 21:12
- - Denisnovel   Можно ли определить невозможность исправления ошиб...   Mar 4 2012, 06:21
|- - petrov   Цитата(Denisnovel @ Mar 4 2012, 10:21) Мо...   Mar 4 2012, 12:22
- - Denisnovel   Из обсуждения выше я понял, что достоверно невозмо...   Mar 6 2012, 04:16
|- - petrov   Цитата(Denisnovel @ Mar 6 2012, 08:16) Но...   Mar 6 2012, 05:39
|- - Gold777   Цитата(Denisnovel @ Mar 6 2012, 08:16) Из...   Mar 6 2012, 05:50
- - Denisnovel   Может я не правильно выразился. Можно ли вычислить...   Mar 6 2012, 05:54
|- - Gold777   Цитата(Denisnovel @ Mar 6 2012, 09:54) Мо...   Mar 6 2012, 05:58
- - Denisnovel   Ясно. Спасибо.   Mar 6 2012, 06:04
- - des00   Цитата(Gold777 @ Mar 6 2012, 00:58) нельз...   Mar 6 2012, 06:08
|- - des00   Цитата(des00 @ Mar 6 2012, 01:08) можно, ...   Mar 7 2012, 12:27
|- - SKov   Цитата(des00 @ Mar 7 2012, 16:27) а вот и...   Mar 7 2012, 13:21
|- - des00   Цитата(SKov @ Mar 7 2012, 07:21) Обычно р...   Mar 7 2012, 13:28
- - Denisnovel   Делаю паралельную реализация поиска Ченя согласно ...   Mar 14 2012, 07:32
|- - Mikhalych   Цитата(Denisnovel @ Mar 14 2012, 11:32) Д...   Mar 14 2012, 08:27
- - Denisnovel   Код укороченный. Проблема где-то в инициализации   Mar 14 2012, 09:05
|- - des00   Цитата(Denisnovel @ Mar 14 2012, 04:05) К...   Mar 14 2012, 09:11
- - Denisnovel   Сейчас сделал так. Вроде работает. Буду тестирова...   Mar 14 2012, 09:33
- - Denisnovel   ,,   Mar 14 2012, 09:33
- - mad_physicist   Господа, просвятите начинающего! Задача стоит ...   Mar 26 2012, 05:14
|- - des00   Цитата(mad_physicist @ Mar 25 2012, 23:14...   Mar 27 2012, 05:16
||- - mad_physicist   Цитата(des00 @ Mar 27 2012, 12:16) что ме...   Mar 28 2012, 01:38
||- - des00   Цитата(mad_physicist @ Mar 27 2012, 20:38...   Mar 29 2012, 03:31
|- - Gold777   Цитата(mad_physicist @ Mar 26 2012, 09:14...   Mar 28 2012, 11:15
|- - mad_physicist   Цитата(Gold777 @ Mar 28 2012, 18:15) Если...   Mar 29 2012, 01:23
- - des00   Уважаемые гуру, подскажите что не так делаю. Реш...   Mar 29 2012, 15:13
2 страниц V   1 2 >


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

 


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


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