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

 
 
> LDPC+QAM256, Создание QC-LDPC-BC пров.матриц под модуляцию QAM256
brig01
сообщение Dec 7 2010, 11:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Добрый день коллеги!

Возможно учесть вид модуляции(QAM256) при создании матриц LDPC? Сейчас использую алгоритм PEG.

P.S. Сорри за тупой вопрос, кодированием занимаюсь недавно.


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
5 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 63)
Serg76
сообщение Dec 7 2010, 15:53
Сообщение #2


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(brig01 @ Dec 7 2010, 15:55) *
Добрый день коллеги!

Возможно учесть вид модуляции(QAM256) при создании матриц LDPC? Сейчас использую алгоритм PEG.

P.S. Сорри за тупой вопрос, кодированием занимаюсь недавно.

Если я правильно понимаю Вам необходимо преобразовать мягкие решения сигнала 256-КАМ в последовательность мягких оценок, т.е. реализовать квадратурный расщепитель. Другими словами, на входе некоего блока I/Q составляющие сигнала 256-КАМ с выхода демодулятора, на выходе блока последовательность из 8-ми мягких оценок на каждую I/Q пару. Эту последовательность затем можно преобразовать в жесткие решения, т.е. битовый поток и уже по нему рассчитать проверочную матрицу. От типа применяемой конструкции эти действия зависеть не будут. Или я что-то не так понял из Вашего вопроса?
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 8 2010, 06:12
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(Serg76 @ Dec 7 2010, 21:53) *
Если я правильно понимаю Вам необходимо преобразовать мягкие решения сигнала 256-КАМ в последовательность мягких оценок, т.е. реализовать квадратурный расщепитель. Другими словами, на входе некоего блока I/Q составляющие сигнала 256-КАМ с выхода демодулятора, на выходе блока последовательность из 8-ми мягких оценок на каждую I/Q пару. Эту последовательность затем можно преобразовать в жесткие решения, т.е. битовый поток и уже по нему рассчитать проверочную матрицу. От типа применяемой конструкции эти действия зависеть не будут. Или я что-то не так понял из Вашего вопроса?


Добрый день!

1. Расщепитель квадратур с которого я получаю метрику для каждого бита у меня есть.

2. "... Эту последовательность затем можно преобразовать в жесткие решения, т.е. битовый поток и уже по нему рассчитать проверочную матрицу... " - если не сложно поясните?

3. В КАМ256 энергетика у бит разная, а значит и ВЕR у каждого бита свой, у младшего бита он больше, возможно ли какнибудь это учесть при построении схемы FEC, идеально конечно чтобы это можно было учесть в пров.мат. LDPC.

4. Для получения наибольшего выигрыша от кодирования для КАМ256 применяют каскадные схемы FEC. Например R=5/6, сначал поток накрывается кодом R=20/21, затем младший бит накрывается R=1/2(для потока это будет 7/8). Я оч. сильно ограничен в ресурсе, для меня это не вариант.

P.S. Возможны разночтения в терминах, если что не понятно, спрашивайте.





--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
SKov
сообщение Dec 8 2010, 08:45
Сообщение #4


Знающий
****

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



Цитата(brig01 @ Dec 8 2010, 09:12) *
3. В КАМ256 энергетика у бит разная, а значит и ВЕR у каждого бита свой, у младшего бита он больше, возможно ли какнибудь это учесть при построении схемы FEC, идеально конечно чтобы это можно было учесть в пров.мат. LDPC.

Вм надо порыться в стандартах DVB-xx. Там точно есть сочетания КАМ-LDPC. Но выражение "расчитать проверочную матрицу" немного ставит в тупик. Проверочная матрица строится заранее и потом уже ни от чего не зависит. Декодер работает с отношениями правдоподобия или (как правило) с их логарифмами (что в MIN-SUM, что в BP- декодерах), что автоматически учитывает разные вероятности ошибки в битах. А вообще - почитайте упомянутые выше стандарты, может там как-то особенности КАМ и учитываются.
Go to the top of the page
 
+Quote Post
Modest
сообщение Dec 8 2010, 09:37
Сообщение #5


Участник
*

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



Цитата(SKov @ Dec 8 2010, 11:45) *
Но выражение "расчитать проверочную матрицу" немного ставит в тупик. Проверочная матрица строится заранее и потом уже ни от чего не зависит.
Мне кажется имелось ввиду : "Как заранее построить матрицу с учетом того что будет использоваться КАМ256?"
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 8 2010, 10:28
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(SKov @ Dec 8 2010, 14:45) *
Вм надо порыться в стандартах DVB-xx. Там точно есть сочетания КАМ-LDPC. Но выражение "расчитать проверочную матрицу" немного ставит в тупик. Проверочная матрица строится заранее и потом уже ни от чего не зависит. Декодер работает с отношениями правдоподобия или (как правило) с их логарифмами (что в MIN-SUM, что в BP- декодерах), что автоматически учитывает разные вероятности ошибки в битах. А вообще - почитайте упомянутые выше стандарты, может там как-то особенности КАМ и учитываются.


Хоть примерно какой DVB-xx рыть?, их там много и в них много букфф и страничек и всё на буржуинском)


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 8 2010, 11:34
Сообщение #7


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(brig01 @ Dec 8 2010, 10:12) *
Добрый день!

1. Расщепитель квадратур с которого я получаю метрику для каждого бита у меня есть.

2. "... Эту последовательность затем можно преобразовать в жесткие решения, т.е. битовый поток и уже по нему рассчитать проверочную матрицу... " - если не сложно поясните?

3. В КАМ256 энергетика у бит разная, а значит и ВЕR у каждого бита свой, у младшего бита он больше, возможно ли какнибудь это учесть при построении схемы FEC, идеально конечно чтобы это можно было учесть в пров.мат. LDPC.

4. Для получения наибольшего выигрыша от кодирования для КАМ256 применяют каскадные схемы FEC. Например R=5/6, сначал поток накрывается кодом R=20/21, затем младший бит накрывается R=1/2(для потока это будет 7/8). Я оч. сильно ограничен в ресурсе, для меня это не вариант.

P.S. Возможны разночтения в терминах, если что не понятно, спрашивайте.

2. Если значения метрики положительное число, то значит единичный бит, в противном случае - нулевой, либо же наоборот.
3. Если правильно подобран манипуляционный код, то BER для каждого бита должен быть одинаков, иначе вы получите пачечную структуру ошибок. Хотя для КАМ-256 это условие выполнить будет трудновато.

Цитата(brig01 @ Dec 8 2010, 10:12) *
Но выражение "расчитать проверочную матрицу" немного ставит в тупик. Проверочная матрица строится заранее и потом уже ни от чего не зависит.

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

Цитата(brig01 @ Dec 8 2010, 10:12) *
Хоть примерно какой DVB-xx рыть?, их там много и в них много букфф и страничек и всё на буржуинском)


DVB-S2. там применяется, по-моему, LDPC+BCH совместно с APSK32
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 8 2010, 12:07
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(Serg76 @ Dec 8 2010, 17:34) *
2. Если значения метрики положительное число, то значит единичный бит, в противном случае - нулевой, либо же наоборот.
3. Если правильно подобран манипуляционный код, то BER для каждого бита должен быть одинаков, иначе вы получите пачечную структуру ошибок. Хотя для КАМ-256 это условие выполнить будет трудновато.


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



DVB-S2. там применяется, по-моему, LDPC+BCH совместно с APSK32


Re.2. Как из мягкого решения вытянуть жёсткое понятно, не ясно из фразы как по принятым данным посчитать проверочную матрицу по принятым данным, может вы имели ввиду, по принятым данным и с пров.матрицей посчитать синдром?

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

P.S. Как-то всё с ног на голову перевернуто, как раз приходит входной поток с ошибкой, матрицу расчитывать не надо, она уже есть)))

P.P.S. На IEEE нашёл статью про m-QAM+LDPC.

P.P.P.S Ктонибудь реализовывал CTC? и сколько весит, может у кого есть модель в matlab-е?






--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
SKov
сообщение Dec 8 2010, 12:50
Сообщение #9


Знающий
****

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



Может, здесь что полезное найдете.
Прикрепленные файлы
Прикрепленный файл  DVB_S2_The_Second_Generation_Standard_for_1_.pdf ( 1.04 мегабайт ) Кол-во скачиваний: 147
 
Go to the top of the page
 
+Quote Post
Modest
сообщение Dec 8 2010, 12:53
Сообщение #10


Участник
*

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



Цитата(Serg76 @ Dec 8 2010, 14:34) *
3. Если правильно подобран манипуляционный код, то BER для каждого бита должен быть одинаков, иначе вы получите пачечную структуру ошибок.
Дык, а если перемежение использовать?
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 8 2010, 15:57
Сообщение #11


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(Modest @ Dec 8 2010, 16:53) *
Дык, а если перемежение использовать?

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

