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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Процедура Ченя на ПЛИС
Gold777
сообщение Dec 20 2011, 08:32
Сообщение #16


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

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



Цитата(barabek @ Dec 16 2011, 01:32) *
Да, если длина пакета у Вас 2048 (максимальная для 11 степени), то так и есть. Длина пакета в общем случае может быть и меньше. Количество тактов равно длине пакета. Просто для укороченного пакета инициализация посложней.

Подскажите, а как поступать с укороченным кодом
Go to the top of the page
 
+Quote Post
barabek
сообщение Dec 21 2011, 23:22
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(Gold777 @ Dec 20 2011, 18:32) *
Подскажите, а как поступать с укороченным кодом


При укороченном пакете подразумевается, что все старшие члены нулевые и в них не может быть ошибки (если это не так, а это может быть только при количестве ошибок больше допустимого для выбранного количества проверочных символов, то это только на руку - повышается вероятность обнаружения неисправимой ошибки). Следовательно эти старшие члены можно быстро обсчитать и начать процедуру Ченя с нужной позиции. Если для полной длины начальным состоянием регистров были коэффициенты полинома lambda[n], то с укороченным lambda[n]*alfa{(LENGTHFULL-PACKLENGTH)*n}%( LENGTHFULL-1)


где LENGTHFULL - 2 width (при 11-битном символе =2048)
PACKLENGTH- реальная длина пакета.

К примеру у Вас длина пакета 2037, на 10 меньше максимальной длины для 11-битного символа. Тогда для старшего члена многочлена lambda в степени 8 необходимо инициализировать регистр lambda[8]*alfa10*8=lambda[8]*alfa80 , для члена со степенью 7 lambda[7]*alfa70 и т.д.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 22 2011, 03:53
Сообщение #18


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

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



Чую следующий вопрос будет про мягкое декодирование кодов БЧХ.


--------------------
Go to the top of the page
 
+Quote Post
Mikhalych
сообщение Dec 22 2011, 04:34
Сообщение #19


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

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



Цитата(des00 @ Dec 22 2011, 07:53) *
Чую следующий вопрос будет про мягкое декодирование кодов БЧХ.

Вот так общими усилиями и разработаем 3 велосипеда, и будет нам высокоплачиваемое счастье! На то и форум =)


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


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

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



Цитата(Mikhalych @ Dec 21 2011, 22:34) *
Вот так общими усилиями и разработаем 3 велосипеда, и будет нам высокоплачиваемое счастье! На то и форум =)

