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

 
 
> Коды БЧХ, Вопросы по алгоритмам декодирования
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
11 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 99)
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
SKov
сообщение Sep 22 2010, 17:58
Сообщение #8


Знающий
****

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



Цитата(des00 @ Sep 22 2010, 20:03) *
При этом не находится ни одного корня, тогда как по вашим словам корни быть обязаны

Да, похоже, что Акела промахнулся. Я, кажется, погорячился.
Полином локаторов, в случае превышения максимального числа ошибок, совсем
не обязан иметь ВСЕ корни в этом поле.
Звиняюсь.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 27 2010, 13:21
Сообщение #9


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

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



Есть такой вопрос по реализации декодера для ПЛИС. Для декодирования нужно определить 2t синдромов, если считать синдромы классически(через таблицы), получается сильно жирно по ресурсу памяти. По любому должен существовать способ расчета синдромов с помощью сдвиговых регистров с обратными связями. Подскажите плиз где можно про это прочитать? В основных книгах информации об этом я не нашел.

Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Sep 27 2010, 14:31
Сообщение #10


Гуру
******

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



поделить на aplha^i, i=1..2t
Go to the top of the page
 
+Quote Post
Mikhalych
сообщение Sep 28 2010, 07:26
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-12-05
Из: 77
Пользователь №: 11 952



Цитата(des00 @ Sep 27 2010, 17:21) *
Есть такой вопрос по реализации декодера для ПЛИС. Для декодирования нужно определить 2t синдромов, если считать синдромы классически(через таблицы), получается сильно жирно по ресурсу памяти. По любому должен существовать способ расчета синдромов с помощью сдвиговых регистров с обратными связями. Подскажите плиз где можно про это прочитать? В основных книгах информации об этом я не нашел.

Спасибо.


Недавно сам занимался аппаратной реализацией такого декодера - вообщемто всё удачно получилось.
Вот что я тогда нашёл по этой тематике:

1 - софтверная реализация и алгоритмы кодирования/декодирования
2 - аппаратная реализация декодера
3 - оптимизированный алгоритм Чейня
4 - реализация умножителей в поле Галуа (очень полезно)
5 - реализация декодера Рида-Соломона (очень похожа по струкруре блоков на БЧХ)
6 - ещё одна реализация декодера, но алгоритм SiBM тут с ошибкой (я делал RiBM)
7 - мегакнига по реализации кодов коррекции ошибок применительно к флэшкам
8 - готовая прожка кодирования/декодирования от микрона (по ней я отлаживался)

h__p://depositfiles.com/files/zmz0ppjzi


--------------------
Не, ну наболело, капитан - он выступает как директор пляжа, посол! (с) Ширли-Мырли
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 28 2010, 11:11
Сообщение #12


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

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



Цитата(vadimuzzz @ Sep 27 2010, 09:31) *
поделить на aplha^i, i=1..2t

спасибо всё красиво получилось, вычисление синдрома 3 строчки (ну и + строк 40 для функций). Хочу что бы все функции декодера считались на SV, потом может быть выложу в тему про батл AHDL vs SV %)
Цитата(Mikhalych @ Sep 28 2010, 02:26) *
Вот что я тогда нашёл по этой тематике:
h__p://depositfiles.com/files/zmz0ppjzi

спасибо за литературу %)


--------------------
Go to the top of the page
 
+Quote Post
x736C
сообщение Sep 28 2010, 11:43
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Сколько «жрет» ресурсов ваша реализация?
AHDL сравнивать с SV, мне кажется, неуместно. Языки разного поколения. AHDL разве объектно-ориентированный?
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 28 2010, 11:57
Сообщение #14


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

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



Цитата(x736C @ Sep 28 2010, 06:43) *
Сколько «жрет» ресурсов ваша реализация?

как доделаю тогда будет ясно, т.к. я в этом деле ламер всё двигается медленно %)
Цитата
AHDL сравнивать с SV, мне кажется, неуместно. Языки разного поколения. AHDL разве объектно-ориентированный?

да есть такая тема на форуме, если интересно в личку, не надо тут офтопить %)


--------------------
Go to the top of the page
 
+Quote Post
SKov
сообщение Sep 28 2010, 11:58
Сообщение #15


Знающий
****

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



Цитата(Mikhalych @ Sep 28 2010, 11:26) *
Недавно сам занимался аппаратной реализацией такого декодера - вообщемто всё удачно получилось.
....
6 - ещё одна реализация декодера, но алгоритм SiBM тут с ошибкой (я делал RiBM)

Без обратного элемента - это хорошо, но не всегда подходит. Часто заказчик требует
особо быстрого декодирования 1-2 ошибок, а там без обратного элемента не получается.
Go to the top of the page
 
+Quote Post
Mikhalych
сообщение Sep 28 2010, 12:54
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-12-05
Из: 77
Пользователь №: 11 952



Цитата(SKov @ Sep 28 2010, 15:58) *
Без обратного элемента - это хорошо, но не всегда подходит. Часто заказчик требует
особо быстрого декодирования 1-2 ошибок, а там без обратного элемента не получается.


Я делал на 12 ошибок - алгоритм БМ без обратного элелемнта в GF(2^13)
алгоритм RiBM вычислял коэф. за 24 такта, SiBM вычислил бы за 12 тактов, но чёто у меня не получилось его реализовать

Для 1-2 ошибок Хемминг лучше


--------------------
Не, ну наболело, капитан - он выступает как директор пляжа, посол! (с) Ширли-Мырли
Go to the top of the page
 
+Quote Post
x736C
сообщение Sep 28 2010, 12:59
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Вопрос ко всем. А вы память используете?
Go to the top of the page
 
+Quote Post
Mikhalych
сообщение Sep 28 2010, 13:02
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-12-05
Из: 77
Пользователь №: 11 952



Цитата(x736C @ Sep 28 2010, 16:59) *
Вопрос ко всем. А вы память используете?


нет - всё на логике и сдвиговых регистрах


--------------------
Не, ну наболело, капитан - он выступает как директор пляжа, посол! (с) Ширли-Мырли
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 28 2010, 13:53
Сообщение #19


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

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



Цитата(Mikhalych @ Sep 28 2010, 06:54) *
Я делал на 12 ошибок - алгоритм БМ без обратного элелемнта в GF(2^13)
алгоритм RiBM вычислял коэф. за 24 такта, SiBM вычислил бы за 12 тактов, но чёто у меня не получилось его реализовать

если я правильно понял, то БМ по 4 такта на цикл. использовали умножители в GF за такт?

ЗЫ. Классический алгоритм БМ, приведенный у блейхута это RiBM или SiBM?


--------------------
Go to the top of the page
 
+Quote Post
SKov
сообщение Sep 28 2010, 13:58
Сообщение #20


Знающий
****

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



Цитата(Mikhalych @ Sep 28 2010, 16:54) *
Для 1-2 ошибок Хемминг лучше

biggrin.gif
Вы не поняли. Декодер исправляет, например, до 12 ошибок, но на декодирование 12 ошибок требует, например, 1000 тактов,
а для 2-х ошибок - только 100. А для одной - 30.
Go to the top of the page
 
+Quote Post
Mikhalych
сообщение Sep 28 2010, 14:08
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-12-05
Из: 77
Пользователь №: 11 952



Цитата(des00 @ Sep 28 2010, 17:53) *
... использовали умножители в GF за такт?


Да - за один такт. Сделаны на логике - для некоторых видов порождающих полиномов есть очень простое решение (статейку на эту тему я приводил)