Цитата(brig01 @ Dec 8 2010, 16:07) *
Re.2. Как из мягкого решения вытянуть жёсткое понятно, не ясно из фразы как по принятым данным посчитать проверочную матрицу по принятым данным, может вы имели ввиду, по принятым данным и с пров.матрицей посчитать синдром?


Я имел ввиду как раз, что по принятым безошибочным данным можно посчитать проверочную (или порождающую) матрицу составив и решив СЛАУ. Если Вас интересуют подробности, то мне надо вспомнить как это делается.

Цитата(brig01 @ Dec 8 2010, 16:07) *
P.P.P.S Ктонибудь реализовывал CTC? и сколько весит, может у кого есть модель в matlab-е?

CTC - это Convolution Turbo Codes?
Go to the top of the page
 
+Quote Post
SKov
сообщение Dec 8 2010, 17:49
Сообщение #12


Знающий
****

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



Цитата(brig01 @ Dec 8 2010, 15:07) *
Re.3.Проблема в том что как только появляеться амлитудная модуляция в сложных сигналах так BER становиться разный, но если мы знаем что вот эти биты более подверженные ошибкам а эти нет, то можно ли это какнить использовать на системном уровне?

Надо почитать про код Грея, конструкцию Унгербоека и про сигнально-кодовые конструкции.
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 9 2010, 06:58
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(Serg76 @ Dec 8 2010, 21:57) *
CTC - это Convolution Turbo Codes?


Ага они самые.



Цитата(SKov @ Dec 8 2010, 18:50) *
Может, здесь что полезное найдете.


Cпсб.

Цитата(SKov @ Dec 8 2010, 23:49) *
Надо почитать про код Грея, конструкцию Унгербоека и про сигнально-кодовые конструкции.


1. Коды грея я использую. Это улучшает ВER всего потока в два раза. Но не решает проблему разного BER в битах.

2. Как можно использовать конструкцию Унгербоека + QAM256?

Сообщение отредактировал brig01 - Dec 9 2010, 07:01
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
petrov
сообщение Dec 9 2010, 08:11
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(brig01 @ Dec 9 2010, 09:58) *
2. Как можно использовать конструкцию Унгербоека + QAM256?


I и Q кодируются независимо, каждая из них 4 бита передаёт, т е 16 точек, разбиваем их на 4 подобраза, 2 бита адресующие подобразы кодируем LDPC, 2 из подобраза не кодируем вовсе, в зависимости от модели канала может потребоваться внешний БЧХ код чтобы некодированные биты исправлять при замираниях.
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 9 2010, 14:27
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(petrov @ Dec 9 2010, 14:11) *
I и Q кодируются независимо, каждая из них 4 бита передаёт, т е 16 точек, разбиваем их на 4 подобраза, 2 бита адресующие подобразы кодируем LDPC, 2 из подобраза не кодируем вовсе, в зависимости от модели канала может потребоваться внешний БЧХ код чтобы некодированные биты исправлять при замираниях.


Мои знания в TCM не оч., поэтому буду задавать тупые вопросы....

1. На сколько я знаю кодирование в схемах TCM происходит на символьном уровне, как туда пристятгнуть блоковый LDPC работающий с битами не понятно, поясните оч. интересно?

2. Вроде для схем ТСМ используют свёртоный код?

3. С учётом всего сказанного возможно ли использовать для схемы TCM LDPC R=5/6?

P.S. Если сложно отвечать, буду рад ссылкам на литературу где можно почитать по конструкции QAM256+TCM+LDPC.

P.S.S. Сейчас читаю Скляра, оч. тяжОлое чтиво, есть что нить по достпупнее, в плане подачи матерьяла?)

Заранее спасибо!








--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
petrov
сообщение Dec 9 2010, 16:41
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



В гугле достаточно статей можно найти, вот на вскидку

http://www.csie.ntu.edu.tw/~mku/research/L...PC_for_ADSL.pdf

Смотрите не TCM а pragmatic approach double Gray binary coding BICM QAM soft demapping LLR и т. п.
Go to the top of the page
 
+Quote Post
SKov
сообщение Dec 9 2010, 21:23
Сообщение #17


Знающий
****

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



Цитата(brig01 @ Dec 9 2010, 17:27) *
P.S.S. Сейчас читаю Скляра, оч. тяжОлое чтиво, есть что нить по достпупнее, в плане подачи матерьяла?)

Вообще, туго вам придется, если нет опыта в этой области. Там одних только методов постоения LDPC - добрый десяток, да и модификаций декодеров не меньше. И, кстати, QC-LDPC - это разве только сначала кажется приличным классом кодов. Единственное их достоинство - легкость построения. И кодирования. А вообще, если сложность кодера не очень критична, а главное - качество кода, то советую глянуть PG-LDPC. Но еще раз скажу, если это вам курсовик надо написать или диплом - то сойдет и так. А если серьезную разработку надо сделать, то с полгодика надо статьи почитать и "землю порыть". Одной местной конференцией вам не обойтись.
Потому как это тема - "цельная наука" wink.gif))
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 10 2010, 06:05
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(SKov @ Dec 10 2010, 03:23) *
Вообще, туго вам придется, если нет опыта в этой области. Там одних только методов постоения LDPC - добрый десяток, да и модификаций декодеров не меньше. И, кстати, QC-LDPC - это разве только сначала кажется приличным классом кодов. Единственное их достоинство - легкость построения. И кодирования. А вообще, если сложность кодера не очень критична, а главное - качество кода, то советую глянуть PG-LDPC. Но еще раз скажу, если это вам курсовик надо написать или диплом - то сойдет и так. А если серьезную разработку надо сделать, то с полгодика надо статьи почитать и "землю порыть". Одной местной конференцией вам не обойтись.
Потому как это тема - "цельная наука" wink.gif))


Опыт дело наживное было бы желание. QC-LDPC-BC используеться в WiMax и GhM сетях, янки плохое не будут закладывать, есть другие альтернативы когда размер фрейма на десятки тысяч бит? Кстате их я реализовал/отладил в железе sm.gif. Сложность критична, нужно упихать в ограниченный ресурс(EP1C12) на скорости до 180Мбит. Так то хотел кандидатскую написать sm.gif)). А какие ещё есть конференции на эту тему?

P.S. В QC-LDPC-BC сильно не понравилось что для эффективного декодирования требуеться от 10 итераций и выше.

Цитата(petrov @ Dec 9 2010, 22:41) *
В гугле достаточно статей можно найти, вот на вскидку

http://www.csie.ntu.edu.tw/~mku/research/L...PC_for_ADSL.pdf

Смотрите не TCM а pragmatic approach double Gray binary coding BICM QAM soft demapping LLR и т. п.


Огромное спсб.

Сообщение отредактировал brig01 - Dec 10 2010, 05:36


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
SKov
сообщение Dec 10 2010, 08:51
Сообщение #19


Знающий
****

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



Цитата(brig01 @ Dec 10 2010, 09:05) *
QC-LDPC-BC используеться в WiMax и GhM сетях,
янки плохое не будут закладывать


Ну, с таким подходом мы из состояния банановой республики уже никогда не вылезем. wink.gif
Кстати, те же янки используют PG-коды в 10-гигабитном эзернете. Там , правда,
длина небольшая - 2048. И во флеш-памяти (там длина около 10000).
Если критична сложность кодера, то янки просто приписываеют к проверочной матрице двойную единичную матрицу wink.gif)
Тоже нормальное дело, если хочется подпортить качество кода ради упрощения кодирования.wink.gif

Цитата
А какие ещё есть конференции на эту тему?

Я не знаю. Вообще, конференция полезна, если вы совсем "чайник" и вам надо получить начальную "ориентацию в пространстве"
и легкий дружеский пинок в нужном напрвлении. Либо, если вы уже гуру, но какой-то очень частный вопрос не можете
раскусить - тогда тоже могут помочь. А использовать конференцию для решения задачи обучения - это последнее дело.
Тут вам быстро расскажут про "модификацию проверочной матрицы" в процессе декодирования.
Вы потом долго переучиваться будете wink.gif

Цитата
P.S. В QC-LDPC-BC сильно не понравилось что для эффективного декодирования требуеться от 10 итераций и выше.

Это вообще какая-то ерунда, которую я не понимаю. Количество итераций зависит в первую очередь от уровня шума.
Даже плохой код будет быстро декодироваться при малом уровне шумов. И даже хороший код требует многих итераций
при большом шуме. Все очень относительно. Вы можете силовым приемом ограничить число итераций на приемлемом
уровне - и смотреть, что получается.
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 10 2010, 09:51
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(SKov @ Dec 10 2010, 14:51) *
Ну, с таким подходом мы из состояния банановой республики уже никогда не вылезем. wink.gif
Кстати, те же янки используют PG-коды в 10-гигабитном эзернете. Там , правда,
длина небольшая - 2048. И во флеш-памяти (там длина около 10000).
Если критична сложность кодера, то янки просто приписываеют к проверочной матрице двойную единичную матрицу wink.gif)
Тоже нормальное дело, если хочется подпортить качество кода ради упрощения кодирования.wink.gif


