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

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


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

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



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

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

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

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


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Oct 5 2010, 02:39
Сообщение #2


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

Группа: Модераторы
Сообщений: 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
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #4


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

Группа: Модераторы
Сообщений: 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
des00
сообщение Oct 5 2010, 12:22
Сообщение #5


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

Группа: Модераторы
Сообщений: 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

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


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:47
Рейтинг@Mail.ru


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