не, ну я бы прикрутил к выложеным на форуме сорцам БЧХ/РС мягкое решение по алгоритму чейза и выложил бы его для всех %). правда я в этом еще ничего не понимаю, особенно как поступать в случае использования мягкого решения для модуляции выше BPSK ;(


--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 23 2011, 09:41
Сообщение #21


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

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



Цитата(barabek @ Dec 22 2011, 02:22) *
При укороченном пакете подразумевается, что все старшие члены нулевые и в них не может быть ошибки (если это не так, а это может быть только при количестве ошибок больше допустимого для выбранного количества проверочных символов, то это только на руку - повышается вероятность обнаружения неисправимой ошибки). Следовательно эти старшие члены можно быстро обсчитать и начать процедуру Ченя с нужной позиции. Если для полной длины начальным состоянием регистров были коэффициенты полинома lambda[n], то с укороченным lambda[n]*alfa{(LENGTHFULL-PACKLENGTH)*n}%( LENGTHFULL-1)


где LENGTHFULL - 2 width (при 11-битном символе =2048)
PACKLENGTH- реальная длина пакета.

К примеру у Вас длина пакета 2037, на 10 меньше максимальной длины для 11-битного символа. Тогда для старшего члена многочлена lambda в степени 8 необходимо инициализировать регистр lambda[8]*alfa10*8=lambda[8]*alfa80 , для члена со степенью 7 lambda[7]*alfa70 и т.д.

Большое спасибо за подробный и понятный ответ.
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 26 2011, 07:50
Сообщение #22


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

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



Цитата(barabek @ Dec 15 2011, 14:36) *
Я же Вам посоветовал литературу. Смотрим на рисунок. Не 8 раз, а в каждом такте предыдущее содержание регистра умножается на alfa^8 , т.е. на константу. Понятное дело, что 7 умножителей нужно для каждого члена полинома, кроме члена с нулевой степенью. Но результат в каждом такте.
Может это очевидно, но на всякий поясню. Возьмем Ваш старший член полинома 838*x^8. Подставляем в него альфа. 838*alfa*alfa*....*alfa=838*(alfa^8)=X1. На следующем такте нужно подставить вместо x alfa^2. Получаем 838*alfa^2*alfa^2*....*alfa^2=838*(alfa^16)=(838*(alfa^8))*alfa^8=X1*alfa^8=X2. Ну и так со всеми остальными степенями. Параллельно для всех членов полинома. Ага?

Вроде все получилось. Нахожу корни уравнения. По теории обратные корни уравнения должны показывать позиции ошибок. А у меня получается, что найденные корни соответствуют позициям ошибок и обратные корни вообще мне не нужны. Вносил ошибки в сигнал и сравнивал с сигналом без ошибок, вот такую закономерность и увидел. Что может быть не так?

Сообщение отредактировал Gold777 - Dec 26 2011, 07:51
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 26 2011, 08:41
Сообщение #23


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

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



Цитата(Gold777 @ Dec 26 2011, 01:50) *
По теории обратные корни уравнения должны показывать позиции ошибок. А у меня получается, что найденные корни соответствуют позициям ошибок и обратные корни вообще мне не нужны. Вносил ошибки в сигнал и сравнивал с сигналом без ошибок, вот такую закономерность и увидел. Что может быть не так?

все так, в процедуре ченя поиск идет в обратном порядке, поэтому и не нужно обращение и все получается на лету. неплохо это объяснено в книге Кларка "Кодирование с исправлением ошибок"


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


--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 27 2011, 10:49
Сообщение #24


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

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



Цитата(des00 @ Dec 26 2011, 11:41) *
все так, в процедуре ченя поиск идет в обратном порядке, поэтому и не нужно обращение и все получается на лету. неплохо это объяснено в книге Кларка "Кодирование с исправлением ошибок"

Что значит поиск идет в обратном порядке? Я последовательно подставляю alfa, alfa^2,alfa^3 и так далее в ключевое уравнение. В теории, если к примеру подставим alfa и ключевое уравнение обратится в ноль, то позицией ошибки будет обратный элемент поля. А у меня получается, что корни уравнения это и есть обратные корни. Если возможно, объяните где я ошибаюсь?
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 27 2011, 12:41
Сообщение #25


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

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



Цитата(Gold777 @ Dec 27 2011, 05:49) *
Что значит поиск идет в обратном порядке? Я последовательно подставляю alfa, alfa^2,alfa^3 и так далее в ключевое уравнение. В теории, если к примеру подставим alfa и ключевое уравнение обратится в ноль, то позицией ошибки будет обратный элемент поля. А у меня получается, что корни уравнения это и есть обратные корни. Если возможно, объяните где я ошибаюсь?

на скриншоте же написано %)? по тексту "Возможные положения ошибок проверяются последовательно с индекса n-1. Суммируя величины на выходе регистра в момент i, проверяем, выполнено ли равенство L(alpha^-i) == 0".
Этот алгоритм основан на модульности арифметики в полях галуа и определении свойства поля о существовании обратного элемента по умножению. В вашем случае элементом обратным к элементу alpha^1 будет alpha^(n-1). Поэтому и не требуется отдельного обращения.
Код
alpha*inv(alpha) = 1
alpha^1*alpha^(n-1) = alpha^(1 + n - 1)%n = alpha^(n%n) = alpha^0 = 1


