|
|
  |
LDPC+QAM256, Создание QC-LDPC-BC пров.матриц под модуляцию QAM256 |
|
|
|
Dec 9 2010, 21:23
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(brig01 @ Dec 9 2010, 17:27)  P.S.S. Сейчас читаю Скляра, оч. тяжОлое чтиво, есть что нить по достпупнее, в плане подачи матерьяла?) Вообще, туго вам придется, если нет опыта в этой области. Там одних только методов постоения LDPC - добрый десяток, да и модификаций декодеров не меньше. И, кстати, QC-LDPC - это разве только сначала кажется приличным классом кодов. Единственное их достоинство - легкость построения. И кодирования. А вообще, если сложность кодера не очень критична, а главное - качество кода, то советую глянуть PG-LDPC. Но еще раз скажу, если это вам курсовик надо написать или диплом - то сойдет и так. А если серьезную разработку надо сделать, то с полгодика надо статьи почитать и "землю порыть". Одной местной конференцией вам не обойтись. Потому как это тема - "цельная наука"  ))
|
|
|
|
|
Dec 10 2010, 06:05
|
Участник

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

|
Цитата(SKov @ Dec 10 2010, 03:23)  Вообще, туго вам придется, если нет опыта в этой области. Там одних только методов постоения LDPC - добрый десяток, да и модификаций декодеров не меньше. И, кстати, QC-LDPC - это разве только сначала кажется приличным классом кодов. Единственное их достоинство - легкость построения. И кодирования. А вообще, если сложность кодера не очень критична, а главное - качество кода, то советую глянуть PG-LDPC. Но еще раз скажу, если это вам курсовик надо написать или диплом - то сойдет и так. А если серьезную разработку надо сделать, то с полгодика надо статьи почитать и "землю порыть". Одной местной конференцией вам не обойтись. Потому как это тема - "цельная наука"  )) Опыт дело наживное было бы желание. QC-LDPC-BC используеться в WiMax и GhM сетях, янки плохое не будут закладывать, есть другие альтернативы когда размер фрейма на десятки тысяч бит? Кстате их я реализовал/отладил в железе  . Сложность критична, нужно упихать в ограниченный ресурс(EP1C12) на скорости до 180Мбит. Так то хотел кандидатскую написать  )). А какие ещё есть конференции на эту тему? 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
--------------------
Ох не лёгкая это работа попасть в группу "свой"....
|
|
|
|
|
Dec 10 2010, 08:51
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(brig01 @ Dec 10 2010, 09:05)  QC-LDPC-BC используеться в WiMax и GhM сетях, янки плохое не будут закладывать Ну, с таким подходом мы из состояния банановой республики уже никогда не вылезем.  Кстати, те же янки используют PG-коды в 10-гигабитном эзернете. Там , правда, длина небольшая - 2048. И во флеш-памяти (там длина около 10000). Если критична сложность кодера, то янки просто приписываеют к проверочной матрице двойную единичную матрицу  ) Тоже нормальное дело, если хочется подпортить качество кода ради упрощения кодирования.  Цитата А какие ещё есть конференции на эту тему? Я не знаю. Вообще, конференция полезна, если вы совсем "чайник" и вам надо получить начальную "ориентацию в пространстве" и легкий дружеский пинок в нужном напрвлении. Либо, если вы уже гуру, но какой-то очень частный вопрос не можете раскусить - тогда тоже могут помочь. А использовать конференцию для решения задачи обучения - это последнее дело. Тут вам быстро расскажут про "модификацию проверочной матрицы" в процессе декодирования. Вы потом долго переучиваться будете Цитата P.S. В QC-LDPC-BC сильно не понравилось что для эффективного декодирования требуеться от 10 итераций и выше. Это вообще какая-то ерунда, которую я не понимаю. Количество итераций зависит в первую очередь от уровня шума. Даже плохой код будет быстро декодироваться при малом уровне шумов. И даже хороший код требует многих итераций при большом шуме. Все очень относительно. Вы можете силовым приемом ограничить число итераций на приемлемом уровне - и смотреть, что получается.
|
|
|
|
|
Dec 10 2010, 09:51
|
Участник

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