Я не знаю. Вообще, конференция полезна, если вы совсем "чайник" и вам надо получить начальную "ориентацию в пространстве"
и легкий дружеский пинок в нужном напрвлении. Либо, если вы уже гуру, но какой-то очень частный вопрос не можете
раскусить - тогда тоже могут помочь. А использовать конференцию для решения задачи обучения - это последнее дело.
Тут вам быстро расскажут про "модификацию проверочной матрицы" в процессе декодирования.
Вы потом долго переучиваться будете wink.gif


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


1. На начальном этапе мне и моему начальству нужен был результат, результат проще добиться когда задача не сложная, тем более когда кодированием не знанимался, поэтому QC-LDPC-BC без вариантов.

2.Конференции всегда важны хоть чайник ты, хоть утюг, хоть гуру из тебета sm.gif

3.Количество итераций зависит от ресурса, чем его больше тем больше итераций, у меня без всяких "силовых", тупо в EP1C12 не лезет больше 3итераций. В моём случае на R=5/6 QAM256 я получил выигрышь 6дБ (замеренно в железе), этого мало, нужно ещё 1дБ. Если б у меня была возможность добавить ещё итераций 7 было бы лучшe причём сильно, кстате после 16итераций выигрыша практически нет. Поэтому я и говорю что для эффективного ДЕкодирования (масимального выигрыша в дБ) нужно 10итераций.


P.S. Переделаю схему FEC на выходных как посоветовал камрад petrov, отпишусь что получилось sm.gif




--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
petrov
сообщение Dec 10 2010, 10:35
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(brig01 @ Dec 10 2010, 12:51) *
P.S. Переделаю схему FEC на выходных как посоветовал камрад petrov, отпишусь что получилось sm.gif


Не торопитесь ничего переделывать, может и не нужно вам это.

А как у вас сейчас сделано извлечение мягкой информации из 256QAM?
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 10 2010, 11:17
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(petrov @ Dec 10 2010, 16:35) *
Не торопитесь ничего переделывать, может и не нужно вам это.

А как у вас сейчас сделано извлечение мягкой информации из 256QAM?



1. На передющей стороне биты кодирую в грей:

Код
always_ff@(posedge clk)begin
        gray[3]  <= #Tp acc[3];
        gray[2]  <= #Tp acc[2]^acc[3];
        gray[1]  <= #Tp acc[1]^acc[2]^acc[3];
        gray[0]  <= #Tp acc[0]^acc[1]^acc[2]^acc[3];
    end


Данные скармливаю модему. Получаю фазовый портрет рис. в одном из моих ответов.

2. На приёмной стороне с эквалайзера приходит 7бит(старшие биты ) для одной квадратуры.

3. Расщепление квадратуры в метрики:

Код
function bit signed [6:0] prod_minus(input bit signed [6:0] in);
integer i;    
bit     sign;
begin
    prod_minus  =   0;    
    for(i=0;i<7;i++)begin
            prod_minus[i]  =   ~in[i];            
        end
end    
endfunction    

function bit signed [6:0] abs(input bit [6:0] in);
integer i;
begin
    abs  =   0;
    for(i=0;i<7;i++)begin
            abs[i]  =   in[i]^(in[6]);
        end
end
endfunction

task automatic calc_metric(bit signed [6:0] in, ref bit signed [6:0] met [3:0]);    
begin    
    //
    met[3]   =   prod_minus(in);
    met[2]   =   abs(in)-32;
    met[1]   =   abs(met[2])-16;
    met[0]   =   abs(met[1])-8;        
    //
    for(int i=0;i<4;i++)begin
            if(met[i]>7)
                met[i]  =   7;
            else if(met[i]<-8)
                met[i]  =  -8;
        end
end    
endtask


Сообщение отредактировал brig01 - Dec 10 2010, 11:26


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 10 2010, 11:28
Сообщение #23


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



2 brig01

А можно для лучшего восприятия привести словесный алгоритм расщепителя или математические выражения?
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 10 2010, 11:39
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(Serg76 @ Dec 10 2010, 17:28) *
2 brig01

А можно для лучшего восприятия привести словесный алгоритм расщепителя или математические выражения?


Честно говоря не знаю что сдесь не ясно, код вроде элементарный.

Логи выполнения:

