|
Коды БЧХ, Вопросы по алгоритмам декодирования |
|
|
|
Sep 22 2010, 05:44
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Гуру кодирования, просвятите по теме Потребовалось мне для проекта сделать БЧХ декодер работающий в поле GF(2), реализовал его по алгоритму Берлекэмпа-Месси приведенному на рисунке. Мне интересно, чем определяется необходимость последней проверки алгоритма перед процедурой Ченя(на рисунке выделено)? Ведь для бинарных БЧХ кодов четные невязки всегда будут равны нулю, а на нечетных проходах, по блок-схеме алгоритма, мы всегда попадаем на изменение длинны и степени полинома локатора ошибок. Т.е. эта проверка ничего не определяет. Тогда зачем она нужна? Или такая ситуация возможна только для не бинарных кодов? И вопрос по алгоритму Евклида. Во всех книгах написано что он лучше подходит для аппаратной реализации, чем алгоритм Берлекэмпа-Месси, из-за своей регулярной структуры. Но один из шагов алгоритма деление полинома на полином. В железе же это делается с помощью регистров с линейными обратными связями, что приводит к многотактному делению и появлению лишних задержек, что ИМХО не айс. Так в чем же его преимущество перед алгоритмом Берлекэмпа-Месси ? Спасибо.
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
 |
Ответов
|
Sep 22 2010, 06:22
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(vadimuzzz @ Sep 22 2010, 00:13)  1. да, для двоичных кодов БЧХ процедура проще, четные итерации можно пропустить. если эта картинка из Блейхута, то в главе 7.6 есть подробности. т.е. для двоичных кодов последнюю проверку (if deg(Lambda) == L) можно отбросить? Цитата 2. в той же книге про алгоритм Евклида говорится: "считается, что он менее эффективен в практическом использовании"  а вот Сарагоса с Кларком говорят что наоборот, для железа Евклид самое то. Вот мне и интересно почему %)
--------------------
|
|
|
|
|
Sep 22 2010, 10:44
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(des00 @ Sep 22 2010, 10:44)  1. неисправимую ошибку можно детектировать в процедуре ченя, когда количество найденных корней не совпадет с порядком локатора ошибок. Только для укороченных кодов. В остальных случаях Чень перебирает все элементы поля и среди них обязательно найдутся все корни полинома. Цитата 2. написал на сях алгоритм (на основе сорцов из сети), при количестве ошибок больше чем можно исправить дает выполнение этого равенства. Поэтому меня и заинтересовал этот момент. Чую что здесь что то не то (хотя может быть я просто в алгоритме ошибся %)). UPD. Вот я ламер, неисправимая ошибка и количество неисправимых ошибок это же разные вещи %) Если я сделал правильные умозаключения, то для двоичных кодов эта проверка не нужна, т.к. для этих кодов ветка 2L > r-1 никогда не выполняется. Поэтому степень полинома локаторов изменяется одновременно с L. Эта проверка редко, но срабатывает. Степень не всегда меняется одновременно с L. Помоделируйте декодер и поймаете такую ситуацию.
|
|
|
|
|
Sep 22 2010, 16:03
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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 регистра. При этом не находится ни одного корня, тогда как по вашим словам корни быть обязаны В атаче модифицированный файл, оригинальный файл был взят здесь Цитата Эта проверка редко, но срабатывает. Степень не всегда меняется одновременно с L. Помоделируйте декодер и поймаете такую ситуацию. спасибо, соберу рандомно/переборный тест и проверю.
Прикрепленные файлы
bch.zip ( 7.17 килобайт )
Кол-во скачиваний: 138
--------------------
|
|
|
|
Сообщений в этой теме
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 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|