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

 
 
 
Reply to this topicStart new topic
> ldpc encoder
glb
сообщение Apr 1 2016, 07:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-08-15
Пользователь №: 88 193



Доброго времени суток. Разбираюсь с реализацией LDPC(7154, 8176) кодера на ПЛИС. В стандарте GSFC-STD-9100 на 16 страницей приведена схема кодера, для вычисления кодовой последовательности необходимо 511 тактов, что не очень долго. Вычислять все значения одновременно ресурсов не хватит. Кто нибудь разбирался с таким кодированием, что можете посоветовать?
Прикрепленные файлы
Прикрепленный файл  GSFC_STD_9100A.pdf ( 577.61 килобайт ) Кол-во скачиваний: 65
 
Go to the top of the page
 
+Quote Post
Maverick
сообщение Apr 1 2016, 08:52
Сообщение #2


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(glb @ Apr 1 2016, 10:50) *
Доброго времени суток. Разбираюсь с реализацией LDPC(7154, 8176) кодера на ПЛИС. В стандарте GSFC-STD-9100 на 16 страницей приведена схема кодера, для вычисления кодовой последовательности необходимо 511 тактов, что не очень долго. Вычислять все значения одновременно ресурсов не хватит. Кто нибудь разбирался с таким кодированием, что можете посоветовать?

Я бы начинал с мат модель. Матлаб или С/С++ вам в помощь
Попытался найти исходные данные, в идеале и "ответ/результат" на эти входные данные.
Проверил работоспособность.
А уже потом начал описывать для ПЛИС исходя из полученной математики


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
AVR
сообщение Apr 1 2016, 09:13
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



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


--------------------
Go to the top of the page
 
+Quote Post
Maverick
сообщение Apr 1 2016, 09:16
Сообщение #4


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(AVR @ Apr 1 2016, 12:13) *
Немного оффтопа: где можно в популярной форме прочитать принципы работы LDPC кодов, очень давно хочу их осознать sm.gif

например
Морелос-Сарагоса Р. - Искусство помехоустойчивого кодирования (Мир связи) - 2006
[Robert_H._Morelos-Zaragoza]_The_Art_of_Error_Correction_Coding

книга от создателя LDPC кодов
Галлагер Р. Теория информации и наджная связь (1974)


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
glb
сообщение Apr 1 2016, 09:30
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-08-15
Пользователь №: 88 193



Цитата(Maverick @ Apr 1 2016, 11:52) *
Я бы начинал с мат модель. Матлаб или С/С++ вам в помощь
Попытался найти исходные данные, в идеале и "ответ/результат" на эти входные данные.
Проверил работоспособность.
А уже потом начал описывать для ПЛИС исходя из полученной математики

Мат. модель есть, как и данные, проблема именно в реализации, очень долго в ПЛИС считаю, и по ресурсу ограничен
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 1 2016, 14:01
Сообщение #6


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

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



Цитата(glb @ Apr 1 2016, 16:30) *
Мат. модель есть, как и данные, проблема именно в реализации, очень долго в ПЛИС считаю, и по ресурсу ограничен

ну, тут либо долго, либо быстро. Если быстро, то в лоб, с широким вектором и кучей ресурсов, если долго, то делайте, ну положим по 7 или 73 бита и аккумуляторах для битов четности, будет мало ресурса.


--------------------
Go to the top of the page
 
+Quote Post
Tiro
сообщение Apr 1 2016, 14:08
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(glb @ Apr 1 2016, 12:30) *
Мат. модель есть, как и данные, проблема именно в реализации, очень долго в ПЛИС считаю, и по ресурсу ограничен

Раз Денис ответил, то кажется, он знает реализацию.
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 2 2016, 06:25
Сообщение #8


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

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



Цитата(Tiro @ Apr 1 2016, 21:08) *
Раз Денис ответил, то кажется, он знает реализацию.

да она тут очевидна. Если очень быстро, то работать с вектором 7154 бита, за 511+n тактов будут рассчитаны все проверочные биты. Но ресурса уйдет вагон и маленькая тележка (2*14*511 регистров + 14 ть 511 входовых XOR деревьев). Если нужно экономить ресурс, то очевиден первый шаг : уменьшать количество FSRL ядер. В итоге схема будет как в приложении, ядро займет 2*511 регистров + одно 511 входовое XOR дерево). Но и расчет будет занимать по времени 14*511 + n тактов. Второй шаг экономии ресурсов, это уменьшение рабочей разрядности 511/73/7, но и времени будет занимать 14*(511/3577/37303)+n такта. Будет долго, но можно вычислять по M проверочных битов за такт, тогда время сократиться в M раз, но ценой наличия дополнительных XOR деревьев.

ЗЫ. При проектировании не рекомендую реализовывать архитектуры с мультиплексорами. Т.к. расход лютов, в этом случае, больше, чем на реализацию более широких XOR деревьев. Лучше проектировать на основе замкнутых сдвиговых регистров (см. реализацию регистра - аккумулятора проверочных бит в приложении). Будет минимальный ресурс sm.gif