Цитата(des00 @ Sep 28 2010, 17:53) *
ЗЫ. Классический алгоритм БМ, приведенный у блейхута это RiBM или SiBM?

У него iBM вроде =)

Если сравнивать аппаратные затраты и скорость вычислений для этих 3х алгоритмов - то тут данные такие:
t - исправляющая способность кода; GFA - сумматор в GF; GFM - умножитель в GF; MUX - мультиплексор; REG - регистр; Cycle - число тактов для вычисления коэф-тов

iBM -> GFA: 2t+1 GFM: 3+3 REG: 4t+4 MUX: t+1 Cycle: 3t
RiBM -> GFA: 3t+1 GFM: 6t+2 REG: 6t+2 MUX: 3t+1 Cycle: 2t
SiBM -> GFA: 2t GFM: 4t REG: 2t+1 MUX: 2t Cycle: t

Сообщение отредактировал Mikhalych - Sep 28 2010, 15:24


--------------------
Не, ну наболело, капитан - он выступает как директор пляжа, посол! (с) Ширли-Мырли
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 1 2010, 07:40
Сообщение #22


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

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



Цитата(Mikhalych @ Sep 28 2010, 07:54) *
алгоритм RiBM вычислял коэф. за 24 такта, SiBM вычислил бы за 12 тактов, но чёто у меня не получилось его реализовать

либо я тупой, либо одно из двух crying.gif в статьях выложенных выше приведены 4 варианта алгоритма SiBM. Но все они разные. В целях пристрелки реализовал один в один 3 штуки ни один не работает(причем в одном алгоритме была ошибка). Детальное исполнение алгоритма на бумажке показывает что косяков в реализации нет, но алгоритм не работает %)
Может быть у кого нить есть статья с описанием SiBM который приведен без ошибок?

Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 2 2010, 08:50
Сообщение #23


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

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



Цитата(des00 @ Oct 1 2010, 02:40) *
либо я тупой, либо одно из двух

Отбой, все получилось, слишком невнимательно курил доки %)
Есть еще такой вопрос, в алгоритмах iBM, rIBM, sIBM отсутствует проверка корректности полинома локатора ошибок (deg(Lambda(x)) == L) ? значит ли это, что вся нагрузка на определение корректности полинома ложиться на ченя?


--------------------
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 09:58
Сообщение #24


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

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



Гуру кодирования прошу вашей помощи. Как поступают в том случае если число ошибок больше корректирующей способности БЧХ кода, а декодер считает что количество ошибок равно t и что-то исправляет?
Пример такого количества и местоположения ошибок для кода 15,5,7 в приложении.
Прикрепленные файлы
Прикрепленный файл  bch_feature.zip ( 8.56 килобайт ) Кол-во скачиваний: 72
 


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 4 2010, 12:10
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Oct 4 2010, 13:58) *
Гуру кодирования прошу вашей помощи. Как поступают в том случае если число ошибок больше корректирующей способности БЧХ кода, а декодер считает что количество ошибок равно t и что-то исправляет?


ИМХО это нормальная ситуация, графики BER для кодированной и не кодированной модуляции пересекаются в области высокой вероятности ошибки, и не кодированная передача становится лучше, а в кодированной происходит размножение ошибок, шум превышает расстояние евклида или хемминга до границы принятия решения и декодер начинает принимать за истинные другие кодовые слова.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 13:04
Сообщение #26


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

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



Цитата(petrov @ Oct 4 2010, 06:10) *
ИМХО это нормальная ситуация, графики BER для кодированной и не кодированной модуляции пересекаются в области высокой вероятности ошибки, и не кодированная передача становится лучше, а в кодированной происходит размножение ошибок, шум превышает расстояние евклида или хемминга до границы принятия решения и декодер начинает принимать за истинные другие кодовые слова.

то что ситуация обычная это понятно, но ведь должен же существовать какой то способ, для определения того, что ошибок больше чем корректирующая способность(t)? На степень полинома локаторов надежды нет, т.к. он, алгоритмически ограничен t, поиск корней полинома тоже может дать сбой (как в этом примере). Вот мне и интересно, как определить что ошибок больше чем нужно и выдать сигнал decfailed, вместо мусора %)

По идее можно бы воспользоваться свойством вырождения матрицы синдромов, но считать детерминант на лету, не есть гуд. Еще нашел в блейхуте что можно вычислить спектр кода, но вот пока еще неясно как и даст ли это результат.


--------------------
Go to the top of the page
 
+Quote Post
Mikhalych
сообщение Oct 4 2010, 13:10
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-12-05
Из: 77
Пользователь №: 11 952



Цитата(des00 @ Oct 4 2010, 17:04) *
Вот мне и интересно, как определить что ошибок больше чем нужно и выдать сигнал decfailed, вместо мусора %)

может CRC считать?


--------------------
Не, ну наболело, капитан - он выступает как директор пляжа, посол! (с) Ширли-Мырли
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 13:17
Сообщение #28


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

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



Цитата(Mikhalych @ Oct 4 2010, 07:10) *
может CRC считать?

это для протокола более высокого уровня, мне нужно другое %)

Цитата(des00 @ Oct 4 2010, 07:04) *
По идее можно бы воспользоваться свойством вырождения матрицы синдромов, но считать детерминант на лету, не есть гуд.

да и не получится так, потому что синдром по определению определен на множестве элементов alpha^1 ...alpha^2t.


--------------------
Go to the top of the page
 
+Quote Post
Mikhalych
сообщение Oct 4 2010, 13:19
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-12-05
Из: 77
Пользователь №: 11 952



Цитата(des00 @ Oct 4 2010, 17:11) *
это для протокола более высокого уровня, мне нужно другое %)

а если сделать декодер на t+1 ошибку... и если ошибок t и меньше - то всё хорошо, а если t+1 - то недоверяем и говорим decfailed?


--------------------
Не, ну наболело, капитан - он выступает как директор пляжа, посол! (с) Ширли-Мырли
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 4 2010, 13:30
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Oct 4 2010, 17:04) *
то что ситуация обычная это понятно, но ведь должен же существовать какой то способ, для определения того, что ошибок больше чем корректирующая способность(t)? На степень полинома локаторов надежды нет, т.к. он, алгоритмически ограничен t, поиск корней полинома тоже может дать сбой (как в этом примере). Вот мне и интересно, как определить что ошибок больше чем нужно и выдать сигнал decfailed, вместо мусора %)


ИМХО не должен, если только дополнительную избыточность на это тратить.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 13:34
Сообщение #31


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

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



Цитата(Mikhalych @ Oct 4 2010, 07:19) *
а если сделать декодер на t+1 ошибку... и если ошибок t и меньше - то всё хорошо, а если t+1 - то недоверяем и говорим decfailed?

тогда есть опасность не влезть в требуемую полосу пропускания и что делать если ошибок будет ну например t+5 ? smile.gif

Цитата(petrov @ Oct 4 2010, 07:30) *
ИМХО не должен, если только дополнительную избыточность на это тратить.

хмм, неужели в и RS кодерах всё так же плохо. И даже проверка нулей спектра кода не поможет?

ЗЫ. Мне сильно желательно диагностика такой ситуации для канала без явной синхронизации. Чтобы лучше работала система синхронизации. Подобное я делал на корке RS, но никогда не задумывался, до сего момента, что decfailed корки мне врал %(


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 4 2010, 13:38
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Oct 4 2010, 17:34) *
хмм, неужели в и RS кодерах всё так же плохо. И даже проверка нулей спектра кода не поможет?