|
Цитата(SKov @ Dec 10 2010, 14:51)  Ну, с таким подходом мы из состояния банановой республики уже никогда не вылезем.  Кстати, те же янки используют PG-коды в 10-гигабитном эзернете. Там , правда, длина небольшая - 2048. И во флеш-памяти (там длина около 10000). Если критична сложность кодера, то янки просто приписываеют к проверочной матрице двойную единичную матрицу  ) Тоже нормальное дело, если хочется подпортить качество кода ради упрощения кодирования.  Я не знаю. Вообще, конференция полезна, если вы совсем "чайник" и вам надо получить начальную "ориентацию в пространстве" и легкий дружеский пинок в нужном напрвлении. Либо, если вы уже гуру, но какой-то очень частный вопрос не можете раскусить - тогда тоже могут помочь. А использовать конференцию для решения задачи обучения - это последнее дело. Тут вам быстро расскажут про "модификацию проверочной матрицы" в процессе декодирования. Вы потом долго переучиваться будете Это вообще какая-то ерунда, которую я не понимаю. Количество итераций зависит в первую очередь от уровня шума. Даже плохой код будет быстро декодироваться при малом уровне шумов. И даже хороший код требует многих итераций при большом шуме. Все очень относительно. Вы можете силовым приемом ограничить число итераций на приемлемом уровне - и смотреть, что получается. 1. На начальном этапе мне и моему начальству нужен был результат, результат проще добиться когда задача не сложная, тем более когда кодированием не знанимался, поэтому QC-LDPC-BC без вариантов. 2.Конференции всегда важны хоть чайник ты, хоть утюг, хоть гуру из тебета  3.Количество итераций зависит от ресурса, чем его больше тем больше итераций, у меня без всяких "силовых", тупо в EP1C12 не лезет больше 3итераций. В моём случае на R=5/6 QAM256 я получил выигрышь 6дБ (замеренно в железе), этого мало, нужно ещё 1дБ. Если б у меня была возможность добавить ещё итераций 7 было бы лучшe причём сильно, кстате после 16итераций выигрыша практически нет. Поэтому я и говорю что для эффективного ДЕкодирования (масимального выигрыша в дБ) нужно 10итераций. P.S. Переделаю схему FEC на выходных как посоветовал камрад petrov, отпишусь что получилось
--------------------
Ох не лёгкая это работа попасть в группу "свой"....
|
|
|
|
|
Dec 10 2010, 11:17
|
Участник

Группа: Участник
Сообщений: 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
--------------------
Ох не лёгкая это работа попасть в группу "свой"....
|
|
|
|
|
Dec 10 2010, 11:39
|
Участник

Группа: Участник
Сообщений: 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
--------------------
Ох не лёгкая это работа попасть в группу "свой"....
|
|
|
|
|
Dec 10 2010, 12:16
|
Участник

Группа: Участник
Сообщений: 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
--------------------
Ох не лёгкая это работа попасть в группу "свой"....
|
|
|
|
|
Dec 10 2010, 13:18
|
Участник

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

|
Цитата(petrov @ Dec 10 2010, 19:09)  Смотрите чтобы не получалось неправильных метрик, может нормально у вас сделано, а может и лучше можно, не берусь судить. А как можно проверить на появление неправельных метрик? Если метрик неправельных нет, это лучший вариант?
--------------------
Ох не лёгкая это работа попасть в группу "свой"....
|
|
|
|
|
Dec 10 2010, 13:45
|
Участник

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

|
Цитата(petrov @ Dec 10 2010, 19:34)  Это уже на исследование целое тянет, лучше поискать статьи по оптимальному маппингу-демаппингу 256QAM. Лана, в метриках я уверен, у меня были моменты когда я метрики считал не правельно, это сильно влияет на выходной BER, статьи поищу, всё равно их нужно по другому пересчитать для double Gray-code labeling. В середине недели отпишусь как получилось с кодированием только младших бит.
--------------------
Ох не лёгкая это работа попасть в группу "свой"....
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|