Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LDPC-кодер на FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
gin
Господа, кто делал такое? Что посоветуете по читать в части LDPC, и может конкретно по реализации LDPC на ПЛИС есть у кого-нить статейки?
des00
поиском по форуму, тут выкладывал и матлаб и RTL SV WIMAX LDPC.

ЗЫ. статейками дело не кончиться, все начнется с базового min-sum и классической метрикой и потом понесется нелинейное квантование, модификация и замена алгоритмов и т.д.
gin
Цитата(des00 @ Sep 15 2015, 21:13) *
поиском по форуму, тут выкладывал и матлаб и RTL SV WIMAX LDPC.

ЗЫ. статейками дело не кончиться, все начнется с базового min-sum и классической метрикой и потом понесется нелинейное квантование, модификация и замена алгоритмов и т.д.


Большое спасибо! Сейчас изучаю. Просто для начала хотелось бы примерно представлять объем, который займет кодер LDPC на FPGA. Т.е. на какой кристалл закладываться. Код - LDPC (8176,7156)
des00
Цитата(gin @ Sep 16 2015, 14:15) *
Просто для начала хотелось бы примерно представлять объем, который займет кодер LDPC на FPGA. Т.е. на какой кристалл закладываться. Код - LDPC (8176,7156)

от скорости зависит. декодер 10 итераций на 500-1000 мегабит думаю займет где то тысяч 30 логики + 250 блочков памяти.
а на 1 мегабит ну тысячи 3 и 10 блочков
gin
Цитата(des00 @ Sep 16 2015, 09:34) *
от скорости зависит. декодер 10 итераций на 500-1000 мегабит думаю займет где то тысяч 30 логики + 250 блочков памяти.
а на 1 мегабит ну тысячи 3 и 10 блочков


Спасибо! Пока задача стоит только кодер сделать, декодер вроде как не нужен.
А входной поток данных - где то в районе 1 Гбит/с - 16 бит данных и 60 МГц тактовая.

Из микросхем - для макета хотим циклон использовать (3-й или 4-й), а вот для боевого образца хотим воронежский Flex, но там скорой всего не влезет
des00
Цитата(gin @ Sep 16 2015, 14:51) *
А входной поток данных - где то в районе 1 Гбит/с - 16 бит данных и 60 МГц тактовая.

Если кодер, то все проще. В сорцах кодер Wimax с ZF кратным байту, может работать на 205МГц на третьем сыклоне. Как раз кодированный гигабит. Весит где то 1600 плиток. Память не нужна.

Цитата
а вот для боевого образца хотим воронежский Flex, но там скорой всего не влезет

тихо ржу.


ЗЫ. Все выкладки для кодера и декодера с матрицами сформированными сдвигом. Если у вас рандомная матрица, то результаты будут абсолютно другие sm.gif
gin
Цитата(des00 @ Sep 16 2015, 10:02) *
Если кодер, то все проще. В сорцах кодер Wimax с ZF кратным байту, может работать на 205МГц на третьем сыклоне. Как раз кодированный гигабит. Весит где то 1600 плиток. Память не нужна.


тихо ржу.


ЗЫ. Все выкладки для кодера и декодера с матрицами сформированными сдвигом. Если у вас рандомная матрица, то результаты будут абсолютно другие sm.gif


Спасибо! Правильно ли я понял - это оно electronix.ru/forum/index.php?act=attach&type=post&id=92788 ? И там, как понял у Вас параметризованный декодер? Можно ли использовать LDPC размерностью (8176,7154) ? А так да, матрица на сдвиговых регистрах - т.е. если я правильно понял, то там 14 матриц размером 511х511 элементов.

P.S. По поводу флексов - это вояки хотят) Естественно мы их использовать вряд ли будем
des00
Цитата(gin @ Sep 16 2015, 14:17) *
Спасибо! Правильно ли я понял - это оно electronix.ru/forum/index.php?act=attach&type=post&id=92788 ? И там, как понял у Вас параметризованный декодер?

там кодер и декодер, оба со статической конфигурацией.
Цитата
Можно ли использовать LDPC размерностью (8176,7154) ? А так да, матрица на сдвиговых регистрах - т.е. если я правильно понял, то там 14 матриц размером 511х511 элементов.

Так сразу не подскажу, надо смотреть матрицу, оценивать как она раскладывается и т.д.
gin
Предварительная реализация ldpc кодера для Cyclone III - получилось следующее:
Около 24500 логических ячеек,
Память - 32 блока M9K,
Частота (для самого медленного C8) - 86 MHz,
При входной шине данных 16 бит - максимальный поток обрабатываемых данных составит 1376 Мбит/с

В принципе, по частоте можно чуть и поднять, но возможно займет больше ресурсов. Буду смотреть, но в принципе, такие характеристики вполне устраивают - в EP3C40 влезает.
des00
Цитата(gin @ Sep 21 2015, 16:59) *
Около 24500 логических ячеек,
Память - 32 блока M9K,