Код
# In    = 0000 InM   =   -16 OutM  = -64 M[3] =  7 M[2] =  7 M[1] =  7 M[0] =  7  
# In    = 0000 InM   = -15 OutM  = -63 M[3] =  7 M[2] =  7 M[1] =  7 M[0] =  6  
# In    = 0000 InM   = -15 OutM  = -62 M[3] =  7 M[2] =  7 M[1] =  7 M[0] =  5  
# In    = 0000 InM   = -15 OutM  = -61 M[3] =  7 M[2] =  7 M[1] =  7 M[0] =  4  
# In    = 0000 InM   =   -15 OutM  = -60 M[3] =  7 M[2] =  7 M[1] =  7 M[0] =  3  
# In    = 0000 InM   = -14 OutM  = -59 M[3] =  7 M[2] =  7 M[1] =  7 M[0] =  2  
# In    = 0000 InM   = -14 OutM  = -58 M[3] =  7 M[2] =  7 M[1] =  7 M[0] =  1  
# In    = 0000 InM   = -14 OutM  = -57 M[3] =  7 M[2] =  7 M[1] =  7 M[0] =  0  
# In    = 0001 InM   =   -14 OutM  = -56 M[3] =  7 M[2] =  7 M[1] =  7 M[0] = -1  
# In    = 0001 InM   = -13 OutM  = -55 M[3] =  7 M[2] =  7 M[1] =  6 M[0] = -2  
# In    = 0001 InM   = -13 OutM  = -54 M[3] =  7 M[2] =  7 M[1] =  5 M[0] = -3  
# In    = 0001 InM   = -13 OutM  = -53 M[3] =  7 M[2] =  7 M[1] =  4 M[0] = -4  
# In    = 0001 InM   =   -13 OutM  = -52 M[3] =  7 M[2] =  7 M[1] =  3 M[0] = -5  
# In    = 0001 InM   = -12 OutM  = -51 M[3] =  7 M[2] =  7 M[1] =  2 M[0] = -6  
# In    = 0001 InM   = -12 OutM  = -50 M[3] =  7 M[2] =  7 M[1] =  1 M[0] = -7  
# In    = 0001 InM   = -12 OutM  = -49 M[3] =  7 M[2] =  7 M[1] =  0 M[0] = -8  
# In    = 0011 InM   =   -12 OutM  = -48 M[3] =  7 M[2] =  7 M[1] = -1 M[0] = -8  
# In    = 0011 InM   = -11 OutM  = -47 M[3] =  7 M[2] =  7 M[1] = -2 M[0] = -7  
# In    = 0011 InM   = -11 OutM  = -46 M[3] =  7 M[2] =  7 M[1] = -3 M[0] = -6  
# In    = 0011 InM   = -11 OutM  = -45 M[3] =  7 M[2] =  7 M[1] = -4 M[0] = -5  
# In    = 0011 InM   =   -11 OutM  = -44 M[3] =  7 M[2] =  7 M[1] = -5 M[0] = -4  
# In    = 0011 InM   = -10 OutM  = -43 M[3] =  7 M[2] =  7 M[1] = -6 M[0] = -3  
# In    = 0011 InM   = -10 OutM  = -42 M[3] =  7 M[2] =  7 M[1] = -7 M[0] = -2  
# In    = 0011 InM   = -10 OutM  = -41 M[3] =  7 M[2] =  7 M[1] = -8 M[0] = -1  
# In    = 0010 InM   =   -10 OutM  = -40 M[3] =  7 M[2] =  7 M[1] = -8 M[0] =  0  
# In    = 0010 InM   =  -9 OutM  = -39 M[3] =  7 M[2] =  6 M[1] = -8 M[0] =  1  
# In    = 0010 InM   =  -9 OutM  = -38 M[3] =  7 M[2] =  5 M[1] = -8 M[0] =  2  
# In    = 0010 InM   =  -9 OutM  = -37 M[3] =  7 M[2] =  4 M[1] = -8 M[0] =  3  
# In    = 0010 InM   =    -9 OutM  = -36 M[3] =  7 M[2] =  3 M[1] = -8 M[0] =  4  
# In    = 0010 InM   =  -8 OutM  = -35 M[3] =  7 M[2] =  2 M[1] = -8 M[0] =  5  
# In    = 0010 InM   =  -8 OutM  = -34 M[3] =  7 M[2] =  1 M[1] = -8 M[0] =  6  
# In    = 0010 InM   =  -8 OutM  = -33 M[3] =  7 M[2] =  0 M[1] = -8 M[0] =  7  
# In    = 0110 InM   =    -8 OutM  = -32 M[3] =  7 M[2] = -1 M[1] = -8 M[0] =  7  
# In    = 0110 InM   =  -7 OutM  = -31 M[3] =  7 M[2] = -2 M[1] = -8 M[0] =  6  
# In    = 0110 InM   =  -7 OutM  = -30 M[3] =  7 M[2] = -3 M[1] = -8 M[0] =  5  
# In    = 0110 InM   =  -7 OutM  = -29 M[3] =  7 M[2] = -4 M[1] = -8 M[0] =  4  
# In    = 0110 InM   =    -7 OutM  = -28 M[3] =  7 M[2] = -5 M[1] = -8 M[0] =  3  
# In    = 0110 InM   =  -6 OutM  = -27 M[3] =  7 M[2] = -6 M[1] = -8 M[0] =  2  
# In    = 0110 InM   =  -6 OutM  = -26 M[3] =  7 M[2] = -7 M[1] = -8 M[0] =  1  
# In    = 0110 InM   =  -6 OutM  = -25 M[3] =  7 M[2] = -8 M[1] = -8 M[0] =  0  
# In    = 0111 InM   =    -6 OutM  = -24 M[3] =  7 M[2] = -8 M[1] = -8 M[0] = -1  
# In    = 0111 InM   =  -5 OutM  = -23 M[3] =  7 M[2] = -8 M[1] = -7 M[0] = -2  
# In    = 0111 InM   =  -5 OutM  = -22 M[3] =  7 M[2] = -8 M[1] = -6 M[0] = -3  
# In    = 0111 InM   =  -5 OutM  = -21 M[3] =  7 M[2] = -8 M[1] = -5 M[0] = -4  
# In    = 0111 InM   =    -5 OutM  = -20 M[3] =  7 M[2] = -8 M[1] = -4 M[0] = -5  
# In    = 0111 InM   =  -4 OutM  = -19 M[3] =  7 M[2] = -8 M[1] = -3 M[0] = -6  
# In    = 0111 InM   =  -4 OutM  = -18 M[3] =  7 M[2] = -8 M[1] = -2 M[0] = -7  
# In    = 0111 InM   =  -4 OutM  = -17 M[3] =  7 M[2] = -8 M[1] = -1 M[0] = -8  
# In    = 0101 InM   =    -4 OutM  = -16 M[3] =  7 M[2] = -8 M[1] =  0 M[0] = -8  
# In    = 0101 InM   =  -3 OutM  = -15 M[3] =  7 M[2] = -8 M[1] =  1 M[0] = -7  
# In    = 0101 InM   =  -3 OutM  = -14 M[3] =  7 M[2] = -8 M[1] =  2 M[0] = -6  
# In    = 0101 InM   =  -3 OutM  = -13 M[3] =  7 M[2] = -8 M[1] =  3 M[0] = -5  
# In    = 0101 InM   =    -3 OutM  = -12 M[3] =  7 M[2] = -8 M[1] =  4 M[0] = -4  
# In    = 0101 InM   =  -2 OutM  = -11 M[3] =  7 M[2] = -8 M[1] =  5 M[0] = -3  
# In    = 0101 InM   =  -2 OutM  = -10 M[3] =  7 M[2] = -8 M[1] =  6 M[0] = -2  
# In    = 0101 InM   =  -2 OutM  =  -9 M[3] =  7 M[2] = -8 M[1] =  7 M[0] = -1  
# In    = 0100 InM   =    -2 OutM  =  -8 M[3] =  7 M[2] = -8 M[1] =  7 M[0] =  0  
# In    = 0100 InM   =  -1 OutM  =  -7 M[3] =  6 M[2] = -8 M[1] =  7 M[0] =  1  
# In    = 0100 InM   =  -1 OutM  =  -6 M[3] =  5 M[2] = -8 M[1] =  7 M[0] =  2  
# In    = 0100 InM   =  -1 OutM  =  -5 M[3] =  4 M[2] = -8 M[1] =  7 M[0] =  3  
# In    = 0100 InM   =    -1 OutM  =  -4 M[3] =  3 M[2] = -8 M[1] =  7 M[0] =  4  
# In    = 0100 InM   =   0 OutM  =  -3 M[3] =  2 M[2] = -8 M[1] =  7 M[0] =  5  
# In    = 0100 InM   =   0 OutM  =  -2 M[3] =  1 M[2] = -8 M[1] =  7 M[0] =  6  
# In    = 0100 InM   =   0 OutM  =  -1 M[3] =  0 M[2] = -8 M[1] =  7 M[0] =  7  
# In    = 1100 InM   =     0 OutM  =   0 M[3] = -1 M[2] = -8 M[1] =  7 M[0] =  7  
# In    = 1100 InM   =   0 OutM  =   1 M[3] = -2 M[2] = -8 M[1] =  7 M[0] =  6  
# In    = 1100 InM   =   0 OutM  =   2 M[3] = -3 M[2] = -8 M[1] =  7 M[0] =  5  
# In    = 1100 InM   =   0 OutM  =   3 M[3] = -4 M[2] = -8 M[1] =  7 M[0] =  4  
# In    = 1100 InM   =     1 OutM  =   4 M[3] = -5 M[2] = -8 M[1] =  7 M[0] =  3  
# In    = 1100 InM   =   1 OutM  =   5 M[3] = -6 M[2] = -8 M[1] =  7 M[0] =  2  
# In    = 1100 InM   =   1 OutM  =   6 M[3] = -7 M[2] = -8 M[1] =  7 M[0] =  1  
# In    = 1100 InM   =   1 OutM  =   7 M[3] = -8 M[2] = -8 M[1] =  7 M[0] =  0  
# In    = 1101 InM   =     2 OutM  =   8 M[3] = -8 M[2] = -8 M[1] =  7 M[0] = -1  
# In    = 1101 InM   =   2 OutM  =   9 M[3] = -8 M[2] = -8 M[1] =  6 M[0] = -2  
# In    = 1101 InM   =   2 OutM  =  10 M[3] = -8 M[2] = -8 M[1] =  5 M[0] = -3  
# In    = 1101 InM   =   2 OutM  =  11 M[3] = -8 M[2] = -8 M[1] =  4 M[0] = -4  
# In    = 1101 InM   =     3 OutM  =  12 M[3] = -8 M[2] = -8 M[1] =  3 M[0] = -5  
# In    = 1101 InM   =   3 OutM  =  13 M[3] = -8 M[2] = -8 M[1] =  2 M[0] = -6  
# In    = 1101 InM   =   3 OutM  =  14 M[3] = -8 M[2] = -8 M[1] =  1 M[0] = -7  
# In    = 1101 InM   =   3 OutM  =  15 M[3] = -8 M[2] = -8 M[1] =  0 M[0] = -8  
# In    = 1111 InM   =     4 OutM  =  16 M[3] = -8 M[2] = -8 M[1] = -1 M[0] = -8  
# In    = 1111 InM   =   4 OutM  =  17 M[3] = -8 M[2] = -8 M[1] = -2 M[0] = -7  
# In    = 1111 InM   =   4 OutM  =  18 M[3] = -8 M[2] = -8 M[1] = -3 M[0] = -6  
# In    = 1111 InM   =   4 OutM  =  19 M[3] = -8 M[2] = -8 M[1] = -4 M[0] = -5  
# In    = 1111 InM   =     5 OutM  =  20 M[3] = -8 M[2] = -8 M[1] = -5 M[0] = -4  
# In    = 1111 InM   =   5 OutM  =  21 M[3] = -8 M[2] = -8 M[1] = -6 M[0] = -3  
# In    = 1111 InM   =   5 OutM  =  22 M[3] = -8 M[2] = -8 M[1] = -7 M[0] = -2  
# In    = 1111 InM   =   5 OutM  =  23 M[3] = -8 M[2] = -8 M[1] = -8 M[0] = -1  
# In    = 1110 InM   =     6 OutM  =  24 M[3] = -8 M[2] = -8 M[1] = -8 M[0] =  0  
# In    = 1110 InM   =   6 OutM  =  25 M[3] = -8 M[2] = -7 M[1] = -8 M[0] =  1  
# In    = 1110 InM   =   6 OutM  =  26 M[3] = -8 M[2] = -6 M[1] = -8 M[0] =  2  
# In    = 1110 InM   =   6 OutM  =  27 M[3] = -8 M[2] = -5 M[1] = -8 M[0] =  3  
# In    = 1110 InM   =     7 OutM  =  28 M[3] = -8 M[2] = -4 M[1] = -8 M[0] =  4  
# In    = 1110 InM   =   7 OutM  =  29 M[3] = -8 M[2] = -3 M[1] = -8 M[0] =  5  
# In    = 1110 InM   =   7 OutM  =  30 M[3] = -8 M[2] = -2 M[1] = -8 M[0] =  6  
# In    = 1110 InM   =   7 OutM  =  31 M[3] = -8 M[2] = -1 M[1] = -8 M[0] =  7  
# In    = 1010 InM   =     8 OutM  =  32 M[3] = -8 M[2] =  0 M[1] = -8 M[0] =  7  
# In    = 1010 InM   =   8 OutM  =  33 M[3] = -8 M[2] =  1 M[1] = -8 M[0] =  6  
# In    = 1010 InM   =   8 OutM  =  34 M[3] = -8 M[2] =  2 M[1] = -8 M[0] =  5  
# In    = 1010 InM   =   8 OutM  =  35 M[3] = -8 M[2] =  3 M[1] = -8 M[0] =  4  
# In    = 1010 InM   =     9 OutM  =  36 M[3] = -8 M[2] =  4 M[1] = -8 M[0] =  3  
# In    = 1010 InM   =   9 OutM  =  37 M[3] = -8 M[2] =  5 M[1] = -8 M[0] =  2  
# In    = 1010 InM   =   9 OutM  =  38 M[3] = -8 M[2] =  6 M[1] = -8 M[0] =  1  
# In    = 1010 InM   =   9 OutM  =  39 M[3] = -8 M[2] =  7 M[1] = -8 M[0] =  0  
# In    = 1011 InM   =    10 OutM  =  40 M[3] = -8 M[2] =  7 M[1] = -8 M[0] = -1  
# In    = 1011 InM   =  10 OutM  =  41 M[3] = -8 M[2] =  7 M[1] = -7 M[0] = -2  
# In    = 1011 InM   =  10 OutM  =  42 M[3] = -8 M[2] =  7 M[1] = -6 M[0] = -3  
# In    = 1011 InM   =  10 OutM  =  43 M[3] = -8 M[2] =  7 M[1] = -5 M[0] = -4  
# In    = 1011 InM   =    11 OutM  =  44 M[3] = -8 M[2] =  7 M[1] = -4 M[0] = -5  
# In    = 1011 InM   =  11 OutM  =  45 M[3] = -8 M[2] =  7 M[1] = -3 M[0] = -6  
# In    = 1011 InM   =  11 OutM  =  46 M[3] = -8 M[2] =  7 M[1] = -2 M[0] = -7  
# In    = 1011 InM   =  11 OutM  =  47 M[3] = -8 M[2] =  7 M[1] = -1 M[0] = -8  
# In    = 1001 InM   =    12 OutM  =  48 M[3] = -8 M[2] =  7 M[1] =  0 M[0] = -8  
# In    = 1001 InM   =  12 OutM  =  49 M[3] = -8 M[2] =  7 M[1] =  1 M[0] = -7  
# In    = 1001 InM   =  12 OutM  =  50 M[3] = -8 M[2] =  7 M[1] =  2 M[0] = -6  
# In    = 1001 InM   =  12 OutM  =  51 M[3] = -8 M[2] =  7 M[1] =  3 M[0] = -5  
# In    = 1001 InM   =    13 OutM  =  52 M[3] = -8 M[2] =  7 M[1] =  4 M[0] = -4  
# In    = 1001 InM   =  13 OutM  =  53 M[3] = -8 M[2] =  7 M[1] =  5 M[0] = -3  
# In    = 1001 InM   =  13 OutM  =  54 M[3] = -8 M[2] =  7 M[1] =  6 M[0] = -2  
# In    = 1001 InM   =  13 OutM  =  55 M[3] = -8 M[2] =  7 M[1] =  7 M[0] = -1  
# In    = 1000 InM   =    14 OutM  =  56 M[3] = -8 M[2] =  7 M[1] =  7 M[0] =  0  
# In    = 1000 InM   =  14 OutM  =  57 M[3] = -8 M[2] =  7 M[1] =  7 M[0] =  1  
# In    = 1000 InM   =  14 OutM  =  58 M[3] = -8 M[2] =  7 M[1] =  7 M[0] =  2  
# In    = 1000 InM   =  14 OutM  =  59 M[3] = -8 M[2] =  7 M[1] =  7 M[0] =  3  
# In    = 1000 InM   =    15 OutM  =  60 M[3] = -8 M[2] =  7 M[1] =  7 M[0] =  4  
# In    = 1000 InM   =  15 OutM  =  61 M[3] = -8 M[2] =  7 M[1] =  7 M[0] =  5  
# In    = 1000 InM   =  15 OutM  =  62 M[3] = -8 M[2] =  7 M[1] =  7 M[0] =  6  
# In    = 1000 InM   =  15 OutM  =  63 M[3] = -8 M[2] =  7 M[1] =  7 M[0] =  7