Так если шум+кодовое слово прикидываются другим кодовым словом то ничего не поможет.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 13:50
Сообщение #33


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

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



Цитата(petrov @ Oct 4 2010, 08:38) *
Так если шум+кодовое слово прикидываются другим кодовым словом то ничего не поможет.

об этом я как то не подумал biggrin.gif но мне странно вот что, для решения уравнения по t ошибкам нужно 2t синдромов, неужели никак нельзя использовать сию "избыточность" чтобы сказать что ошибок больше максимума unsure.gif


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 4 2010, 14:12
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Oct 4 2010, 17:50) *
об этом я как то не подумал biggrin.gif но мне странно вот что, для решения уравнения по t ошибкам нужно 2t синдромов, неужели никак нельзя использовать сию "избыточность" чтобы сказать что ошибок больше максимума unsure.gif


Думаю что "лишней избыточности" там нету.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 4 2010, 14:22
Сообщение #35


Гуру
******

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



Цитата(des00 @ Oct 4 2010, 20:34) *
хмм, неужели в и RS кодерах всё так же плохо.

как бы RS - это подмножество BCH smile.gif

Цитата(des00 @ Oct 4 2010, 20:34) *
но никогда не задумывался, до сего момента, что decfailed корки мне врал %(

он не врал, ЕМНИП у этого сигнала вполне конкретный смысл, он показывает неисправимые ошибки, но не все.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 14:38
Сообщение #36


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

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



Цитата(vadimuzzz @ Oct 4 2010, 09:22) *
как бы RS - это подмножество BCH smile.gif

да, но там недвочиные символы, если верить Блейхуту, то можно проверить все ли корректирующие символы из нужного алфавита.
Цитата
он не врал, ЕМНИП у этого сигнала вполне конкретный смысл, он показывает неисправимые ошибки, но не все.

под врал я понимал то, что когда он не показывал decfail нельзя было однозначно сказать были ошибки или нет %)

Подводя итог, как я понял бороть сей эффект бесполезно. Ну разве что расширить код добавив символ четности. Немного поможет %)


--------------------
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 4 2010, 15:26
Сообщение #37


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(des00 @ Oct 4 2010, 19:38) *
Ну разве что расширить код добавив символ четности. Немного поможет %)

Разве этого недостаточно?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 15:46
Сообщение #38


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

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



Цитата(GetSmart @ Oct 4 2010, 09:26) *
Разве этого недостаточно?

Если вы про расширение кода, то еще не знаю. надо рыть литературу. Правда, из-за выбранной сетки частот, мне нужны фреймы 2**m-1. Если про тот код что есть, буду смотреть. Может быть устроит то что получилось.

ЗЫ. Последний вопрос про бинарные БЧХ, неподскажите есть где нибудь внятное алгоритмическое описание получения генераторного полинома. Понятно что это НОК от примитивных полиномов членов поля, но как определяются эти примитивные полиномы? Разбирался с кодом с http://the-art-of-ecc.com/, даже портировал его в SV, но так до конца и не понял всех тонкостей алгоритма. crying.gif


--------------------
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 4 2010, 15:57
Сообщение #39


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Ещё раз подумал. Простой бит чётности в случае большого кол-ва ошибок не поможет (гарантированно). Т.к. кол-во ошибок неизвестно в случае превышения t, то чётность может совпасть, а может и не совпасть. Возможно она просто бесполезна и зря занимает символ.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 4 2010, 16:15
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(GetSmart @ Oct 4 2010, 19:57) *
Ещё раз подумал. Простой бит чётности в случае большого кол-ва ошибок не поможет (гарантированно). Т.к. кол-во ошибок неизвестно в случае превышения t, то чётность может совпасть, а может и не совпасть. Возможно она просто бесполезна и зря занимает символ.


Более того сами БЧХ коды практически бесполезны в АБГШ канале, маленький выигрыш дают, выкидываете избыточность, соответственно заужаете полосу и получаете почти ту же самую помехоустойчивость.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 16:32
Сообщение #41


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

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



Цитата(petrov @ Oct 4 2010, 10:15) *
Более того сами БЧХ коды практически бесполезны в АБГШ канале, маленький выигрыш дают, выкидываете избыточность, соответственно заужаете полосу и получаете почти ту же самую помехоустойчивость.

странно, в блейхуте, сарагосе и т.д. написано что для малых размеров блока БЧХ коды близки к оптимальным %) Да и в стандарте dvbs от них не отказываются %)
А что еще дешево (с точки зрения ресурса) и качественно используется для малых размеров блока? (меньше 255 бит)


--------------------
Go to the top of the page
 
+Quote Post
Serg76
сообщение Oct 4 2010, 16:39
Сообщение #42


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



мало того, некоторые коды БЧХ используются в качестве компонентных при построении блоковых турбокодов
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 4 2010, 16:54
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Oct 4 2010, 20:32) *
А что еще дешево (с точки зрения ресурса) и качественно используется для малых размеров блока? (меньше 255 бит)


Купить усилитель на 3 дБ мощнее %) Не знаю на счёт дёшево, но турбокоды явно больше дадут. Возможно TCM можно приспособить для коротких блоков, в гигабитном езернете что-то такое используется. Хотя бы мягкое декодирование БЧХ по алгоритму Чейза используйте.

Цитата(Serg76 @ Oct 4 2010, 20:39) *
мало того, некоторые коды БЧХ используются в качестве компонентных при построении блоковых турбокодов


Это да TPC мощные коды.

Go to the top of the page
 
+Quote Post
SKov
сообщение Oct 4 2010, 18:59
Сообщение #44


Знающий
****

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



Цитата(des00 @ Oct 4 2010, 20:32) *
странно, в блейхуте, сарагосе и т.д. написано что для малых размеров блока БЧХ коды близки к оптимальным %) Да и в стандарте dvbs от них не отказываются %)
А что еще дешево (с точки зрения ресурса) и качественно используется для малых размеров блока? (меньше 255 бит)

БЧХ коды нормально работают, если от них не требовать больше, чем они могут дать.
Если вы квантуете канал с АБГШ, то на БЧХ кодах вполне реально получить 3..5 дБ ЭВК даже при декодировании только двичных ошибок в дискретном канале.
Вообще, если есть ДСК, то БЧХ близки к лучшим кодам. Известно, что примитивные БЧХ,
исправляющие 2 ошибки, квазисовершенны. Для длин больше 1000 вообще трудно что-то приличнее придумать для ДСК.
Но это все в дискретном канале. А вот если у вас есть непрерывный выход, то ситуация кардинально меняется.
Конечно, и в этом случае можно использовать декодер БЧХ для ДСК, применяя алгоритмы Чейза или декодирование по МОР (Форни.)
Но много там не получишь (обычно в пределах 1.5...2 дБ дополнительного выигрыша к ЭВК дискретного канала).
Но для длин <100 это все равно надо делать и это будет хорошо.
А вот если длина хотя бы несколько сотен (а лучше - тысяч), то ситуация совсем другая. Тут уже начинают блистать LDPC коды.
Турбо-коды были модны лет 10 назад, но в последнее время их пододвинули LDPС. Тот же стандарт DVB -хх использует именно LDPC
с дурацкой примочкой из внешнего БЧХ-кода.
Так что определитесь, какие у вас ограничения на канал и сложность декодера, и выбирайте лучший вариант
из большого многообразия конструкций кодов и декодеров.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 5 2010, 02:39
Сообщение #45


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

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



