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

 
 
 
Reply to this topicStart new topic
> Реализация Рида Соломона, Какой алгоритм брать?
Muscat
сообщение May 3 2011, 08:59
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



Вообщем то вопрос таков

По какому алгоритму вы рекомендуете делать декодер Рида-Соломона?
В Блейхуте (1) написано, что Берлекемпа-Месси подходит как для аппаратной, так и для программной реализации и он быстрее Евклида.
Морелос-Сарагоса (2) говорит, что алгоритм Евклида лучше подходит для аппаратной реализации из-за структурной однородности.

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

Какой алгоритм лучше подойдет?
Я подозреваю, что BMA, так как на современных ПЛИС можно реализовать сколь угодно замороченный и разветлвенный алгоритм, так что имеет смысл брать самый быстрый.

ПЛИС миллионник
РС - вариации в поле GF(256)
-------
1) "Теория и практика кодов, контролирующих ошибки" Р.Блейхут "МИР", Москва, 1986
2) "Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение" Р.Морелос-Сарагоса Техносфера Москва 2006


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение May 3 2011, 09:24
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Если много тактов можно потратить на декодирование и нужно поменьше объем - то итеративный Евклида, если быстрее - то вариации БМ без инверсий. Стоит посмотреть вот эти статьи:
1. D.V.Sarwate, N.R.Shanbhag. High-Speed Architectures for Reed-Solomon Decoders. IEEE Transcations on VLSI Systems, Vol. 9, No. 5, October 2001, pp. 641-655.
2. H. Lee. High-Speed VLSI Architecture for Parallel Reed-Solomon Decoder. IEEE Transactions on VLSI Systems, Vol. 11, No. 2, April 2003, pp. 288-294.
В [1] рассмотрены разные варианты реализации БМ, в [2] - Евклида.
Go to the top of the page
 
+Quote Post
Muscat
сообщение May 5 2011, 10:12
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



В (1) и (2) разобраны и Евклид и БМА к слову :-)
Могли бы вы пояснить про БМА с инверсиями и без? Я ориентируюсь на алгоритм из Блейхута.


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
barabek
сообщение May 5 2011, 12:47
Сообщение #4


Знающий
****

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



Цитата(Muscat @ May 5 2011, 20:12) *
В (1) и (2) разобраны и Евклид и БМА к слову :-)

Присоеденяюсь к предыдущему и советую (1). Кстати там, в таблице 1 и приводится сравнение известных способов БМ и евклида. Так вот приведенные там методы riBM и RiBM в сравнении с Евклидом по некоторым (интересным мне) оказались лучше. Но уступают по количеству умножителей (а они занимают довольно значительное место sad.gif ). Если остановитесь на БМ то лучше этой статьи пожалуй нет. Во всяком случае не нашел (я имею ввиду описание реализации, а не теорию).

Учтите, что методы в статье довольно свежие и в старых книгах могут и не присутствовать, отсюда и сравнения в пользу того или иного метода может быть без учета последних работ.

По инверсии. В классическом БМ необходимо деление. Его заменяют на умножение на инверсию. Это и является самым мерзким местов при классическим БМ при аппаратной реализации. А методы без инверсии избавлены от этого.
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение May 5 2011, 13:49
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Я тоже советую делать решатель по [1]. Сам делал схожим образом, но модифицировав классический iBM как мне было удобно (он также неплохо с точки зрения теории раскрыт в статье I. S. Reed, M. T. Shih, T. K. Truong, “VLSI design of inverse-free Berlekamp–Massey algorithm,” Proc. Inst. Elect. Eng., pt. E, vol. 138, pp. 295–298, Sept. 1991.). В два раза больше тактов, но удалось разбить критический путь, так как невязка у меня рассчитывается в первом такте итерации в блоке DC, а в расчете локаторов используется на втором такте в блоке PE. В результате выше по частоте, чем iBM и можно обойтись одним умножителем в PE, так как на первом такте можно умножить гамму на лямбда. А 48 тактов для кода (255,239,8) меня устроило.

Про деление на пальцах объяснить сейчас уже не смогу, немного забыл. Но идея в том, что мы в итерациях заменяем деление манипуляциями коэффициентом гамма.

Деление (через инверсию и умножение) - это медленно и много места. Вычисление обратного в поле Галуа - одна из самых плохо минимизируемых функций, которые я видел sm.gif. Например, в алгоритме Форни, так же, как сделано в [2], реализовал инверсию на блочной памяти таблицей 256x8.
Go to the top of the page
 
+Quote Post
Muscat
сообщение May 6 2011, 15:27
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



Всем спасибо за советы! Буду делать BMA.

Пока буду делать модель в симулинке, думаю что там уже столкнусь с теми проблемами, о решении вы говорите.

Кстати, алгоритм Судана кто нибудь разбирал? Имеет смысл влезать?
http://citeseerx.ist.psu.edu/viewdoc/downl...p1&type=pdf


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
SKov
сообщение May 6 2011, 16:11
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119



Цитата(barabek @ May 5 2011, 16:47) *
В классическом БМ необходимо деление. Его заменяют на умножение на инверсию. Это и является самым мерзким местов при классическим БМ при аппаратной реализации. А методы без инверсии избавлены от этого.

Часто бывает нужно быстро декодировать малое число ошибок (1-2ош.). В случае двух ошибок можно не делать Ченя,
а просто решать ключевое уравнение второго порядка. Это очень быстро.
Но без таблицы обратных элементов это сделать затруднительно.
Так что иногда нужно иметь такую таблицу (зависит от особенностей задачи).
Go to the top of the page
 
+Quote Post
des00
сообщение May 6 2011, 17:00
Сообщение #8


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

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



тоже в планах сделать собственного рида соломона, как мне надо. но я буду сразу в хдл делать, без симулинка


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 6 2011, 17:23
Сообщение #9


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(des00 @ May 6 2011, 19:00) *
тоже в планах сделать собственного рида соломона, как мне надо. но я буду сразу в хдл делать, без симулинка

А что так?
Go to the top of the page
 
+Quote Post
des00
сообщение May 6 2011, 17:24
Сообщение #10


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

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



Цитата(_Anatoliy @ May 6 2011, 11:23) *
А что так?

почему без симулинка? или зачем свой делать ? %)


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 7 2011, 05:59
Сообщение #11


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(des00 @ May 6 2011, 19:24) *
почему без симулинка? или зачем свой делать ? %)

Почему без моделирования,хотя можете не отвечать,действительно можно и так.
Go to the top of the page
 
+Quote Post
Muscat
сообщение May 7 2011, 16:17
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



Я Витерби делал по следующему пути. Сначала в Матлабе реализовал алгоритм функционально соответствующий тому, что будет в железе. Потом ручками написал VHDL код, потом сравнивал работу железки и алгоритма - результаты одинаковые, остался доволен.
Думаю, что моделирование необходимо для оценки функциональных параметров. В случае Витерби в Матлабе алгоритм был покручен с разным ограничением на глубину декодирования, на максимальную метрику, на варианты поиска минимума и т.д. Крутить такое в HDL было бы не очень удобно.

Сейчас хочу попробовать делать модель в Симулинке, с прямой трансляцией в HDL код.


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
mole_
сообщение May 20 2011, 23:02
Сообщение #13





Группа: Новичок
Сообщений: 1
Регистрация: 20-05-11
Из: СПб
Пользователь №: 65 169



А не могли бы Вы скинуть мне Вашу версию модели в Симулинке алгоритма Берлекемпа-Месси? Как раз занимаюсь этим вопросом, но он что-то у меня не идет(
Go to the top of the page
 
+Quote Post

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

 


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


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