In - входые биты до грея
InM - это Жёсткое решение 4 бита OutM
OutM - на выходе модема
M[3..0] - метрики

Сообщение отредактировал brig01 - Dec 10 2010, 11:41


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
petrov
сообщение Dec 10 2010, 11:39
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Serg76 @ Dec 10 2010, 14:28) *
2 brig01

А можно для лучшего восприятия привести словесный алгоритм расщепителя или математические выражения?


Да тяжеловато так сообразить.


brig01 или источник приведите по которому делали.
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 10 2010, 12:16
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(petrov @ Dec 10 2010, 17:39) *
Да тяжеловато так сообразить.


brig01 или источник приведите по которому делали.


Делал сам, изходя из позиции здравого смысла.

Алгоритм MIN-SUM для LDPC, договариваемся, одна метрика 4бита.

-8 - самая достоверная 1
....
-1 - самая недостоверная 1
0 - самый недостоверный 0
....
7 - самый достоверный 0

Далее одна квадратура это число от -64 до 63. Смотрим, как распределяються и биты и какие растояния до точек перехода из 0 в 1 для каждого бита на фазовом портрете и выходим не оч. сложные соотношения

Чтобы получить метрики:

met[3] = prod_minus(I)
met[2] = abs(I) - 32
met[1] = abs(met[2]) - 16
met[0] = abs(met[1]) - 8

abs - абсюлютное значение
prod_minus - умножение на минус, функции описанны выше.

Нечто подобное, только для QAM64, можно почитать тут.

Сообщение отредактировал brig01 - Dec 10 2010, 12:44
Прикрепленные файлы
Прикрепленный файл  soft_met.pdf ( 140.19 килобайт ) Кол-во скачиваний: 126
 


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
petrov
сообщение Dec 10 2010, 13:09
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Смотрите чтобы не получалось неправильных метрик, может нормально у вас сделано, а может и лучше можно, не берусь судить.
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 10 2010, 13:18
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(petrov @ Dec 10 2010, 19:09) *
Смотрите чтобы не получалось неправильных метрик, может нормально у вас сделано, а может и лучше можно, не берусь судить.



А как можно проверить на появление неправельных метрик? Если метрик неправельных нет, это лучший вариант?


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
petrov
сообщение Dec 10 2010, 13:34
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(brig01 @ Dec 10 2010, 16:18) *
А как можно проверить на появление неправельных метрик? Если метрик неправельных нет, это лучший вариант?


Это уже на исследование целое тянет, лучше поискать статьи по оптимальному маппингу-демаппингу 256QAM.
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 10 2010, 13:45
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(petrov @ Dec 10 2010, 19:34) *
Это уже на исследование целое тянет, лучше поискать статьи по оптимальному маппингу-демаппингу 256QAM.


Лана, в метриках я уверен, у меня были моменты когда я метрики считал не правельно, это сильно влияет на выходной BER, статьи поищу, всё равно их нужно по другому пересчитать для double Gray-code labeling.

В середине недели отпишусь как получилось с кодированием только младших бит.


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 10 2010, 15:44
Сообщение #31


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(brig01 @ Dec 10 2010, 17:45) *
Честно говоря не знаю что сдесь не ясно, код вроде элементарный.

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

Цитата(brig01 @ Dec 10 2010, 17:45) *
Лана, в метриках я уверен, у меня были моменты когда я метрики считал не правельно, это сильно влияет на выходной BER, статьи поищу, всё равно их нужно по другому пересчитать для double Gray-code labeling.

В середине недели отпишусь как получилось с кодированием только младших бит.

Вопрос еще вот в чем: имеется ли у Вас диффкодирование? если нет, то перед началом расчета метрик надо обязательно устранить фазовую неоднозначность в соответствии с меппингом модулятора, иначе рассчитанные метрики будут неверными. я столкнулся с похожей проблемой, когда надо было разложить 16QAM.

Цитата(brig01 @ Dec 10 2010, 17:18) *
А как можно проверить на появление неправельных метрик? Если метрик неправельных нет, это лучший вариант?

проверить можно только посчитав BER или же визуально на какой-нибудь заранее известной ПСП
Go to the top of the page
 
+Quote Post
brig01
сообщение Dec 13 2010, 05:18
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(Serg76 @ Dec 10 2010, 21:44) *
вам может понятно, другим не очень, зачем мне разбираться в чужом коде, если для объяснения достаточно написать два предложения или привести одно выражение. ну да ладно, ваши проблемы в конце концов.


Вопрос еще вот в чем: имеется ли у Вас диффкодирование? если нет, то перед началом расчета метрик надо обязательно устранить фазовую неоднозначность в соответствии с меппингом модулятора, иначе рассчитанные метрики будут неверными. я столкнулся с похожей проблемой, когда надо было разложить 16QAM.


проверить можно только посчитав BER или же визуально на какой-нибудь заранее известной ПСП


Двумя предложениями не получится. Код он не врёт, в отличии от коментариев.

