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

|
Гуру кодирования, просвятите по теме Потребовалось мне для проекта сделать БЧХ декодер работающий в поле GF(2), реализовал его по алгоритму Берлекэмпа-Месси приведенному на рисунке. Мне интересно, чем определяется необходимость последней проверки алгоритма перед процедурой Ченя(на рисунке выделено)? Ведь для бинарных БЧХ кодов четные невязки всегда будут равны нулю, а на нечетных проходах, по блок-схеме алгоритма, мы всегда попадаем на изменение длинны и степени полинома локатора ошибок. Т.е. эта проверка ничего не определяет. Тогда зачем она нужна? Или такая ситуация возможна только для не бинарных кодов? И вопрос по алгоритму Евклида. Во всех книгах написано что он лучше подходит для аппаратной реализации, чем алгоритм Берлекэмпа-Месси, из-за своей регулярной структуры. Но один из шагов алгоритма деление полинома на полином. В железе же это делается с помощью регистров с линейными обратными связями, что приводит к многотактному делению и появлению лишних задержек, что ИМХО не айс. Так в чем же его преимущество перед алгоритмом Берлекэмпа-Месси ? Спасибо.
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
 |
Ответов
|
Oct 5 2010, 02:39
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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)  Конечно, и в этом случае можно использовать декодер БЧХ для ДСК, применяя алгоритмы Чейза или декодирование по МОР (Форни.) Цитата Хотя бы мягкое декодирование БЧХ по алгоритму Чейза используйте. Доделаю жесткое, комитнусь и порою книги на эту тему %) Цитата Так что определитесь, какие у вас ограничения на канал и сложность декодера, и выбирайте лучший вариант из большого многообразия конструкций кодов и декодеров. вроде как выбрал, надеюсь не прогадал %) ЗЫ. А по определению примитивных полиномов можете что нить подсказать? Спасибо %)
--------------------
|
|
|
|
|
Oct 5 2010, 12:22
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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"); }
явно показывает что никакие таблицы не используются. Все вычисления производятся на лету. Надо будет еще раз к ней подойти до полной ясности %)
--------------------
|
|
|
|
Сообщений в этой теме
des00 Коды БЧХ Sep 22 2010, 05:44 vadimuzzz не гуру, но:
1. да, для двоичных кодов БЧХ процеду... Sep 22 2010, 06:13 des00 Цитата(vadimuzzz @ Sep 22 2010, 00:13) 1.... Sep 22 2010, 06:22  vadimuzzz Цитата(des00 @ Sep 22 2010, 13:22) т.е. д... Sep 22 2010, 06:34   des00 Цитата(vadimuzzz @ Sep 22 2010, 01:34) я ... Sep 22 2010, 06:44    SKov Цитата(des00 @ Sep 22 2010, 10:44) 1. неи... Sep 22 2010, 10:44     des00 Цитата(SKov @ Sep 22 2010, 04:44) Только ... Sep 22 2010, 16:03      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 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 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|