Цитата(petrov @ Oct 4 2010, 10:54) *
Купить усилитель на 3 дБ мощнее %)

Это точно не пойдет
Цитата
Не знаю на счёт дёшево, но турбокоды явно больше дадут. Возможно TCM можно приспособить для коротких блоков, в гигабитном езернете что-то такое используется.

я сильно ограничен по ресурсам, у меня на кодер/декодер есть около 1000 плиток(чем меньше, тем лучше). Мне нужно два декодера {255,233,4} на 200Мб/с и {127, 64, 10} на 2Мб/с. ИМХО на таких длинах TCM/LDPC и т.д. это как из пушки по воробьям.
Цитата(SKov @ Oct 4 2010, 12:59) *
Конечно, и в этом случае можно использовать декодер БЧХ для ДСК, применяя алгоритмы Чейза или декодирование по МОР (Форни.)

Цитата
Хотя бы мягкое декодирование БЧХ по алгоритму Чейза используйте.

Доделаю жесткое, комитнусь и порою книги на эту тему %)
Цитата
Так что определитесь, какие у вас ограничения на канал и сложность декодера, и выбирайте лучший вариант из большого многообразия конструкций кодов и декодеров.

вроде как выбрал, надеюсь не прогадал %)

ЗЫ. А по определению примитивных полиномов можете что нить подсказать? Спасибо %)


--------------------
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 5 2010, 05:00
Сообщение #46


Гуру
******

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



Цитата(des00 @ Oct 5 2010, 09:39) *
А по определению примитивных полиномов можете что нить подсказать?

нужно разложить x^n - 1 на простые множители. примитивный полином - это полином минимальной степени, т.ч. его корень alpha обладает свойством, что его степени покрывают все поле (т.е. alpha - порождающий элемент поля).
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 5 2010, 05:15
Сообщение #47


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

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



Цитата(vadimuzzz @ Oct 5 2010, 00:00) *
нужно разложить x^n - 1 на простые множители. примитивный полином - это полином минимальной степени, т.ч. его корень alpha обладает свойством, что его степени покрывают все поле (т.е. alpha - порождающий элемент поля).

это то понятно, вопрос был не что делать, а как делать? %) Где можно почерпнуть алгоритм разложения на простые множители? И алгоритм нахождения НОК от них для генераторного полинома.

UPD. Конечно можно сгенерить всё в матлабе и копипастом перенести в код. Но интересно написать функции генерации кода БЧХ на SV, которые будут определять всю структуру (все функции кроме генерации генераторного полинома на SV есть и работают, ква таки сила), чтобы не зависеть ни от каких генераторов.


--------------------
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 5 2010, 05:40
Сообщение #48


Гуру
******

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



все украдено до нас smile.gif

http://www.seanerikoconnor.freeservers.com...s/overview.html
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 5 2010, 06:03
Сообщение #49


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

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



Цитата(vadimuzzz @ Oct 4 2010, 23:40) *
все украдено до нас smile.gif

пасиб, постараюсь прикрутить %)


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 5 2010, 07:29
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Oct 5 2010, 06:39) *
я сильно ограничен по ресурсам, у меня на кодер/декодер есть около 1000 плиток(чем меньше, тем лучше). Мне нужно два декодера {255,233,4} на 200Мб/с и {127, 64, 10} на 2Мб/с. ИМХО на таких длинах TCM/LDPC и т.д. это как из пушки по воробьям.


В эзернете ограниченный бюджет задержки и там используется специальный TCM код с маленькой задержкой декодирования. Можно использовать TPC на основе расширенного БЧХ(16,11,4), длина блока 256, скорость 11^2/16^2, выигрыш около 5 дБ, ещё лучше на основе БЧХ(32,26,4), выигрыш около 6.5 дБ. По ресурсам не влезет конечно, но получить приличный выигрыш на относительно коротких блоках можно.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 5 2010, 08:25
Сообщение #51


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

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



Цитата(petrov @ Oct 5 2010, 02:29) *
В эзернете ограниченный бюджет задержки и там используется специальный TCM код с маленькой задержкой декодирования. Можно использовать TPC на основе расширенного БЧХ(16,11,4), длина блока 256, скорость 11^2/16^2, выигрыш около 5 дБ, ещё лучше на основе БЧХ(32,26,4), выигрыш около 6.5 дБ. По ресурсам не влезет конечно, но получить приличный выигрыш на относительно коротких блоках можно.

Ничего себе я ошибался laughing.gif, а ссылками/названиями/литературой по этим кодерам не поделитесь? Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 5 2010, 08:41
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Oct 5 2010, 12:25) *
Ничего себе я ошибался laughing.gif, а ссылками/названиями/литературой по этим кодерам не поделитесь? Спасибо.


Книгу Channel_Coding_in_Communication_Networks_-_ Glavieux.pdf выкладывал уже, есть у вас? Там сам изобретатель TPC Pyndiah главу по ним написал, и в применении к FPGA у него относительно неплохо расписано, статьи его так же в гугле свободно скачиваются.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 5 2010, 08:44
Сообщение #53


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

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



Цитата(petrov @ Oct 5 2010, 03:41) *
Книгу Channel_Coding_in_Communication_Networks_-_ Glavieux.pdf выкладывал уже, есть у вас? Там сам изобретатель TPC Pyndiah главу по ним написал, и в применении к FPGA у него относительно неплохо расписано, статьи его так же в гугле свободно скачиваются.

нет, но найдем. главное название знать %) Работы над текущим трансивером много и без кодирования, пока поставлю БЧХ и соберу модемную часть, потом займусь апгрейтом кодирования %)


--------------------
Go to the top of the page
 
+Quote Post
SKov
сообщение Oct 5 2010, 09:18
Сообщение #54


Знающий
****

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



Цитата(petrov @ Oct 5 2010, 12:41) *
Книгу Channel_Coding_in_Communication_Networks_-_ Glavieux.pdf выкладывал уже, есть у вас?

Я почему-то не видел этот документ. Вас не затруднит его куда-нибудь выложить? На Рапидшаре он уже "протух".
Цитата
Там сам изобретатель TPC Pyndiah главу по ним написал

Изобретатель? biggrin.gif biggrin.gif biggrin.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 5 2010, 09:30
Сообщение #55


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

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



Цитата(SKov @ Oct 5 2010, 04:18) *
Я почему-то не видел этот документ. Вас не затруднит его куда-нибудь выложить? На Рапидшаре он уже "протух".

тут


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 5 2010, 09:34
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(SKov @ Oct 5 2010, 13:18) *
Я почему-то не видел этот документ. Вас не затруднит его куда-нибудь выложить? На Рапидшаре он уже "протух".

Изобретатель? biggrin.gif biggrin.gif biggrin.gif

http://rapidshare.com/files/423220808/Chan...-__Glavieux.pdf

Изобретатель изобретатель

http://www.freepatentsonline.com/6122763.html
Go to the top of the page
 
+Quote Post
SKov
сообщение Oct 5 2010, 09:38
Сообщение #57


Знающий
****

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



Цитата(des00 @ Oct 5 2010, 13:30) *
тут

Спасибо.
Извините, забыл про ваш вопрос. Интересующие Вас минимальные многочлены можно
взять из таблицы в конце книжки Питерсона и Уэлдона. Она есть в и-нете.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Oct 5 2010, 09:44
Сообщение #58


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