Диффкодирование отсутствует, но если фаз необдносзачность это когда квадрат созвездия может встать в одну из 4 фаз (0, 90, 180, 270)? то для устранения этого эффекта я модему сигнализирую есть или нет фреймовая синхронизация. Если не сложно выложите ссылку на алгоритмы устранение фазовую неоднозначность в метриках?

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



--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 13 2010, 11:13
Сообщение #33


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(brig01 @ Dec 13 2010, 08:18) *
Двумя предложениями не получится. Код он не врёт, в отличии от коментариев.

Диффкодирование отсутствует, но если фаз необдносзачность это когда квадрат созвездия может встать в одну из 4 фаз (0, 90, 180, 270)? то для устранения этого эффекта я модему сигнализирую есть или нет фреймовая синхронизация. Если не сложно выложите ссылку на алгоритмы устранение фазовую неоднозначность в метриках?

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

Как раз код то и может врать sm.gif, а вот математика вряд-ли.

По поводу фазовой неоднозначности вы все правильно делаете, так в реальной жизни и поступают.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 25 2011, 14:56
Сообщение #34


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

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



Цитата(Serg76 @ Dec 8 2010, 09:57) *
Имеется ввиду, что главное правило при построении манипуляционного кода заключается в том, что бинарные значения соседних отсчетов в сигнальном созвездии не должны отличаться более, чем на один бит, иначе при возникновении ошибки в принятом символе Вы сразу можете получить несколько ошибочных бит, которые декодеру будет сложнее исправить.

немного офттопик. Мучает меня один вопрос про использование кодов Грея ("созвездия по грею", как например в атаче). С одной стороны понятно, что использование этого кода имеет определенные перспективы, но с другой стороны рассмотрим модем. Можем взять один из модемов уважаемого petrov. В модуляторе, перед мапером ставят кодер грея, затем в демодуляторе, после жесткого решения, ставят декодер грея. Этим на корню убивая эффект от применения этого кода, т.к. берется функция от битов жесткого решения. И пусть ошибка в символе будет только в одном бите, после прохождения декодера грея она может преобразоваться в многобитную ошибку. Вот пример на созвездии в атаче : пусть передавалась точка 1111 (до кодера грея это было числом 1010), а принята точка 0111 (после декодера это будет число 0110). Вместо ошибки в одном бите, мы получили ошибку в двух битах. Так какой тогда смысл в таком кодировании созвездия?

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

Спасибо.

ЗЫ. вижу единственный вариант когда такое кодирование имеет смысл. Это поставить кодирование грея не на входе мапера, а на входе кодера. Тогда декодирование грея можно осуществлять после основного декодера. Но как тогда использовать например, байтовый кодер рида соломона для QPSK или QAM32 остается не понятным.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 25 2011, 15:34
Сообщение #35


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
des00:
Так какой тогда смысл в таком кодировании созвездия?


Каждой точке ставится в соответствие n-разрядный код. Причем так, чтобы чтобы расстояние хэмминга до кодов ближайших точек было равно 1. Имея мягкие решения после демодуляции и демаппинга точки в код получим ошибку в одном бите кодового слова в случае попадания на ближайшую к правильной точку. Чего тут еще декодировать?

Сообщение отредактировал thermit - Jan 25 2011, 15:37
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 25 2011, 15:38
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(des00 @ Jan 25 2011, 20:56) *
Так какой тогда смысл в таком кодировании созвездия?

смысл в том, что малая ошибка в канале приводит к малой ошибке в решении, большая - к большой. исправление ошибок, конечно, никто не отменял
Go to the top of the page
 
+Quote Post
Serg76
сообщение Jan 25 2011, 16:31
Сообщение #37


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(des00 @ Jan 25 2011, 17:56) *
В модуляторе, перед мапером ставят кодер грея, затем в демодуляторе, после жесткого решения, ставят декодер грея. Этим на корню убивая эффект от применения этого кода, т.к. берется функция от битов жесткого решения. И пусть ошибка в символе будет только в одном бите, после прохождения декодера грея она может преобразоваться в многобитную ошибку.

Не может преобразоваться. Похоже здесь какое-то недопонимание. Что такое маппинг? Это отображение Ваших квадбитов на сигнальном созвездии в соответствии с манипуляционным кодом, который Вы хотите применить. Теперь посмотрим со стороны демодулятора, а точнее на его решающее устройство. Как это должно делаться. В решающем устройстве демодулятора хранится таблица с эталонной конструкцией сигнального созвездия, такая же как и в модуляторе. РУ демодулятора принимает решение о переданном символе исходя из правила минимума Эвклидова расстояния (или для простоты его квадрата) между принятым вектором сигнального отсчета (символа) и ближайшего из эталонной кодовой конструкции и ставит в соответствие этому (эталонному) значению жесткое решение в соответствии с манипуляционным кодом. Правда в случае когерентного приема может возникнуть проблема с неоднозначностью фазы, но она устраняется на этапе помехоустойчивого декодера либо диффкодированием. Можно сделать еще и по-другому, когда РУ демодулятора работает в последовательном коде, тогда после получения жесткого решения, битовый поток необходимо будет перекодировать в соответствии с тем же самым мапипуляционным кодом (но при этом надо будет иметь представление как построен последовательный код, чтобы правильно выполнить соответствующую перекодировку). Это что касается принятия жесткого решения. При получении мягкого решения необходимо просто квадратуры с выхода РУ пропустить через квантователь и вообще не заморачиваться каой там манипуляционный код применялся. Эту проблему уже надо будет решать на этапе декодирования.

Кстати, в приведенном Вами сигнальном созвездии правило Грея выполняется.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 25 2011, 16:42
Сообщение #38


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

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



Цитата(thermit @ Jan 25 2011, 09:34) *
Каждой точке ставится в соответствие n-разрядный код.

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

Цитата(vadimuzzz @ Jan 25 2011, 09:38) *
смысл в том, что малая ошибка в канале приводит к малой ошибке в решении, большая - к большой. исправление ошибок, конечно, никто не отменял

это то понятно, вопрос стоит в другом.

Цитата(Serg76 @ Jan 25 2011, 10:31) *
Не может преобразоваться.

если мы говорим о символах в радиоканале, то не спорю. Все так как вы говорите. Но мой вопрос касался не символов в радиоканале, а исходном битовом потоке (сырых данных). Как мне видиться функция преобразования данных в символы(кодировние и декодирование грея, перед мапером) приводит к тому, что количество битовых ошибок в исходных данных увеличиться.

Цитата
Кстати, в приведенном Вами сигнальном созвездии правило Грея выполняется.

да, выполняется, это взято из даташита на чипы AHA. Если не сложно, дайте комментарии к приведенному мной численному примеру.


--------------------
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 25 2011, 16:48
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



по-моему вы путаете алгоритм с конкретной реализацией. в вашей же картинке кубиты - исходные данные - преобразуются маппером в отсчеты квадратур. как раз по правилу Грея - соседние точки в созвездии отличаются в одном бите исходных данных.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Jan 25 2011, 17:23
Сообщение #40


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



2 des00 поддерживаю vadimuzzz

Цитата(des00 @ Jan 25 2011, 19:42) *
если мы говорим о символах в радиоканале, то не спорю. Все так как вы говорите. Но мой вопрос касался не символов в радиоканале, а исходном битовом потоке (сырых данных). Как мне видиться функция преобразования данных в символы(кодировние и декодирование грея, перед мапером) приводит к тому, что количество битовых ошибок в исходных данных увеличиться.

Че-то я не совсем Вас понимаю. Зачем делать еще какие-нибудь промежуточные операции перекодировки, если Вы сразу Ваш исходный поток преобразовываете в отсчеты квадратур по правилу Грея, которое Вы привели на рисунке. Таким же образом делаете и на приемном конце. Можно использовать промежуточную перекодировку, но в случае если у Вас в решающем устройстве прописан какой-нибудь последовательный манипуляционный код, который не соответствует кодировке Грея. А вот потом уже этот битовый поток надо пропустить через декодер, который преобразует Ваш последовательный код в код Грея

2 des00 По-моему сейчас я начинаю понимать, что Вы хотите сказать. Подобная проблема у меня возникла, когда я делал TDMA демодулятор. Так там действительно при обнаружении преамбулы коррелятором необходимо было символы синхропоследовательности перекодировать из кода Грея в последовательный код, т.е. так как они идут в радиоканале, иначе коррелятор не отрабатывает. Может Вы это имеете ввиду?
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 25 2011, 20:53
Сообщение #41


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
des00:
в приведенном мной численном примере, логика такого соответствия дает размножение битовой ошибки по сырым данным


Ваш численный пример содержит 2 бестолковые операции: 1 - кодер грея (чего там кодировать, если решетка уже составлена согласно c кодом грея) 2 - декодер грея. Дальнейшие рассуждения о размножении ошибок смысл теряют.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 26 2011, 05:37
Сообщение #42


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

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



Цитата(vadimuzzz @ Jan 25 2011, 10:48) *
по-моему вы путаете алгоритм с конкретной реализацией............