ЗЗЫ. Ну а так, если есть эталонные результаты, работы на день-два где то. Сразу вывалить статически конфигурируемый кодер, потом уже по месту подобрать оптимальные параметры ресурс/тактовая.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 2 2016, 14:09
Сообщение #9


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

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



ЗЗЗЫ. До кучи, еще можно было бы порыть тему реализации кодера, через проверочную матрицу и ее декомпозицию на 4 ре подматрицы. Количество единиц там намного меньше, может получиться более компактный кодер.


--------------------
Go to the top of the page
 
+Quote Post
glb
сообщение Apr 2 2016, 16:20
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-08-15
Пользователь №: 88 193



Цитата(des00 @ Apr 2 2016, 10:25) *
да она тут очевидна. Если очень быстро, то работать с вектором 7154 бита, за 511+n тактов будут рассчитаны все проверочные биты. Но ресурса уйдет вагон и маленькая тележка (2*14*511 регистров + 14 ть 511 входовых XOR деревьев). Если нужно экономить ресурс, то очевиден первый шаг : уменьшать количество FSRL ядер. В итоге схема будет как в приложении, ядро займет 2*511 регистров + одно 511 входовое XOR дерево). Но и расчет будет занимать по времени 14*511 + n тактов. Второй шаг экономии ресурсов, это уменьшение рабочей разрядности 511/73/7, но и времени будет занимать 14*(511/3577/37303)+n такта. Будет долго, но можно вычислять по M проверочных битов за такт, тогда время сократиться в M раз, но ценой наличия дополнительных XOR деревьев.

ЗЫ. При проектировании не рекомендую реализовывать архитектуры с мультиплексорами. Т.к. расход лютов, в этом случае, больше, чем на реализацию более широких XOR деревьев. Лучше проектировать на основе замкнутых сдвиговых регистров (см. реализацию регистра - аккумулятора проверочных бит в приложении). Будет минимальный ресурс sm.gif

ЗЗЫ. Ну а так, если есть эталонные результаты, работы на день-два где то. Сразу вывалить статически конфигурируемый кодер, потом уже по месту подобрать оптимальные параметры ресурс/тактовая.

спасибо за советы, попробую различные варианты. После реализации напишу, что получилось.
Go to the top of the page
 
+Quote Post
Corner
сообщение Apr 3 2016, 19:11
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Если бы можно было совсем без мультиплексоров rolleyes.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 4 2016, 05:22
Сообщение #12


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

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



Цитата(glb @ Apr 2 2016, 23:20) *
спасибо за советы, попробую различные варианты. После реализации напишу, что получилось.

Немного времени появилось, скидал идеалку в лоб, работающую словами по 7 бит и кодирующую на лету(т.е. не требуется ждать завершения кодирования). По простоте управления и системной интеграции это самый оптимальный ИМХО вариант. Кодер потребует 2*511 битовых аккумуляторов с 7 ми входовыми XOR деревьями (~2*3*511 4-х входовых лютов) + 511 FSRL регистр. ИМХО в 5К уложится, при тактовой 200-220 на плис класса сыклон 3 семерка. Скорострельность будет порядка 1,2 гигабита в секунду.

PS. Если есть эталонные наборы, можете поделиться для использования в качестве референсного? Давно не опенсорсил.
Прикрепленные файлы
Прикрепленный файл  ldpc_enc_beh.v ( 10.16 килобайт ) Кол-во скачиваний: 113
Прикрепленный файл  ldpc_enc_tb.v ( 2.23 килобайт ) Кол-во скачиваний: 49
 


--------------------
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 4 2016, 11:40
Сообщение #13


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

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



И логичный шаг замены мультиплексора pmask[j][k][midx*pDAT_W +: pDAT_W] на загружаемый регистр сдвига pmask_b_srl[j][k][0 +: pDAT_W]

Теперь само RTL кодирование, по поведенческой модели, займет часа 3.

ЗЫ. в оценке ресурса, я забыл про 2FSRL регистра, ошибся на 511 триггеров sm.gif
Прикрепленные файлы
Прикрепленный файл  ldpc_enc_beh2.v ( 11.06 килобайт ) Кол-во скачиваний: 20
 


--------------------
Go to the top of the page
 
+Quote Post
Maverick
сообщение Apr 4 2016, 12:34
Сообщение #14


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(des00 @ Apr 4 2016, 14:40) *
И логичный шаг замены мультиплексора pmask[j][k][midx*pDAT_W +: pDAT_W] на загружаемый регистр сдвига pmask_b_srl[j][k][0 +: pDAT_W]

Теперь само RTL кодирование, по поведенческой модели, займет часа 3.

ЗЫ. в оценке ресурса, я забыл про 2FSRL регистра, ошибся на 511 триггеров sm.gif

и чуть позже Вы выложите RTL кодирование sm.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 4 2016, 13:45
Сообщение #15


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

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



Цитата(Maverick @ Apr 4 2016, 20:34) *
и чуть позже Вы выложите RTL кодирование sm.gif

не учел еще AND цепи, но с тактовой не промахнулся sm.gif Достаточно компактно получилось (см. соседнюю тему)


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

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

 


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


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