petrov

столько времени занимаюсь кодированием, а эту книгу вижу впервые. по первому взгляду книга хороша, есть вопросы практического применения. спасибо за ссылку
Go to the top of the page
 
+Quote Post
SKov
сообщение Oct 5 2010, 10:20
Сообщение #59


Знающий
****

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



Цитата(petrov @ Oct 5 2010, 13:34) *
Изобретатель изобретатель

Он сам себя таковым не считает. Посмотрите введение к его главе. Он там справедливо
упоминает и Хагенауэра и "многих других исследователей".
Very quickly many researchers, such as Hagenauer,
Benedetto, Divsalar [HAG 96, BEN 96, DIV 95, ROB 94, WIB 95] and a number of
others confirmed the results of Berrou and within a few years the turbocode became
essential in the field of the error corrector coding as the 21st century solution.

Это правильно.
Другое дело, что эти западники никогда (почти) не упоминают наши отечественные исследования в этой области.
Как-будто это не в нашей стране была одна из лучших школ теории информации и кодирования.
Это касается и блоковых турбокодов на основе расширенных кодов Хемминга.
Вот здесь, например, есть по крайней мере две статьи с описанием кодирования - декодирования и результатов
моделирования таких турбокодов (это 1995год). Правда, у этого Pyndiah-а есть ссылка на тезисы конференции 1994 года.
Ну, значит он был первый wink.gif Тогда интернет был в зачаточном состоянии, ездили на конференции мало,
и информация распространялась медленно.
Как пишут в таких случаях "результаты были получены независимо и почти одновременно".
Просто за державу обидно wink.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 5 2010, 11:51
Сообщение #60


Гуру
******

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



Цитата(SKov @ Oct 5 2010, 17:20) *
Просто за державу обидно wink.gif

в нашей стране проще ознакомиться с трудами IEEE, чем увидеть журналы типа того, что вы указали
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 5 2010, 12:22
Сообщение #61


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

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



Цитата(des00 @ Oct 5 2010, 00:15) *
UPD. Конечно можно сгенерить всё в матлабе и копипастом перенести в код. Но интересно написать функции генерации кода БЧХ на SV, которые будут определять всю структуру (все функции кроме генерации генераторного полинома на SV есть и работают, ква таки сила), чтобы не зависеть ни от каких генераторов.

сорцы выложены тут автоматическое определение генераторного полинома еще не допилил %)


Цитата(SKov @ Oct 5 2010, 04:38) *
Спасибо.
Извините, забыл про ваш вопрос. Интересующие Вас минимальные многочлены можно
взять из таблицы в конце книжки Питерсона и Уэлдона. Она есть в и-нете.

вот что странно, в Си коде, который я приводил функция генерации генераторного полинома
CODE

void gen_poly()
/*
* Compute the generator polynomial of a binary BCH code. Fist generate the
* cycle sets modulo 2**m - 1, cycle[][] = (i, 2*i, 4*i, ..., 2^l*i). Then
* determine those cycle sets that contain integers in the set of (d-1)
* consecutive integers {1..(d-1)}. The generator polynomial is calculated
* as the product of linear factors of the form (x+alpha^i), for every i in
* the above cycle sets.
*/
{
register int i, ii, jj, ll, kaux;
register int test, aux, nocycles, root, noterms, rdncy;
int cycle[1024][21], size[1024], min[1024], zeros[1024];

/* Generate cycle sets modulo n, n = 2**m - 1 */
cycle[0][0] = 0;
size[0] = 1;
cycle[1][0] = 1;
size[1] = 1;
jj = 1; /* cycle set index */
if (m > 9) {
printf("Computing cycle sets modulo %d\n", n);
printf("(This may take some time)...\n");
}
do {
/* Generate the jj-th cycle set */
ii = 0;
do {
ii++;
cycle[jj][ii] = (cycle[jj][ii - 1] * 2) % n;
size[jj]++;
aux = (cycle[jj][ii] * 2) % n;
} while (aux != cycle[jj][0]);
/* Next cycle set representative */
ll = 0;
do {
ll++;
test = 0;
for (ii = 1; ((ii <= jj) && (!test)); ii++)
/* Examine previous cycle sets */
for (kaux = 0; ((kaux < size[ii]) && (!test)); kaux++)
if (ll == cycle[ii][kaux])
test = 1;
} while ((test) && (ll < (n - 1)));
if (!(test)) {
jj++; /* next cycle set index */
cycle[jj][0] = ll;
size[jj] = 1;
}
} while (ll < (n - 1));
nocycles = jj; /* number of cycle sets modulo n */

/*
printf("Enter the error correcting capability, t: ");
scanf("%d", &t);
*/
t = 3;

d = 2 * t + 1;

/* Search for roots 1, 2, ..., d-1 in cycle sets */
kaux = 0;
rdncy = 0;
for (ii = 1; ii <= nocycles; ii++) {
min[kaux] = 0;
test = 0;
for (jj = 0; ((jj < size[ii]) && (!test)); jj++)
for (root = 1; ((root < d) && (!test)); root++)
if (root == cycle[ii][jj]) {
test = 1;
min[kaux] = ii;
}
if (min[kaux]) {
rdncy += size[min[kaux]];
kaux++;
}
}
noterms = kaux;
kaux = 1;
for (ii = 0; ii < noterms; ii++)
for (jj = 0; jj < size[min[ii]]; jj++) {
zeros[kaux] = cycle[min[ii]][jj];
kaux++;
}

k = length - rdncy;

if (k<0)
{
printf("Parameters invalid!\n");
// exit(0);
return ;
}

printf("This is a (%d, %d, %d) binary BCH code\n", length, k, d);

/* Compute the generator polynomial */
g[0] = alpha_to[zeros[1]];
g[1] = 1; /* g(x) = (X + zeros[1]) initially */
for (ii = 2; ii <= rdncy; ii++) {
g[ii] = 1;
for (jj = ii - 1; jj > 0; jj--)
if (g[jj] != 0)
g[jj] = g[jj - 1] ^ alpha_to[(index_of[g[jj]] + zeros[ii]) % n];
else
g[jj] = g[jj - 1];
g[0] = alpha_to[(index_of[g[0]] + zeros[ii]) % n];
/*
printf("Generator polynomial:\ng(x) = ");
for (i = 0; i <= 31; i++) {
printf("%d", g[i]);
}
printf("\n");
*/
}
printf("Generator polynomial:\ng(x) = ");
for (ii = 0; ii <= rdncy; ii++) {
printf("%d", g[ii]);
if (ii && ((ii % 50) == 0))
printf("\n");
}
printf("\n");
}

явно показывает что никакие таблицы не используются. Все вычисления производятся на лету. Надо будет еще раз к ней подойти до полной ясности %)


--------------------
Go to the top of the page
 
+Quote Post
SKov
сообщение Oct 5 2010, 12:27
Сообщение #62


Знающий
****

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



Цитата(vadimuzzz @ Oct 5 2010, 15:51) *
в нашей стране проще ознакомиться с трудами IEEE, чем увидеть журналы типа того, что вы указали

В 95-м году это было не так. Надо было одинаково идти в крупную библиотеку какого-нибудь крупного города.
Это не журнал, это тезисы докладов научной конференции.
Сейчас их не стоит и смотреть, поскольку прошло 15 лет, там все устарело.
Это интересно разве что с точки зрения истории и приоритетов.
Go to the top of the page
 