Цитата(thermit @ Jan 25 2011, 14:53) *
Ваш численный пример содержит 2 бестолковые операции:...........

Чтобы внести ясность, давайте рассмотрим модель модема от petrov qam_fb_gardner_symbol_farrow_sync_fb_phase_sync_agc_2007_06_18.mdl, внизу скрины модулятора и демодулятора, а именно как исходный битовый поток переводится в символы радиоканала. Как мы видим, в этом модеме исходный битовый поток (нас же интересует передача именно данных), обрабатывается по грею и только потом поступает в маппер. На приемном конце происходит тоже самое. Т.е. свойством отображения созвездия по грею обладает не сборка маппер-демаппер, а сборка кодер грея - мапер - демапер - декодер грея. Вот именно от такой сборки я выигрыша и не вижу. Потому что ошибка в один бит в символе, в демапере, после декодера грея может привести к ошибке в двух битах в исходных данных.

Таким образом, я считаю, для того, что бы от созвездия по грею получить выигрыш, нужно либо ставить его до основного кодера (LDPC например) либо интегрировать это свойство в маппер демапер. Рассмотрим маппер. Для начала возьмем нативное созвездие, для реализации которого требуется минимум логики(созвездие в атаче). Функция отображения для этого созвездия примитивнейшая(язык псевдо си)
Код
bit [3 : 0] data;
bit [1 : 0] dat_re, dat_im;
dat_re = data[1 : 0];
dat_im = data[3 : 2];
re = (dat_re[1] ? 2 : -2) + (dat_re[0] ? 1 : -1);
im = (dat_im[1] ? 2 : -2) + (dat_im[0] ? 1 : -1);

демапер для такого созвездия тоже примитивнейший
Код
bit [7 : 0] vector_re, vector_im; // let it be 8 bit signed vectors, and decision levels is maximum
bit [3 : 0] data;
bit [1 : 0] dat_re, dat_im;

dat_re[1] = !vector_re[7]; // take signum bit
dat_re[0] =  vector_re[6];

dat_im[1] = !vector_im[7]; // take signum bit
dat_im[0] =  vector_im[6];

data[1 : 0] = dat_re;
data[3 : 2] = dat_im;


Видно что требуется минимум логики, а вот как реализовать отображение созвездия по грею от AHA? Если с мапером еще более менее понятно, с демапером получится не так просто, т.к. взять комбинационную функцию от определенных битов нельзя (это будет фактически выходной декодер грея, от которого нет толку). Как делают такие демапперы?

Цитата(Serg76 @ Jan 25 2011, 11:23) *
Че-то я не совсем Вас понимаю.

я пытаюсь посмотреть на связку модем + кодер, с точки зрения их оптимальной работы друг с другом и при этом оценить ресурсы которые требуются для реализации этой оптимальности. Помимо этого я не вижу логических обоснований вот этого
Цитата
1. Коды грея я использую. Это улучшает ВER всего потока в два раза.

при том что автор, как я понял, поставил кодер грея перед мапером и декодер грея после демапера.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 26 2011, 05:57
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



нативное созвездие явно не оптимально. например, см. внутренние точки (а для них С/Ш самый хреновый, да) - ошибка в одну позицию в созвездии приведет к 2 битовым ошибкам. и демаппером не понимаю, в чем вопрос. берем квадратуру, пусть re. [-3, -1, 1, 3] <-> [00, 01, 11, 10], для мнимой - аналогично. в чем проблема? если мягкое решение надо, см. , например, аттач
Прикрепленные файлы
Прикрепленный файл  28_03_04.pdf ( 826.52 килобайт ) Кол-во скачиваний: 117
 
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 26 2011, 06:05
Сообщение #44


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

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



Цитата(vadimuzzz @ Jan 25 2011, 23:57) *
нативное созвездие явно не оптимально. например, см. внутренние точки (а для них С/Ш самый хреновый, да) - ошибка в одну позицию в созвездии приведет к 2 битовым ошибкам.

все так, но к таким же ошибкам приведет наличие кодера грея перед нативным созвездием.
Цитата
берем квадратуру, пусть re. [-3, -1, 1, 3] <-> [00, 01, 11, 10], для мнимой - аналогично. в чем проблема?

проблема в алгоритме построения демапера. если мы берем биты [7:6] выходных векторов и ставим функцию преобразования бит(чтобы вектор 1 конвертировать в точку 11), то фактически мы накладываем на эти биты декодер грея. Что thermit назвал бестолковой операцией. Или я не прав?


--------------------
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 26 2011, 06:58
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(des00 @ Jan 26 2011, 12:05) *
все так, но к таким же ошибкам приведет наличие кодера грея перед нативным созвездием.

так это врожденный дефект нативного созвездия. код грея делает ровно одну вещь - увязывает хеммингово расстояние с евклидовым. в ваших обозначениях выше (кстати, с какого перепугу re и im - 2-битовые?)
CODE

re "нативный код" грей
3(3'b011) 11 10
1(3'b001) 10 11
-1(3'b111) 01 01
-3(3'b101) 00 00

я не вижу, чем здесь нативный код проще

Цитата(des00 @ Jan 26 2011, 12:05) *
проблема в алгоритме построения демапера.

демаппер использует симметрии - относительно 0 и относительно +/-2
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 26 2011, 11:10
Сообщение #46


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

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



либо я объяснять не умею, либо туплю. Зайду с другой стороны. Выше мне ответили что дополнительные преобразования данных перед мапером/демапером не нужны и это бестолковые операции. Тогда рассмотрим следующее (в псевдокоде похожий на нативный верилог) :

нативный маппер/демапер для половинки КАМ16
Код
bit [1 : 0] dat2map
signed bit [2 : 0] vector;
bit [1 : 0] dat4demap;

case (dat2map) // native mapper
  2'b00 : vector = -3;  // 101
  2'b01 : vector = -1;  // 111
  2'b10 : vector =  1;  // 001
  2'b11 : vector =  3;  // 011
endcase

case (vector[2:1]) // native demapper :: dat4demap = {~vector[2], vector[1]}
  2'b11 : dat4demap = 2'b01;
  2'b10 : dat4demap = 2'b00;
  2'b00 : dat4demap = 2'b10;
  2'b01 : dat4demap = 2'b11;
endcase


греевский мапер демапер для половинки КАМ16
Код
case (dat2map_gray) // gray mapper
  2'b00 : vector = -3;  // 101
  2'b01 : vector = -1;  // 111
  2'b10 : vector =  3;  // 011
  2'b11 : vector =  1;  // 001
endcase

case (vector[2:1]) // gray demapper :: dat4demap = {~vector[2], ~vector[2] ^ vector[1]}
  2'b11 : dat4demap_gray = 2'b01;
  2'b10 : dat4demap_gray = 2'b00;
  2'b00 : dat4demap_gray = 2'b11;
  2'b01 : dat4demap_gray = 2'b10;
endcase

Сделав так (добавив функции преобразования на входе/выходе)
Код
dat2map_gray   = bin2gray(dat2map);
......native mapper/demapper
dat4demap_gray = gray2bin(dat4demap);

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

Теперь предметные вопросы которые меня интересуют :
1. Так являются ли мапер с преобразованием и греевский мапер эквивалентными?
2. Есть ли разница в BER у них?
3. Если результаты эквивалентны, почему thermit назвал кодер и декодер грея бестолковыми операциями?

Наверное надо было сразу задать вопрос именно так.


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 26 2011, 11:35
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Jan 26 2011, 14:10) *
3. Если результаты эквивалентны, почему thermit назвал кодер и декодер грея бестолковыми операциями?


Эквивалентно это всё, можно сразу входные биты маппить в нужные точки созвездия кодированного по грею, можно отдельно кодировать по грею и маппить в созвездие пронумерованное по порядку. В модельках делал так чтоб видно было вот он код грея.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Jan 26 2011, 11:44
Сообщение #48


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Ну вот теперь вроде как все окончательно прояснилось sm.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 26 2011, 12:00
Сообщение #49


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

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



Цитата(petrov @ Jan 26 2011, 05:35) *
Эквивалентно это всё, можно сразу входные биты маппить в нужные точки созвездия кодированного по грею, можно отдельно кодировать по грею и маппить в созвездие пронумерованное по порядку. В модельках делал так чтоб видно было вот он код грея.

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


--------------------
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 26 2011, 12:13
Сообщение #50


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
des00:
Если результаты эквивалентны, почему thermit назвал кодер и декодер грея бестолковыми операциями?


Потому, что маппер в том посте уже с греем.
В остальном - операции конечно, эквивалентны.
Go to the top of the page
 
+Quote Post
brig01
сообщение Jan 26 2011, 14:07
Сообщение #51


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Стоило отвлечься и тема зажила своей жизнью....

Цитата(des00 @ Jan 26 2011, 18:00) *
теперь понял, в голове отложил. воспринимать кодер грея + маппер и декодер + демапер надо как одно целое. спасибо.


В дополнение к пониманию! Грей оч.хорош когда стоит перед мощным декодером, в моём случае уменьшение ошибок в 2раза перед декодером приводит к выигрышу в 1.5дБ!

Сообщение отредактировал brig01 - Jan 27 2011, 07:03


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 26 2011, 14:28
Сообщение #52


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

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



Цитата(brig01 @ Jan 26 2011, 08:07) *
В дополнение к пониманию! Грей оч.хорош когда стоит перед мощным декодером, уменьшение ошибок в 2раза перед декодером приводит к выигрышу в 1.5дБ!

что то вериться с трудом в 1.5 дБ, но т.к. этой темой я не владею, подожду что гуру скажут.


--------------------
Go to the top of the page
 
+Quote Post
SKov
сообщение Jan 26 2011, 16:13
Сообщение #53


Знающий
****

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



Цитата(des00 @ Jan 26 2011, 17:28) *
что то вериться с трудом в 1.5 дБ, но т.к. этой темой я не владею, подожду что гуру скажут.

Это какая-то средняя температура по госпиталю.wink.gif
Если у вас входная вероятность ошибки для декодера снизилась с 0.2 до 0.1 , то это заметно больше 1.5 дБ (если иметь в виду обычный АБГШ),
а если была вероятность ошибки на входе 10^-6, а стала в два раза меньше , то хорошо, если 0.2 дБ набежит.
Go to the top of the page
 
+Quote Post
brig01
сообщение Jan 27 2011, 05:56
Сообщение #54


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(des00 @ Jan 26 2011, 20:28) *
что то вериться с трудом в 1.5 дБ, но т.к. этой темой я не владею, подожду что гуру скажут.


Для того чтобы верилось без труда нужно знать как ведёт себя кривая BER(EbNo) в области больших ошибок (BER>0.0125) sm.gif

"Гуру" это те у кто принадлежит к группе Гуру?

Цитата(SKov @ Jan 26 2011, 22:13) *
Это какая-то средняя температура по госпиталю.wink.gif
Если у вас входная вероятность ошибки для декодера снизилась с 0.2 до 0.1 , то это заметно больше 1.5 дБ (если иметь в виду обычный АБГШ),
а если была вероятность ошибки на входе 10^-6, а стала в два раза меньше , то хорошо, если 0.2 дБ набежит.


0.23дБ без кодирования )))

