|
|
  |
Реализация Рида Соломона, Какой алгоритм брать? |
|
|
|
May 3 2011, 08:59
|

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

|
Вообщем то вопрос таков
По какому алгоритму вы рекомендуете делать декодер Рида-Соломона? В Блейхуте (1) написано, что Берлекемпа-Месси подходит как для аппаратной, так и для программной реализации и он быстрее Евклида. Морелос-Сарагоса (2) говорит, что алгоритм Евклида лучше подходит для аппаратной реализации из-за структурной однородности.
Скачал несколько описаний чужих проектов, там используют и то и другое. Понятно, что чтобы получить окончательный ответ надо пройти оба пути самому, но сейчас интересует мнение людей уже прошедших этот путь
Какой алгоритм лучше подойдет? Я подозреваю, что BMA, так как на современных ПЛИС можно реализовать сколь угодно замороченный и разветлвенный алгоритм, так что имеет смысл брать самый быстрый.
ПЛИС миллионник РС - вариации в поле GF(256) ------- 1) "Теория и практика кодов, контролирующих ошибки" Р.Блейхут "МИР", Москва, 1986 2) "Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение" Р.Морелос-Сарагоса Техносфера Москва 2006
--------------------
Because it's there
|
|
|
|
|
May 3 2011, 09:24
|
Местный
  
Группа: Свой
Сообщений: 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] - Евклида.
|
|
|
|
|
May 5 2011, 12:47
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(Muscat @ May 5 2011, 20:12)  В (1) и (2) разобраны и Евклид и БМА к слову :-) Присоеденяюсь к предыдущему и советую (1). Кстати там, в таблице 1 и приводится сравнение известных способов БМ и евклида. Так вот приведенные там методы riBM и RiBM в сравнении с Евклидом по некоторым (интересным мне) оказались лучше. Но уступают по количеству умножителей (а они занимают довольно значительное место  ). Если остановитесь на БМ то лучше этой статьи пожалуй нет. Во всяком случае не нашел (я имею ввиду описание реализации, а не теорию). Учтите, что методы в статье довольно свежие и в старых книгах могут и не присутствовать, отсюда и сравнения в пользу того или иного метода может быть без учета последних работ. По инверсии. В классическом БМ необходимо деление. Его заменяют на умножение на инверсию. Это и является самым мерзким местов при классическим БМ при аппаратной реализации. А методы без инверсии избавлены от этого.
|
|
|
|
|
May 5 2011, 13:49
|
Местный
  
Группа: Свой
Сообщений: 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) меня устроило. Про деление на пальцах объяснить сейчас уже не смогу, немного забыл. Но идея в том, что мы в итерациях заменяем деление манипуляциями коэффициентом гамма. Деление (через инверсию и умножение) - это медленно и много места. Вычисление обратного в поле Галуа - одна из самых плохо минимизируемых функций, которые я видел  . Например, в алгоритме Форни, так же, как сделано в [2], реализовал инверсию на блочной памяти таблицей 256x8.
|
|
|
|
|
May 6 2011, 15:27
|

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

|
Всем спасибо за советы! Буду делать BMA. Пока буду делать модель в симулинке, думаю что там уже столкнусь с теми проблемами, о решении вы говорите. Кстати, алгоритм Судана кто нибудь разбирал? Имеет смысл влезать? http://citeseerx.ist.psu.edu/viewdoc/downl...p1&type=pdf
--------------------
Because it's there
|
|
|
|
|
May 6 2011, 16:11
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(barabek @ May 5 2011, 16:47)  В классическом БМ необходимо деление. Его заменяют на умножение на инверсию. Это и является самым мерзким местов при классическим БМ при аппаратной реализации. А методы без инверсии избавлены от этого. Часто бывает нужно быстро декодировать малое число ошибок (1-2ош.). В случае двух ошибок можно не делать Ченя, а просто решать ключевое уравнение второго порядка. Это очень быстро. Но без таблицы обратных элементов это сделать затруднительно. Так что иногда нужно иметь такую таблицу (зависит от особенностей задачи).
|
|
|
|
|
May 20 2011, 23:02
|
Группа: Новичок
Сообщений: 1
Регистрация: 20-05-11
Из: СПб
Пользователь №: 65 169

|
А не могли бы Вы скинуть мне Вашу версию модели в Симулинке алгоритма Берлекемпа-Месси? Как раз занимаюсь этим вопросом, но он что-то у меня не идет(
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|