+Quote Post
wavemaster
сообщение Nov 2 2010, 11:23
Сообщение #63





Группа: Новичок
Сообщений: 4
Регистрация: 28-01-10
Пользователь №: 55 123



А кто-нибудь сталкивался с алгоритмом на основе матрицы Вандермормонда? Мне он показался более практичным чем Форни для малых значений ошибок, но разобраться с ним у Сарагосы у меня не получилось.
Go to the top of the page
 
+Quote Post
x736C
сообщение Jan 19 2011, 09:57
Сообщение #64


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(des00 @ Oct 4 2010, 16:34) *
ЗЫ. Мне сильно желательно диагностика такой ситуации для канала без явной синхронизации. Чтобы лучше работала система синхронизации. Подобное я делал на корке RS, но никогда не задумывался, до сего момента, что decfailed корки мне врал %(

Ув. des00, Вы обеспечиваете синхронизацию декодера по доминирующим нулевым синдромам? Или я не в ту степь?!


Цитата(Mikhalych @ Sep 28 2010, 16:02) *
нет - всё на логике и сдвиговых регистрах

Буфер принятого слова для ожидания декодирования тоже на регистрах или в нем нет необходимости?
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 21 2011, 08:43
Сообщение #65


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

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



Цитата(x736C @ Jan 19 2011, 03:57) *
Ув. des00, Вы обеспечиваете синхронизацию декодера по доминирующим нулевым синдромам? Или я не в ту степь?!

да именно так, но такое хорошо работает только на декодерах с большой исправляющей способностью (1/2, 3/4, 5/6, 7/8, 9/10) и большим размером блока. Для сабжевого конкретного случая я перешел на синхронизацию по шапочке.


--------------------
Go to the top of the page
 
+Quote Post
x736C
сообщение Jan 21 2011, 13:19
Сообщение #66


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(des00 @ Jan 21 2011, 11:43) *
да именно так, но такое хорошо работает только на декодерах с большой исправляющей способностью (1/2, 3/4, 5/6, 7/8, 9/10) и большим размером блока. Для сабжевого конкретного случая я перешел на синхронизацию по шапочке.

Спасибо.
Знакомы ли Вы с многочисленными статьями а-ля «blind frame synch. of BCH»?
В большинстве статей для синхронизации предлагается parity check matrix.
Пытаюсь разобраться в особенностях популярных алгоритмов sm.gif

Цитата(Mikhalych @ Sep 28 2010, 10:26) *
Недавно сам занимался аппаратной реализацией такого декодера...
...
8 - готовая прожка кодирования/декодирования от микрона (по ней я отлаживался)

Правильно ли я понимаю, что программа использует исключительно укороченные коды?
(”Number of data bits to be encoded. Must divide 4.“)
Что кажется логичным, т.к. программа реализует защиту флеш-памяти.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 22 2011, 12:46
Сообщение #67


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

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



Цитата(x736C @ Jan 21 2011, 07:19) *
Знакомы ли Вы с многочисленными статьями а-ля «blind frame synch. of BCH»?
В большинстве статей для синхронизации предлагается parity check matrix.
Пытаюсь разобраться в особенностях популярных алгоритмов sm.gif

нет, не знаком. буду премного благодарен если поделитесь. тестируя короткие БЧХ коды, я пришел к выводу что слепая синхра не возможна. Буду рад ошибаться


--------------------
Go to the top of the page
 
+Quote Post
x736C
сообщение Jan 22 2011, 21:12
Сообщение #68


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Хорошо. Итак.

Архив содержит следующие документы:
Blind Frame Synchronization For Block Code.pdf
Blind Frame Synchronization And Phase Offset Estimation For Coded Systems.pdf
Blind Frame Synchronization For Error Correcting Codes Having a Sparse Parity Check Matrix.pdf
Blind frame synchronization of product codes based on the adaptation of the parity check matrix.pdf
Blind Frame Synchronization of Reed-Solomon Codes.pdf
Blind Frame Synchronization on Gaussian Channel.pdf

Прикрепленный файл  Blind_Frame_Synchronization.rar ( 1.37 мегабайт ) Кол-во скачиваний: 161


Кое-что вынес за скобки. В принципе всё есть в инете.

Из того, что очень интересно, но найти не удалось.
http://elibrary.ru/item.asp?id=11532386
Приведен пример реализации кодовой цикловой синхронизации для каскадного кода БЧХ(31,16) -
- Рида-Соломона(32,16), обеспечивающего надежную синхронизацию в канале связи с вероятностью
ошибки до 10^-1.


http://elibrary.ru/item.asp?id=11520710
Методы кодовой цикловой синхронизации и их применение для передачи сообщений в каналах связи
с вероятностью ошибки до 10^-1

Go to the top of the page
 
+Quote Post
des00
сообщение Jan 12 2012, 06:46
Сообщение #69


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

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



Цитата(petrov @ Oct 4 2010, 10:54) *
Хотя бы мягкое декодирование БЧХ по алгоритму Чейза используйте.


Цитата(SKov @ Oct 4 2010, 12:59) *
Конечно, и в этом случае можно использовать декодер БЧХ для ДСК, применяя алгоритмы Чейза или декодирование по МОР (Форни.)
Но много там не получишь (обычно в пределах 1.5...2 дБ дополнительного выигрыша к ЭВК дискретного канала).
Но для длин <100 это все равно надо делать и это будет хорошо.


Нашел время вернуться к БЧХ кодам и алгоритму Чейза. Есть несколько вопросов :

1. в книге Кларка, при описании алгоритма Чейза он пишет :
Цитата
Метод 2: взять в качестве векторов 1 множество из 2^d/2 векторов, имеющих всевозможные символы на d/2 наименее достоверных позициях и нулевые символы на остальных.

Но нигде в книге нет ни слова, как определить какие символы наименее достоверные. Неужели предполагается выделять достоверность символов с помощью сравнения их квантованных амплитуд, считая что чем больше амплитуда (например для BPSK) тем символ достовернее ?

2. В разделе "8.1.3. Системы, использующие код Рида—Соломона и короткий блоковый код". Неужели такие системы использовались/используются? Всегда считал что наиболее подходящими для каскада являются блоковый и сверточные коды.

3. Прочитал у него же про многопороговое декодирование блоковых кодов. Правильно ли я понял, что при использовании того же БЧХ (15,5,7) и многопорогового декодера с мягким решением, выигрыш от кодирования будет больше чем при использовании арифметического БЧХ с Чейзом ?

Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 12 2012, 08:28
Сообщение #70


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Jan 12 2012, 10:46) *
Но нигде в книге нет ни слова, как определить какие символы наименее достоверные. Неужели предполагается выделять достоверность символов с помощью сравнения их квантованных амплитуд, считая что чем больше амплитуда (например для BPSK) тем символ достовернее ?


Да.
Go to the top of the page
 
+Quote Post
Gold777
сообщение Jan 12 2012, 14:39
Сообщение #71


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022



Цитата(des00 @ Oct 1 2010, 10:40) *
либо я тупой, либо одно из двух crying.gif в статьях выложенных выше приведены 4 варианта алгоритма SiBM. Но все они разные. В целях пристрелки реализовал один в один 3 штуки ни один не работает(причем в одном алгоритме была ошибка). Детальное исполнение алгоритма на бумажке показывает что косяков в реализации нет, но алгоритм не работает %)
Может быть у кого нить есть статья с описанием SiBM который приведен без ошибок?