Сообщение отредактировал brig01 - Jan 27 2011, 05:58


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 27 2011, 06:28
Сообщение #55


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

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



Цитата(brig01 @ Jan 26 2011, 23:56) *
Для того чтобы верилось без труда нужно знать как ведёт себя кривая BER(EbNo) в области больших ошибок (BER>0.0125) sm.gif

если не сложно огласите пожалуйста, я например вообще незнаю. а то одни говорят что 1.5дБ, другие что 0.2, третьи что 0.23 кому верить совершенно не понятно.


--------------------
Go to the top of the page
 
+Quote Post
brig01
сообщение Jan 27 2011, 06:55
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(des00 @ Jan 27 2011, 12:28) *
если не сложно огласите пожалуйста, я например вообще незнаю. а то одни говорят что 1.5дБ, другие что 0.2, третьи что 0.23 кому верить совершенно не понятно.


Все говорят одно и тоже. sm.gif

Допустим декодер без грея может исправить BER=0.1 для QAM256 EbNo = 8дБ, грей уменьшает количество ошибок на входе декодера в два раза, связка грей+декодер может работь с BER=0.1*2=0.2 для которого EbNo=3дБ, выигрышь = 8дБ-3дБ = 5дБ.


Сообщение отредактировал brig01 - Jan 27 2011, 07:04


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 27 2011, 07:01
Сообщение #57


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

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



Цитата(brig01 @ Jan 27 2011, 00:55) *
Допустим декодер без грея может исправить BER=0.1 для QAM256 EbNo = 8дБ, грей уменьшает количество ошибок на входе декодера в два раза, связка грей+декодер может работь с BER=0.1*2=0.2 для которого EbNo=3дБ, выигрышь = 8дБ-3дБ = 5дБ.

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


--------------------
Go to the top of the page
 
+Quote Post
brig01
сообщение Jan 27 2011, 07:07
Сообщение #58


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(des00 @ Jan 27 2011, 13:01) *
ничего не понял, кроме того что выигрыш стал уже 5дБ. знаний не хватает, как будет время углублюсь в теорию, тогда будет ясно что к чему.


Ничего страшного бывает и на "гуру" проруха, постройте всётаки кривую BER(EbNo) для BPSK, всё встанет на свои места sm.gif


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
Serg76
сообщение Jan 27 2011, 07:59
Сообщение #59


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

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(brig01 @ Jan 27 2011, 10:55) *
Все говорят одно и тоже. sm.gif

Допустим декодер без грея может исправить BER=0.1 для QAM256 EbNo = 8дБ, грей уменьшает количество ошибок на входе декодера в два раза, связка грей+декодер может работь с BER=0.1*2=0.2 для которого EbNo=3дБ, выигрышь = 8дБ-3дБ = 5дБ.

Какое отношение Eb/No необходимо на входе декодера при использовании КАМ256 и кодировки Грея для обеспечения Pb=1e-6? Или может сразу приведете все семейство характеристик BER.

И что за декодер все-таки используется? И каков алгоритм декодирования?
Go to the top of the page
 
+Quote Post
SKov
сообщение Jan 27 2011, 16:38
Сообщение #60


Знающий
****

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



Цитата(brig01 @ Jan 27 2011, 09:55) *
Допустим декодер без грея может исправить BER=0.1 для QAM256 EbNo = 8дБ, грей уменьшает количество ошибок на входе декодера в два раза, связка грей+декодер может работь с BER=0.1*2=0.2 для которого EbNo=3дБ, выигрышь = 8дБ-3дБ = 5дБ.

На самом деле, конечно, 5 дБ не получится. Просто потому, что в плохом канале Грей даст далеко не двукратный выигрыш по
вероятности, т.к. весьма вероятны переходы не в соседние слова.
Возможно, когда здесь говорили о 1.5 дБ - это как раз был наибольший выигрыш Грея
при некотором оптимальном соотношении сигнал/шум.. Что-то маловато, мне кажется..
Наверняка это уже сто раз подсчитано и написано в ста местах.
Если у кого есть ссылка - киньте для публики wink.gif
Go to the top of the page
 
+Quote Post
brig01
сообщение Jan 28 2011, 04:39
Сообщение #61


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 7-05-10
Пользователь №: 57 120



Цитата(SKov @ Jan 27 2011, 22:38) *
На самом деле, конечно, 5 дБ не получится. Просто потому, что в плохом канале Грей даст далеко не двукратный выигрыш по
вероятности, т.к. весьма вероятны переходы не в соседние слова.
Возможно, когда здесь говорили о 1.5 дБ - это как раз был наибольший выигрыш Грея
при некотором оптимальном соотношении сигнал/шум.. Что-то маловато, мне кажется..
Наверняка это уже сто раз подсчитано и написано в ста местах.
Если у кого есть ссылка - киньте для публики wink.gif


1.5дБ это то что я увидел для случая QAM256,LDPC, R=5/6 для фрейма 10000, 12итер. для канала AWGN , в "железе" не отценивал


--------------------
Ох не лёгкая это работа попасть в группу "свой"....
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 28 2011, 05:03
Сообщение #62


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



тут есть по-простому, с m-скриптами и теоретическими выкладками:

http://www.dsplog.com/2008/06/05/16qam-bit...r-gray-mapping/

http://www.dsplog.com/2007/12/09/symbol-er...ate-for-16-qam/
Go to the top of the page
 
+Quote Post
SKov
сообщение Jan 28 2011, 08:52
Сообщение #63


Знающий
****

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



Цитата(brig01 @ Jan 28 2011, 07:39) *
1.5дБ это то что я увидел для случая QAM256,LDPC, R=5/6 для фрейма 10000, 12итер. для канала AWGN , в "железе" не отценивал

Ну, для оценки эффекта именно от кода Грея последующая обработка уже не имеет
никакого значения. Но все равно интересно wink.gif
А какое уменьшение вероятности ошибки на бит дал Грей в вашем случае? Понятно, что при маленьком шуме будет почти в два раза уменьшение, а при большом шуме уменьшения почти совсем не будет. Так где ваш случай между этими двумя крайними точками?
А где у вас эта штука должна работать? И какой LDPC брали, если не секрет.
Если секрет - то можно в личку wink.gif
P/S/ Только сейчас сообразил, что у Вас QAM256, значит Грей может дать выигрыш по вероятности до 4-х раз.
Go to the top of the page
 
+Quote Post
kill_LDPC
сообщение Feb 2 2011, 20:38
Сообщение #64





Группа: Новичок
Сообщений: 1
Регистрация: 2-02-11
Пользователь №: 62 661



подскажите пожалуйста возможно ли на приемной стороне не зная проверочной матрицы построить ее по входному потоку?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:50
Рейтинг@Mail.ru


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