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

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


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

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



Подскажите, кто разобрался. Реализую декодер БЧХ в поле GF (2^11), исправляет 8 ошибок на ПЛИС. После вычисления полинома локаторов ошибок необходимо решить данное уравнение с помощью процедуры Ченя. Каким образом решить данное уравнение? Пока вижу 2 способа: 1) перейти к полиномиальному представлению элементов поля, потом перейти к обычному полю и если уравнение будет равно нулю, значит обратный элемент будет корнем уравнения. 2) Решить уравнение с помощью умножителей в поле Галуа, потом считать из памяти корень уравнения, при котором урвнение обращается в нуль. В общем интересует, каким образом эту процедуру реализовать.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 14 2011, 15:24
Сообщение #2


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

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



Цитата(Gold777 @ Dec 14 2011, 09:22) *
В общем интересует, каким образом эту процедуру реализовать.

поиском по форуму, чую что найдете что-то интересное wink.gif


--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 14 2011, 15:56
Сообщение #3


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

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



Цитата(des00 @ Dec 14 2011, 18:24) *
поиском по форуму, чую что найдете что-то интересное wink.gif

Поискал я на форуме, много интересного почитал про БЧХ коды. Но про переход от ключевого уравнения к процедуре Ченя мне не очень понятен в реализации. На бумаге считаю, все получается. А вот если реализововать, переход от элементов поля к коэффициента alfa в степени мне не нравится, так как необходимо использовать 2 таблицы памяти (прямые и обратные коэффициенты).
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 14 2011, 15:59
Сообщение #4


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

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



Цитата(Gold777 @ Dec 14 2011, 10:56) *
Поискал я на форуме, много интересного почитал про БЧХ коды. Но про переход от ключевого уравнения к процедуре Ченя мне не очень понятен в реализации.

так сложно читать сорцы на языке близком к Си ? 05.gif


--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 14 2011, 16:02
Сообщение #5


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

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



Цитата(des00 @ Dec 14 2011, 18:59) *
так сложно читать сорцы на языке близком к Си ? 05.gif

Да, нет. Не сложно. Меня интересует именно схемотехническая реализация.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 14 2011, 17:31
Сообщение #6


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

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



Цитата(Gold777 @ Dec 14 2011, 10:02) *
Да, нет. Не сложно. Меня интересует именно схемотехническая реализация.

ну уж если для вас HDL код на Verilog не является схемотехнической реализацией, я даже не знаю что вам ответить...


--------------------
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 14 2011, 17:58
Сообщение #7


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

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



Цитата(des00 @ Dec 14 2011, 20:31) *
ну уж если для вас HDL код на Verilog не является схемотехнической реализацией, я даже не знаю что вам ответить...

Спасибо за помощь.Я Verilog к сожалению не знаю, попробую разобраться, хотя в чужом коде сложновато. В принципе, мне только идея нужна. Есть полином локаторов, вопрос с какой формой представления работать.
Go to the top of the page
 
+Quote Post
barabek
сообщение Dec 14 2011, 22:20
Сообщение #8


Знающий
****

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



Цитата(Gold777 @ Dec 15 2011, 03:58) *
Спасибо за помощь.Я Verilog к сожалению не знаю, попробую разобраться, хотя в чужом коде сложновато. В принципе, мне только идея нужна. Есть полином локаторов, вопрос с какой формой представления работать.

Найдите "High-Speed VLSI Architecture for Parallel Reed–Solomon Decoder" Hanho Lee (в гугле первая строка wink.gif ). Рисунок 5 как раз то, что Вы ищите.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 15 2011, 04:57
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Gold777 @ Dec 14 2011, 21:58) *
...Я Verilog к сожалению не знаю, попробую разобраться, ...

У меня на сайте, в статьях есть "краткий курс HDL"...
удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 15 2011, 04:58
Сообщение #10


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

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



Цитата(Gold777 @ Dec 14 2011, 12:58) *
Спасибо за помощь.Я Verilog к сожалению не знаю, попробую разобраться, хотя в чужом коде сложновато. В принципе, мне только идея нужна. Есть полином локаторов, вопрос с какой формой представления работать.

работать в обычном поле, смысла спускаться в полиномиальное поле нет. есть сорцы одного известного кодера RS на VHDL, но это в личку.


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


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

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



Цитата(des00 @ Dec 15 2011, 07:58) *
работать в обычном поле, смысла спускаться в полиномиальное поле нет. есть сорцы одного известного кодера RS на VHDL, но это в личку.