--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 28 2011, 06:04
Сообщение #26


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

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



Цитата(des00 @ Dec 27 2011, 15:41) *
на скриншоте же написано %)? по тексту "Возможные положения ошибок проверяются последовательно с индекса n-1. Суммируя величины на выходе регистра в момент i, проверяем, выполнено ли равенство L(alpha^-i) == 0".
Этот алгоритм основан на модульности арифметики в полях галуа и определении свойства поля о существовании обратного элемента по умножению. В вашем случае элементом обратным к элементу alpha^1 будет alpha^(n-1). Поэтому и не требуется отдельного обращения.
Код
alpha*inv(alpha) = 1
alpha^1*alpha^(n-1) = alpha^(1 + n - 1)%n = alpha^(n%n) = alpha^0 = 1

Понял. Спасибо.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 4 2012, 17:27
Сообщение #27


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

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



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


--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Jan 10 2012, 15:26
Сообщение #28


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

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



[/quote]
По ходу дела возникло несколько вопросов по данной теме:
1) Код исправляет 8 ошибок. К примеру, для какого-то кодового слова получился полином локаторов ошибок 4-й степени. Т.е. по теории в кодовом слове возникло 4 ошибки. Посчитав для этого КС корни по процедуре Ченя у меня количество корней получается меньше степени полинома локаторов ошибок (к примеру 2 корня) и декодер рапортует об обнаружении неисправимой ошибки. Подскажите возможна ли такая ситуация или я где-то ошибаюсь?

2) Код исправляет 8 ошибок, значит обнаружить может 16. Про ошибки которые исправляются все понятно, определяются по степени полинома локаторов и им же ограничиваются т.е. для 8 ошибок 8-я степень. Я если к примеру у меня 13 ошибок, то, что произошла неисправимая ошибка я пойму в процедуре Ченя, увидив, что кол-во корней меньше степени полинома локаторов. Вопрос, как я обнаружу, что произошло именно 13 ошибок, а не 9 к примеру?
Go to the top of the page
 
+Quote Post
barabek
сообщение Jan 10 2012, 23:12
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(Gold777 @ Jan 11 2012, 01:26) *
По ходу дела возникло несколько вопросов по данной теме:
1) Код исправляет 8 ошибок. К примеру, для какого-то кодового слова получился полином локаторов ошибок 4-й степени. Т.е. по теории в кодовом слове возникло 4 ошибки. Посчитав для этого КС корни по процедуре Ченя у меня количество корней получается меньше степени полинома локаторов ошибок (к примеру 2 корня) и декодер рапортует об обнаружении неисправимой ошибки. Подскажите возможна ли такая ситуация или я где-то ошибаюсь?

2) Код исправляет 8 ошибок, значит обнаружить может 16. Про ошибки которые исправляются все понятно, определяются по степени полинома локаторов и им же ограничиваются т.е. для 8 ошибок 8-я степень. Я если к примеру у меня 13 ошибок, то, что произошла неисправимая ошибка я пойму в процедуре Ченя, увидив, что кол-во корней меньше степени полинома локаторов. Вопрос, как я обнаружу, что произошло именно 13 ошибок, а не 9 к примеру?


2)никак. Да и какая Вам разница если ошибки все равно не исправить?


1)Да вроде правильно рассуждаете.

А вообще просто промоделируйте свой декодер и сомнения в его работоспособности отпадут.

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

Go to the top of the page
 
+Quote Post
des00
сообщение Jan 11 2012, 09:07
Сообщение #30


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

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



Цитата(barabek @ Jan 10 2012, 17:12) *
2)никак. Да и какая Вам разница если ошибки все равно не исправить?

более того, декодер может рапортовать что все хорошо и исправить "ошибки" родив другое кодовое слово %)

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


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

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

 


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


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