Что то ИМХО много, и не могу понять откуда там память. Если не сложно, зашлите матрицу сюда или в личку sm.gif
krux
des00
а каков "охват" (aka "girth") у ваших циклических матриц, вы не считали?
des00
Цитата(krux @ Sep 22 2015, 01:03) *
а каков "охват" (aka "girth") у ваших циклических матриц, вы не считали?

я не настолько прошаренный в этом деле, времени на это нет. реализовывал четко по стандарту на Wimax
gin
Цитата(des00 @ Sep 21 2015, 19:23) *
Что то ИМХО много, и не могу понять откуда там память. Если не сложно, зашлите матрицу сюда или в личку sm.gif


Много потому что 16 бит обрабатывается паралельно - много операций XOR, а память там для матрицы

Вот матрица:

Код
        constant B1_MATRIX : array_vector511(13 downto 0) :=
        (0 => 511X"55BF56CC55283DFEEFEA8C8CFF04E1EBD9067710988E25048D67525426939E2068D2DC6FCD2F
822BEB6BD96C8A76F4932AAE9BC53AD20A2A9C86BB461E43759C",
         1 => 511X"62B21CF0AEE0649FA67B7D0EA6551C1CD194CA77501E0FCF8C85867B9CF679C18BCF7939E10F
8550661848A4E0A9E9EDB7DAB9EDABA18C168C8E28AACDDEAB1E",
         2 => 511X"681A8E51420BD8294ECE13E491D618083FFBBA830DB5FAF330209877D801F92B5E07117C57E7
5F6F0D873B3E520F21EAFD78C1612C6228111A369D5790F5929A",
         3 => 511X"35951FEE6F20C902296C9488003345E6C5526C5519230454C556B8A04FC0DC642D682D94B459
4B5197037DF15B5817B26F16D0A3302C09383412822F6D2B234E",
         4 => 511X"188157AE41830744BAE0ADA6295E08B79A44081E111F69BBE7831D07BEEBF76232E065F752D4
F218D39B6C5BF20AE5B8FF172A7F1F680E6BF5AAC3C4343736C2",
         5 => 511X"60CD1F1C282A1612657E8C7C1420332CA245C0756F78744C807966C3E1326438878BD2CCC833
88415A612705AB192B3512EEF0D95248F7B73E5B0F412BF76DB4",
         6 => 511X"766855125CFDC804DAF8DBE3660E8686420230ED4E049DF11D82E357C54FE256EA01F5681D95
544C7A1E32B7C30A8E6CF5D0869E754FFDE6AEFA6D7BE8F1B148",
         7 => 511X"14B5F98E8D55FC8E9B4EE453C6963E052147A857AC1E08675D99A308E7269FAC5600D7B155DE
8CB1BAC786F45B46B523073692DE745FDF10724DDA38FD093B1C",
         8 => 511X"0008B4E899E5F7E692BDCE69CE3FAD997183CFAEB2785D0C3D9CAE510316D4BD65A2A06CBA7F
4E4C4A80839ACA81012343648EEA8DBBA2464A68E115AB3F4034",
         9 => 511X"5E9B2B33EF82D0E64AA2226D6A0ADCD179D5932EE1CF401B336449D0FF775754CA56650716E6
1A43F963D59865C7F017F53830514306649822CAA72C152F6EB2",
         10 => 511X"06F1FF249192F2EAF063488E267EEE994E7760995C4FA6FFA0E4241825A7F5B65C74FB16AC4C
891BC008D33AD4FF97523EE5BD14126916E0502FF2F8E4A07FC2",
         11 => 511X"4109DA2A24E41B1F375645229981D4B7E88C36A12DAB64E91C764CC43CCEC188EC8C5855C8FF
488BB91003602BEF43DBEC4A621048906A2CDC5DBD4103431DB8",
         12 => 511X"228845775A262505B47288E065B23B4A6D78AFBDDB2356B392C692EF56A35AB4AA27767DE72F
058C6484457C95A8CCDD0EF225ABA56B7657B7F0E947DC17F972",
         13 => 511X"7273E8342918E097B1C1F5FEF32A150AEF5E11184782B5BD5A1D8071E94578B0AC722D7BF49E
8C78D391294371FFBA7B88FABF8CC03A62B940CE60D669DFB7B6");
        
    constant B2_MATRIX : array_vector511(13 downto 0) :=
        (0 => 511X"6855AE08698A50AA3051768793DC238544AF3FE987391021AAF6383A6503409C3CE971A80B3E
CE12363EE809A01D91204F1811123EAB867D3E40E8C652585D28",
         1 => 511X"64B71F486AD57125660C4512247B229F0017BA649C6C11148FB00B70808286F1A9790748D296
A593FA4FD2C6D7AAF7750F0C71B31AEE5B400C7F5D73AAF00710",
         2 => 511X"04DF1DD77F1C20C1FB570D7DD7A1219EAECEA4B2877282651B0FFE713DF338A63263BC0E324A
87E2DC1AD64C9F10AAA585ED6905946EE167A73CF04AD2AF9218",
         3 => 511X"7681CF7F278380E28F1262B22F40BF3405BFB92311A8A34D084C086464777431DBFDDD2E82A2
E6742BAD6533B51B2BDEE0377E9F6E63DCA0B0F1DF97E73D5CD8",
         4 => 511X"5D80A6007C175B5C0DD88A442440E2C29C6A136BBCE0D95A58A83B48CA0E7474E9476C92E33D
164BFF943A61CE1031DFF441B0B175209B498394F4794644392E",
         5 => 511X"434B697B98C9F3E48502C8DBD891D0A0386996146DEBEF11D4B833033E05EDC28F808F25E8F3
14135E6675B7608B66F7FF3392308242930025DDC4BB65CD7B6E",
         6 => 511X"222975D325A487FE560A6D146311578D9C5501D28BC0A1FB48C9BDA173E869133A3AA9506C42
AE9F466E85611FC5F8F74E439638D66D2F00C682987A96D8887C",
         7 => 511X"1B71AFFB8117BCF8B5D002A99FEEA49503C0359B056963FE5271140E626F6F8FCE9F29B37047
F9CA89EBCE760405C6277F329065DF21AB3B779AB3E8C8955400",
         8 => 511X"5B7FE6808A10EA42FEF0ED9B41920F82023085C106FBBC1F56B567A14257021BC5FDA60CBA05
B08FAD6DC3B0410295884C7CCDE0E56347D649DE6DDCEEB0C95E",
         9 => 511X"2CD8140C8A37DE0D0261259F63AA2A420A8F81FECB661DBA5C62DF6C817B4A61D2BC1F068A50
DFD0EA8FE1BD387601062E2276A4987A19A70B460C54F215E184",
         10 => 511X"65287840D00243278F41CE1156D1868F24E02F91D3A1886ACE906CE741662B40B4EFDFB90F76
C1ADD884D920AFA8B3427EEB84A759FA02E00635743F50B942F0",
         11 => 511X"2185E3BC7076BA51AAD6B199C8C60BCD70E8245B874927136E6D8DD527DF0693DC10A1C8E51B
5BE93FF7538FA138B335738F4315361ABF8C73BF40593AE22BE4",
         12 => 511X"2630C6F79878E50CF5ABD353A6ED80BEACC7169179EA57435E44411BC7D566136DFA983019F3
443DE8E4C60940BC4E31DCEAD514D755AF95A622585D69572692",
         13 => 511X"087EA12042793307045B283D7305E93D8F74725034E77D25D3FF043ADC5F8B5B186DB70A968
A816835EFB575952EAE7EA4E76DF0D5F097590E1A2A978025573E");
des00
Цитата(gin @ Sep 22 2015, 20:05) *
Вот матрица:

Спасибо, покурю на досуге. А нормального описания нет ? ну там декомпозиция на подматрицы и т.д. ? sm.gif
gin
Цитата(des00 @ Sep 22 2015, 16:16) *
Спасибо, покурю на досуге. А нормального описания нет ? ну там декомпозиция на подматрицы и т.д. ? sm.gif


Было описание где то, как найду дам ссылку
gin
Цитата(des00 @ Sep 22 2015, 16:16) *
Спасибо, покурю на досуге. А нормального описания нет ? ну там декомпозиция на подматрицы и т.д. ? sm.gif


Вот здесь достаточно подробно описано http://public.ccsds.org/publications/archive/131x1o2e2s.pdf
Собственно и матрицу от туда брал.

А что касается объема, занимаемого на кристалле - то изначально основной задачей было достигнуть скорости обработки данных в 1 Гбит/с, объем - не особо критичен был (все-равно с Флексами изначально бесперспективный вариант был). Естественно много что еще в моем проекте можно оптимизировать и улучшить - это пока предварительный вариант, хотя в Моделсиме немного поганял - вроде работает))
des00
Цитата(gin @ Sep 23 2015, 14:14) *
Вот здесь достаточно подробно описано http://public.ccsds.org/publications/archive/131x1o2e2s.pdf
Собственно и матрицу от туда брал.

Спасибо. Надо было сразу написать что кодер из CCSDS 131.1-O-2 wink.gif давно на него засматриваюсь, все времени нет реализовать и выложить sad.gif
gin
Цитата(des00 @ Sep 23 2015, 19:50) *
Спасибо. Надо было сразу написать что кодер из CCSDS 131.1-O-2 wink.gif давно на него засматриваюсь, все времени нет реализовать и выложить sad.gif


Незачто! Если честно, то сам только сейчас столкнулся с космической тематикой - во всех тонкостях не разбираюсь. Сейчас еще надо со SpaceWire поразбираться, особенно интересно про восстановление частоты что-нить почитать, может есть какие-нибудь интересные ссылки по этой теме у вас? sm.gif
des00
Цитата(gin @ Sep 24 2015, 19:39) *
особенно интересно про восстановление частоты что-нить почитать, может есть какие-нибудь интересные ссылки по этой теме у вас? sm.gif

качать/изучать модели демодуляторов : http://electronix.ru/forum/index.php?showtopic=23652 и книга незами RF Architectures and Digital Signal Processing Aspects of Digital Wireless Transceivers, это для старта
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.