Спасибо.

Возникла та же проблема. Реализовал SiBM, вношу одну ошибку в КС. А декодер показывает что их две (вычисления приводят к полиному локаторов 2-й степени, Ченя соответственно решает и находит 2 корня). Считаю на бумаге все получается. Может где в алгоритме ошибка?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 13 2012, 05:57
Сообщение #72


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

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



Цитата(petrov @ Jan 12 2012, 03:28) *
Да.

нда, все оригинальное просто sm.gif

Цитата(Gold777 @ Jan 12 2012, 09:39) *
Возникла та же проблема. Реализовал SiBM, вношу одну ошибку в КС. А декодер показывает что их две (вычисления приводят к полиному локаторов 2-й степени, Ченя соответственно решает и находит 2 корня). Считаю на бумаге все получается. Может где в алгоритме ошибка?
Прикрепленное изображение

все алгоритмы в статьях рабочие, отличия только в деталях/индексах и т.д. реализации для плис всех этих алгоритмов для БЧХ/РС кодов я выкладывал в этой теме.



--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Jan 13 2012, 09:45
Сообщение #73


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022



Цитата(des00 @ Jan 13 2012, 08:57) *
нда, все оригинальное просто sm.gif


все алгоритмы в статьях рабочие, отличия только в деталях/индексах и т.д. реализации для плис всех этих алгоритмов для БЧХ/РС кодов я выкладывал в этой теме.

Если я работаю с записанным сигналом, прогоняю его через Моделсим алгоритм работает правильно. Если в реальном времени, вношу к примеру одну ошибку в чистый сигнал находится внесенная ошибка правильно, но помимо нее декодер находит определенную постоянную вторую ошибку на месте на котором ее быть не должно в каждом кодовом слове (соответственно полином локаторов имеет в данном случае вторую степень). Вот собственно такую ситуацию я наблюдаю в SignalTab. Такая же ситуация наблюдается при увеличении числа ошибок. Вот не пойму где ошибка то у меня?

Сообщение отредактировал Gold777 - Jan 13 2012, 09:47
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 13 2012, 14:15
Сообщение #74


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

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



Цитата(Gold777 @ Jan 13 2012, 03:45) *
Вот не пойму где ошибка то у меня?

ошибка описания, синтезируемая модель и поведенческая ведут себя по-разному.


--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Jan 16 2012, 09:24
Сообщение #75


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022



Цитата(des00 @ Jan 13 2012, 17:15) *
ошибка описания, синтезируемая модель и поведенческая ведут себя по-разному.

Спасибо за помощь. Разобрался. Старую таблицу памяти подцепил, в которой ошибка была.
Go to the top of the page
 
+Quote Post
Denisnovel
сообщение Mar 4 2012, 06:21
Сообщение #76


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



Можно ли определить невозможность исправления ошибок до вычисления всех локаторов ошибок(в поиске Ченя)? Проблема в том, что декодер пытается исправить ошибки и вносит новые.
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 4 2012, 12:22
Сообщение #77


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Denisnovel @ Mar 4 2012, 10:21) *
Можно ли определить невозможность исправления ошибок до вычисления всех локаторов ошибок(в поиске Ченя)? Проблема в том, что декодер пытается исправить ошибки и вносит новые.


Уже обсуждалось в этом топике...
Go to the top of the page
 
+Quote Post
Denisnovel
сообщение Mar 6 2012, 04:16
Сообщение #78


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



Из обсуждения выше я понял, что достоверно невозможно определить количество ошибок, если ошибок слишком много. Но меня интересует случай, когда ошибок меньше граници детектирования. Можно ли в этом случае определить возможность исправления ошибок до поиска ченя?
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 6 2012, 05:39
Сообщение #79


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Denisnovel @ Mar 6 2012, 08:16) *
Но меня интересует случай, когда ошибок меньше граници детектирования. Можно ли в этом случае определить возможность исправления ошибок до поиска ченя?


Вопрос дурацкий, если ошибки можно исправить то их можно исправить и ничего определять не надо.
Go to the top of the page
 
+Quote Post
Gold777
сообщение Mar 6 2012, 05:50
Сообщение #80


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022



Цитата(Denisnovel @ Mar 6 2012, 08:16) *
Из обсуждения выше я понял, что достоверно невозможно определить количество ошибок, если ошибок слишком много. Но меня интересует случай, когда ошибок меньше граници детектирования. Можно ли в этом случае определить возможность исправления ошибок до поиска ченя?

Если количество ошибок превышает исправляющую способность кода , то нет смысла определять сколько было ошибок. Если как Вы говорите ошибок точно меньше исправляющей способности, то вы с высокой степенью вероятности можете предположить, что возможность исправления есть. А вот местоположения этих ошибок Вы сможете определить только после процедуры Ченя. Хотя мне непонятно зачем Вам определять возможность исправления.
Go to the top of the page
 
+Quote Post
Denisnovel
сообщение Mar 6 2012, 05:54
Сообщение #81


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



Может я не правильно выразился. Можно ли вычислить сигнал "decoding failure" до поиска Ченя?
Go to the top of the page
 
+Quote Post
Gold777
сообщение Mar 6 2012, 05:58
Сообщение #82


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022



Цитата(Denisnovel @ Mar 6 2012, 09:54) *
Может я не правильно выразился. Можно ли вычислить сигнал "decoding failure" до поиска Ченя?

нельзя
Go to the top of the page
 
+Quote Post
Denisnovel
сообщение Mar 6 2012, 06:04
Сообщение #83


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



Ясно. Спасибо.
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 6 2012, 06:08
Сообщение #84


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

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



Цитата(Gold777 @ Mar 6 2012, 00:58) *
нельзя


Цитата(Denisnovel @ Mar 6 2012, 01:04) *
Ясно. Спасибо.


можно, но не в реализации алгоритма берлекампа с фиксированным количеством шагов. В частности, если мне не изменяет память, в книге "Кодирование с исправлением ошибок в системах связи" есть классическая реализация алгоритма берлекампа с делением, там есть анализ степени полинома, которая получилась.

ну и еще, если степень полинома локаторов меньше t, то гарантировано все будет ок.
это не к месту %)


--------------------
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 7 2012, 12:27
Сообщение #85


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

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



Цитата(des00 @ Mar 6 2012, 01:08) *
можно, но не в реализации алгоритма берлекампа с фиксированным количеством шагов. В частности, если мне не изменяет память, в книге "Кодирование с исправлением ошибок в системах связи" есть классическая реализация алгоритма берлекампа с делением, там есть анализ степени полинома, которая получилась.

а вот и тот алгоритм и статья . Кстати есть такая занятная вещь как "декодирование за границей БЧХ" никто не сталкивался ?


--------------------
Go to the top of the page
 
+Quote Post
SKov
сообщение Mar 7 2012, 13:21
Сообщение #86


Знающий
****

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



Цитата(des00 @ Mar 7 2012, 16:27) *
а вот и тот алгоритм и статья . Кстати есть такая занятная вещь как "декодирование за границей БЧХ" никто не сталкивался ?

Обычно рассматривается случай одной-двух дополнительных ошибок, не больше. Есть куча работ.
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 7 2012, 13:28
Сообщение #87


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

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



Цитата(SKov @ Mar 7 2012, 07:21) *
Обычно рассматривается случай одной-двух дополнительных ошибок, не больше. Есть куча работ.