К примеру, если полином локаторов ошибок следующий
1) alfa(x)=838*x^8+1576*x^7+1157*x^6+273*x^5+1357*x^4+1328*x^3+1892*x^2+1141*x+917 соответсвенно 838, 1576 - элементы поля Галуа GF(2^11)
это же уравнение можно преобразовать к следующему
2)alfa(x)=alfa^1201*x^8+alfa^1552*x^7+alfa^685*x^6+alfa^1890*x^5+alfa^440*x^4+al
fa^347*x^3+alfa^1455*x^2+alfa^991*x+917
Если использовать уравнение 2 то мы можем складывыть степени при подстановке элементов использовать обычные операции сложения коэффициентов/
Если уравнение 1, то придется перемножать в поле Галуа и подставляя к примеру в восьмую степень элементы поля необходимо перемножать один и тот же элемент 8 раз. Как-то этот способ мне не очень нравится. Des, я правильно вас понял, что надо решать уравнение по 1-му способу
Go to the top of the page
 
+Quote Post
barabek
сообщение Dec 15 2011, 11:36
Сообщение #12


Знающий
****

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



Цитата(Gold777 @ Dec 15 2011, 20:13) *
Если уравнение 1, то придется перемножать в поле Галуа и подставляя к примеру в восьмую степень элементы поля необходимо перемножать один и тот же элемент 8 раз.
Я же Вам посоветовал литературу. Смотрим на рисунок. Не 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. Ну и так со всеми остальными степенями. Параллельно для всех членов полинома. Ага?
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 15 2011, 14:20
Сообщение #13


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

Группа: Участник
Сообщений: 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. Ну и так со всеми остальными степенями. Параллельно для всех членов полинома. Ага?

Получается на первом такте подставляю alfa во все степени уравнения и считаю результат, на втором такте alfa^2, но на основе первого уравнения и т.д. Итого получается за количество тактов равное размерности поля я найду все корни уравнения. К примеру для поля GF(2^11) за 2048 тактов. Только одно непонятно, как это в одну формулу объединить или для каждого такта надо будет уравнение записывать? И еще вопрос можно ли здесь без использования памяти, содержащей значения коэффициентов alfa^n обойтись забив их в ручную в уравнение?

Сообщение отредактировал Gold777 - Dec 15 2011, 14:23
Go to the top of the page
 
+Quote Post
barabek
сообщение Dec 15 2011, 22:32
Сообщение #14


Знающий
****

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



Цитата(Gold777 @ Dec 16 2011, 00:20) *
Получается на первом такте подставляю alfa во все степени уравнения и считаю результат, на втором такте alfa^2, но на основе первого уравнения и т.д. Итого получается за количество тактов равное размерности поля я найду все корни уравнения. К примеру для поля GF(2^11) за 2048 тактов.


Да, если длина пакета у Вас 2048 (максимальная для 11 степени), то так и есть. Длина пакета в общем случае может быть и меньше. Количество тактов равно длине пакета. Просто для укороченного пакета инициализация посложней.

Цитата
Только одно непонятно, как это в одну формулу объединить или для каждого такта надо будет уравнение записывать?


Не понял. Куда записывать? Формула одна, а значение переменной разное. Процедура Ченя это просто нахождение корней уравнения перебором. Т.е. Вы подставляете поочереди элементы поля и определяете корни. Можно сказать численным методом, а не аналитически.

Цитата
И еще вопрос можно ли здесь без использования памяти, содержащей значения коэффициентов alfa^n обойтись забив их в ручную в уравнение?


Конечно, зачем Вам память. На каждом блоке, соответствующему члену уравнения, своя константа= alfa^n. Забиваете вручную или ввиде параметра, а лучше чтобы этот параметр сам синтезатор посчитал в функции на этапе компиляции - дело Ваше.
каждый блок алгоритмически описывается:
Код

ЦИКЛ(по клоку)
    ЕСЛИ(инициализация)
                    Out=In
    ИНАЧЕ
                    Out=Out*alfa^n
КОНЕЦ ЦИКЛА
Go to the top of the page
 
+Quote Post
Gold777
сообщение Dec 16 2011, 09:14
Сообщение #15


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

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



Цитата(barabek @ Dec 16 2011, 01:32) *
Конечно, зачем Вам память. На каждом блоке, соответствующему члену уравнения, своя константа= alfa^n. Забиваете вручную или ввиде параметра, а лучше чтобы этот параметр сам синтезатор посчитал в функции на этапе компиляции - дело Ваше.
каждый блок алгоритмически описывается:
Код

ЦИКЛ(по клоку)
    ЕСЛИ(инициализация)
                    Out=In
    ИНАЧЕ
                    Out=Out*alfa^n
КОНЕЦ ЦИКЛА

Спасибо, помогли разобраться.
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 - 17:56
Рейтинг@Mail.ru


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