как раз такой случай мне и попался на глаза. код дополняется двумя символами которые декодируются за счет изменения берлекампа. сегодня еще рыл сеть, нашел пару статей об арифметическом декодировании кодов РС с мягким решением. Подробно не смотрел, отметил только что в них, РС указан как класс арифметических кодов.


--------------------
Go to the top of the page
 
+Quote Post
Denisnovel
сообщение Mar 14 2012, 07:32
Сообщение #88


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



Делаю паралельную реализация поиска Ченя согласно прикрепленному файлу. Считает правильно, но результат сдвунут на 1. Т.е. 0 появляется раньше на одну позицию.
При начале поиска происходит инициализация. Если написать "start_root_index(i)-1" то с одной ошибкой работает, с двумя не работает совсем.
Код
loc_mult_par[i] <= gf_mult_a_by_b_const(iloc_poly[i], ALPHA_TO[start_root_index(i)-1]);

Что это может быть?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Mikhalych
сообщение Mar 14 2012, 08:27
Сообщение #89


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-12-05
Из: 77
Пользователь №: 11 952



Цитата(Denisnovel @ Mar 14 2012, 11:32) *
Делаю паралельную реализация поиска Ченя согласно прикрепленному файлу. Считает правильно, но результат сдвунут на 1.
Что это может быть?

Код неукороченный случаем?


--------------------
Не, ну наболело, капитан - он выступает как директор пляжа, посол! (с) Ширли-Мырли
Go to the top of the page
 
+Quote Post
Denisnovel
сообщение Mar 14 2012, 09:05
Сообщение #90


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



Код укороченный. Проблема где-то в инициализации
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 14 2012, 09:11
Сообщение #91


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

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



Цитата(Denisnovel @ Mar 14 2012, 04:05) *
Код укороченный. Проблема где-то в инициализации

если код укороченный и начинаете перебор с элемента a^n, то нужно скорректировать инициализацию на a^(gf_n_max - n) нулей.


--------------------
Go to the top of the page
 
+Quote Post
Denisnovel
сообщение Mar 14 2012, 09:33
Сообщение #92


Частый гость
**

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Denisnovel
сообщение Mar 14 2012, 09:33
Сообщение #93


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



,,

Сообщение отредактировал Denisnovel - Mar 14 2012, 09:33
Go to the top of the page
 
+Quote Post
mad_physicist
сообщение Mar 26 2012, 05:14
Сообщение #94





Группа: Новичок
Сообщений: 6
Регистрация: 26-03-12
Пользователь №: 71 000



Господа, просвятите начинающего!
Задача стоит реализовать на языке MATLAB алгоритм Берлекемпа-Месси в декодере БЧХ. Алгоритм предусматривает использование компонент (элементов) синдрома, которые определяются как значения принятого слова (полинома) в нулях кода (в корнях порождающего многочлена). Мне непонятно, в какой форме должны находиться и использоваться в этой ситуации корни порождающего многочлена. Буду особенно благодарен за комментарии с примерами.

Go to the top of the page
 
+Quote Post
des00
сообщение Mar 27 2012, 05:16
Сообщение #95


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

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



Цитата(mad_physicist @ Mar 25 2012, 23:14) *
Буду особенно благодарен за комментарии с примерами.

что мешает найти в матлабе файлик rsdec.m или bchdec.m и посмотреть ?


--------------------
Go to the top of the page
 
+Quote Post
mad_physicist
сообщение Mar 28 2012, 01:38
Сообщение #96





Группа: Новичок
Сообщений: 6
Регистрация: 26-03-12
Пользователь №: 71 000



Цитата(des00 @ Mar 27 2012, 12:16) *
что мешает найти в матлабе файлик rsdec.m или bchdec.m и посмотреть ?


отсутствие уверенности в том, что там именно нужный мне алгоритм
Go to the top of the page
 
+Quote Post
Gold777
сообщение Mar 28 2012, 11:15
Сообщение #97


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022



Цитата(mad_physicist @ Mar 26 2012, 09:14) *
Господа, просвятите начинающего!
Задача стоит реализовать на языке MATLAB алгоритм Берлекемпа-Месси в декодере БЧХ. Алгоритм предусматривает использование компонент (элементов) синдрома, которые определяются как значения принятого слова (полинома) в нулях кода (в корнях порождающего многочлена). Мне непонятно, в какой форме должны находиться и использоваться в этой ситуации корни порождающего многочлена. Буду особенно благодарен за комментарии с примерами.

Если хотите разобраться в алгоритме БМ, почитайте Морелос-Сарагоса - Искусство помехоустойчивого кодирования. Для алгоритма БМ нужны только компоненты синдромов. Компоненты синдромов рассчитываются с помощью элементов поля Галуа.
О чем вы спрашиваете мне не очень понятно ( Что значит в какой форме должны находиться и использоваться в этой ситуации корни порождающего многочлена?).

Сообщение отредактировал Gold777 - Mar 28 2012, 11:26
Go to the top of the page
 
+Quote Post
mad_physicist
сообщение Mar 29 2012, 01:23
Сообщение #98





Группа: Новичок
Сообщений: 6
Регистрация: 26-03-12
Пользователь №: 71 000



Цитата(Gold777 @ Mar 28 2012, 18:15) *
Если хотите разобраться в алгоритме БМ, почитайте Морелос-Сарагоса - Искусство помехоустойчивого кодирования. Для алгоритма БМ нужны только компоненты синдромов. Компоненты синдромов рассчитываются с помощью элементов поля Галуа.
О чем вы спрашиваете мне не очень понятно ( Что значит в какой форме должны находиться и использоваться в этой ситуации корни порождающего многочлена?).

То, что я написал, основано именно на книге Морелоса-Сарагосы и статье С.В. Фёдорова о реализации БМ-алгоритма для РС-кодов на ПЛИС. Компоненты синдромов вычисляются путём подстановки корней порождающего полинома в полином принятого сообщения. Я пока не понимаю, как именно это должно происходить. То есть у меня имеется порождающий полином 14-й степени, нахождение его корней "в лоб", обычной арифметикой, даёт мне 14 комплексных корней. Я подозреваю, что такое решение не есть правильное, и необходимо использовать полиноминальную арифметику. Но каким образом это сделать я пока не знаю.
Попутно задам ещё один вопрос: подскажите, как связаны между собой компоненты синдрома, о которых говорилось выше, и синдромный полином?
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 29 2012, 03:31
Сообщение #99


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

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



Цитата(mad_physicist @ Mar 27 2012, 20:38) *
отсутствие уверенности в том, что там именно нужный мне алгоритм

угу, а если учесть что обе эти функции ссылаются на функцию из файла berlekamp.m, то да, действительно никакой уверенности нет %)))


--------------------
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 29 2012, 15:13
Сообщение #100


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

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



Уважаемые гуру, подскажите что не так делаю.

Решил проверить работу декодера БЧХ со стираниям. Взял алгоритм из Скляра :
1. заместить стирания нулями
2. заместить стирания единицам
3. декодировать оба и выбрать то слово, которое соответствует наименьшему числу ошибок, исправленных вне позиций стирания.

Кол-во исправляемых стираний определяется по формуле p <= d-1. Набросал в матлабе простой пример. взял код {255, 131, 18}, с dmin = 37. Но не вижу исправления 36 стираний %(

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

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

Прикрепленные файлы
Прикрепленный файл  bch_era.zip ( 4.57 килобайт ) Кол-во скачиваний: 27
 


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

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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 08:48
Рейтинг@Mail.ru


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