|
|
  |
Многоуровневый декодер, декодер Витерби |
|
|
|
Feb 13 2013, 05:30
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Написал программу многоуровневого кодера декодера, построил графики для жестких мягких решений и вот что получил Вот код: CODE clear all; close all; clc
%% Input parametrs robustens_mode = 2; % Режим помехоустойчивости 1; 2; 3; 4; spectrum_mode = 5; % Размещение спектра 4.5кГц - 0; 5кГц - 1; 9кГц - 2; 10кГц - 3; 18кГц - 4; 20кГц - 5;
level_protection = 0; % Уровень защиты для QAM16 - 0; QAM4 - 1;
QAM_Pmax = 2; % 4-QAM Pmax = 1; 16-QAM Pmax = 2;
%% Initialization parametrs
% Колличество ячеек N_mux_list = [167, 190, 359, 405, 754, 846; ... 130, 150, 282, 322, 588, 662; ... NaN, NaN, NaN, 288, NaN, 607; ... NaN, NaN, NaN, 152, NaN, 332];
% Кодовые скорости канала Rate = cell(2,2,1); Rate{1,1} = [1 3]; Rate{1,2} = [2 3]; Rate{2,1} = [1 2]; Rate{2,2} = [NaN];
% Схема выкалывания канала puncpat = cell(2,2,1); puncpat{1,1} = [1 1 1 0 0 0]; puncpat{1,2} = [1 1 0 0 0 0 1 0 0 0 0 0]; puncpat{2,1} = [1 1 0 0 0 0]; puncpat{2,2} = [NaN];
% Перфорирование остаточных 36 бит puncpat_Rp = cell(12,1); puncpat_Rp{1,1} = [1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0]; puncpat_Rp{2,1} = [1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0]; puncpat_Rp{3,1} = [1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0]; puncpat_Rp{4,1} = [1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0]; puncpat_Rp{5,1} = [1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0]; puncpat_Rp{6,1} = [1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0]; puncpat_Rp{7,1} = [1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0]; puncpat_Rp{8,1} = [1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0]; puncpat_Rp{9,1} = [1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0]; puncpat_Rp{10,1} = [1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0]; puncpat_Rp{11,1} = [1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0]; puncpat_Rp{12,1} = [1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0];
Rp = zeros(1,QAM_Pmax); for k = 1:QAM_Pmax Rp(k) = (2*N_mux_list(robustens_mode,spectrum_mode+1)-12) - Rate{level_protection+1,k}(2)... *floor((2*N_mux_list(robustens_mode,spectrum_mode+1) - 12)./Rate{level_protection+1,k}(2)) + 1; end
% Кодовая скорость материнского кода mother_code = 1/6;
% Задание таблицы переходов trellis = poly2trellis(7,[133, 171, 145, 133,171,145]);
Mbase = [2 4]; M=2.^Mbase(QAM_Pmax);
a = [1/sqrt(2), 1/sqrt(10)]; % Коэффициент нормализации QAM
% Модуляция QAM16 и QAM4 if QAM_Pmax == 1 SMQAM = [1+1*i, -1+1*i, -1-1*i, 1-1*i].*a(QAM_Pmax); elseif QAM_Pmax == 2 SMQAM = [3+3*i, 3-1*i, 3+1*i, 3-3*i,... -1+3*i, -1-1*i, -1+1*i, -1-3*i,... 1+3*i, 1-1*i, 1+1*i, 1-3*i,... -3+3*i, -3-1*i, -3+1*i, -3-3*i].*a(QAM_Pmax); end
% Расчет колличества бит L_2 = 0; for k = 1:QAM_Pmax Mp_2(k) = Rate{level_protection+1,k}(1)*floor((2*N_mux_list(robustens_mode,spectrum_mode+1 )... - 12)./Rate{level_protection+1,k}(2)); % Формула 77 end L_2 = sum(Mp_2);
% Задаем схему выкалывания punc = cell(QAM_Pmax,1); for n = 1:QAM_Pmax Num_puncpat = ((Mp_2(n)+ 6)/mother_code)./length(puncpat{level_protection+1,n}); m = []; for k = 1:ceil(Num_puncpat) m = [m ,puncpat{level_protection+1,n}]; end punc{n,:} = [m(1:Num_puncpat*length(puncpat{level_protection+1,n}) - 36), puncpat_Rp{Rp(n),1}]; end % QAM модулятор H_QAM = modem.genqammod('Constellation', SMQAM, 'InputType', 'bit');
% Пременные x_in = 2*N_mux_list(robustens_mode,spectrum_mode+1); pBuff_out = zeros(x_in, 1); decoded_out = []; Input_Data_coder = []; N_simbol = 1000;
%% Программа кодера декодера tblen = 35; quant = 3; AmplQuant = 0.4; delta = 2*AmplQuant/(2^quant-2); for EbNo = 1:20 for l = 1:N_simbol %% Формирование последовательности бит Input_Data=randi([0 1],L_2,1); Input_Data_coder = [Input_Data_coder; Input_Data]; %% Сверточный кодер init_state = 0; if QAM_Pmax == 2 [In_Data_1] = convenc([Input_Data(Mp_2(1)+1:Mp_2(1)+Mp_2(2)); [0 0 0 0 0 0]'],trellis,punc{2, 1}, init_state); [In_Data_0] = convenc([Input_Data(1:Mp_2(1)); [0 0 0 0 0 0]'],trellis,punc{1, 1}, init_state); else [In_Data_0] = convenc([Input_Data(1:Mp_2(1)); [0 0 0 0 0 0]'],trellis,punc{1, 1}, init_state); end %% Мультиплексор if QAM_Pmax == 2 pBuff_out = [In_Data_0; In_Data_1]; else pBuff_out = In_Data_0; end % Отображение на созвездие QAM Mod_qam=modulate(H_QAM,pBuff_out); %% Канал передачи AWGN k=log2(M); Qam_rx=awgn(Mod_qam,EbNo+10*log10(k*1/2),'measured','dB'); %% Расчет ОСШ канала EsNo = EbNo*k/2; SNR = sum(real(Qam_rx).^2 + imag(Qam_rx).^2)/(EsNo*M);
%% Обратное отображение на созвездие QAM HD_QAM = modem.genqamdemod('Constellation', SMQAM, 'OutputType', 'bit','DecisionType', 'approximate llr','NoiseVariance', SNR); Demod_QAM=demodulate(HD_QAM,Qam_rx); %% Демультиплексор if QAM_Pmax == 2 In_Data_0 = Demod_QAM(1:x_in); In_Data_1 = Demod_QAM(x_in+1:2*x_in); else In_Data_0 = Demod_QAM(1:x_in); end %% Декодирование if QAM_Pmax == 2 [x,qcode_1] = quantiz(In_Data_1(:, 1),(-AmplQuant:delta:AmplQuant), (2^quant-1:-1:0)); [x,qcode_0] = quantiz(In_Data_0(:, 1),(-AmplQuant:delta:AmplQuant), (2^quant-1:-1:0)); [decoded_1] = vitdec(qcode_1,trellis,tblen,'trunc','soft', quant, punc{2, 1}); [decoded_0] = vitdec(qcode_0,trellis,tblen,'trunc','soft', quant, punc{1, 1}); else [x,qcode_0] = quantiz(In_Data_0(:, 1),(-AmplQuant:delta:AmplQuant), (2^quant-1:-1:0)); [decoded_0] = vitdec(qcode_0,trellis,tblen,'trunc','soft', quant, punc{1, 1}); end %% Мультиплексор if QAM_Pmax == 2 decoded = [decoded_0(1:Mp_2(1)), decoded_1(1:Mp_2(2))]; else decoded = decoded_0(1:Mp_2(1)); end decoded_out = [decoded_out, decoded]; end %% Подсчет количества ошибок [num,BER]=biterr(Input_Data_coder(1:end),decoded_out(1:end)'); BERcod(EbNo) = BER; fprintf('ОСШ: %f BER: %f \n', EbNo, BER); Input_Data_coder = []; decoded_out = []; end
semilogy(BERcod); grid on;
Вот графики:
Почему выигрышь жестких решений получился такой маленький, где косяк?
Сообщение отредактировал Ivan55 - Feb 13 2013, 15:23
|
|
|
|
|
Feb 13 2013, 07:41
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(des00 @ Feb 13 2013, 09:01)  наверное все же мягких решений %)
И с чего вы решили что маленький ? выигрыш 2дБ, все как теория гуторит %)
ЗЫ. спасибо за рефернсный код, мне скоро в железе подобное делать %) красный график жесткие решения синий без кодирования и где же там выигрыш? То что выигрыш мягких на 2 дБ по сравнению с жесткими это так и получилось) против ниче не имею А за код не за что  это лишь малая часть) обращайтесь если что) У кого какие мысли, давайте обсуждать!
Сообщение отредактировал Ivan55 - Feb 13 2013, 07:36
|
|
|
|
|
Feb 13 2013, 07:48
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Ivan55 @ Feb 13 2013, 01:41)  красный график жесткие решения синий без кодирования и где же там выигрыш? а, вы про это. Код не смотрел, но 1. Вы младший бит в КАМ16 кодировали? 2. Созвездие по грею ставили? 3. Кривые лучше всего до 10^-7 глянуть
--------------------
|
|
|
|
|
Feb 13 2013, 07:54
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(des00 @ Feb 13 2013, 10:48)  а, вы про это. Код не смотрел, но 1. Вы младший бит в КАМ16 кодировали? 2. Созвездие по грею ставили? 3. Кривые лучше всего до 10^-7 глянуть 1. Кодируется все 2. Созвездие если вы посмотрите не по Грею 3. До 10^-7 что вам даст? если наклон кривой уже итак виден, а 10^-5 вполне достаточно
|
|
|
|
|
Feb 13 2013, 08:01
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Ivan55 @ Feb 13 2013, 01:54)  1. Кодируется все 2. Созвездие если вы посмотрите не по Грею 3. До 10^-7 что вам даст? если наклон кривой уже итак виден, а 10^-5 вполне достаточно Блин с QPSK перепутал %( Но для КАМ16 схожие выкладки : 1. ИМХО для скорости 1/2 самое то в паре старший бит передавать как есть, а младший кодировать. 2. Если не по грею то символьная ошибка может привести больше чем к одиночной битовой ошибке. Ну это все при ошибке до соседа. 3. Обычно для систем связи нормируется SNR при 10е-6. А графики кодированного и некодированного во всех книгах имеют точки пересечения когда кодер только мешает чем помогает %) Надо будет ваши сорцы внимательнее посмотреть
--------------------
|
|
|
|
|
Feb 13 2013, 08:13
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(des00 @ Feb 13 2013, 11:01)  Блин с QPSK перепутал %( Но для КАМ16 схожие выкладки : 1. ИМХО для скорости 1/2 самое то в паре старший бит передавать как есть, а младший кодировать. 2. Если не по грею то символьная ошибка может привести больше чем к одиночной битовой ошибке. Ну это все при ошибке до соседа. 3. Обычно для систем связи нормируется SNR при 10е-6. А графики кодированного и некодированного во всех книгах имеют точки пересечения когда кодер только мешает чем помогает %)
Надо будет ваши сорцы внимательнее посмотреть 1. Про какое кодирование вы говорите? 2. Это все проверенно, работает чуть хуже Грея 3. Как нормируют и для чего? А про графики это понятно, так как кодирование избыточное и та энергия которая приходилась на не кодированный бит размазывается на кодированный, тем самым и получается что при низком ОСШ кривая выше а при увелечение идет пересечение и выигрыш, но все таки выигрыш при кодировании 1/2 должен быть хоть пара дБ на жестких решениях
|
|
|
|
|
Feb 13 2013, 08:50
|
Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 26-08-04
Пользователь №: 549

|
У вас что-то не так и с мягкими решениями. При QAM-16 и R=1/2 спектральная эффективность 2 бит/Гц т.е. соответсвует некодированной QPSK. Некодированная QPSK дает Pб=10^-5 при 9.6 дБ, выша система требует более 10 дБ. Посмотрите тут http://www.mathworks.com/help/comm/example...dulation-1.html может поможет.
|
|
|
|
|
Feb 13 2013, 10:09
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(ilya79 @ Feb 13 2013, 11:50)  У вас что-то не так и с мягкими решениями. При QAM-16 и R=1/2 спектральная эффективность 2 бит/Гц т.е. соответсвует некодированной QPSK. Некодированная QPSK дает Pб=10^-5 при 9.6 дБ, выша система требует более 10 дБ. Посмотрите тут http://www.mathworks.com/help/comm/example...dulation-1.html может поможет. Спосибо Юлия) я тоже вижу что чтото не так, но там и жесткие не так)) Что в вашем понимании спектральная эффективность? вы бы хоть полосу сигнала тогда указали А сылку на модель я уже видел, для одного уровня кодирования оно так и у меня получается  но я делаю многоуровневое кодирование, где каждый уровень кодируется своей скоростью, в данном случае у меня первый уровень rate1 = 1/2 второй уровень rate2 = 2/3, потом эти потоки обыединяются то есть Rate_all = (rate1+rate2)/2 = 1/2 Кто нить вообще занимался многоуровневым кодированием???
|
|
|
|
|
Feb 13 2013, 14:30
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(ilya79 @ Feb 13 2013, 13:45)  Не очень понятно где вы нашли Юлию ("Спосибо Юлия" )... Извиняюсь я английский букф плохо понимать)) Цитата(ilya79 @ Feb 13 2013, 13:45)  1. спектральная эффективность -в моем понимании такая же как у всех (можно почитать у Прокиса или Скляра). Потенциально достижимая для QAM-16 4 бит/Гц (на реальных фильтрах конечно поменьше). Спектральная эффективность — отношение скорости передачи данных к используемой полосе пропускания радиоканала. Всегда думал что это и есть определение спектральной эффективности Цитата(ilya79 @ Feb 13 2013, 13:45)  2. Rate_all = (rate1+rate2)/2 -может проблема в этой формуле? (0.5+0,667)/2=0,583 Если вы работаете с Multilevel Codes то суммарная скорость у вас 1+1+1/2+2/3=3.16 бит/символ (Гц). Или Rate_all=3,16/4,0=0,79. Или у вас нет потоков без кодирования? 1+1+1/2+2/3=3.16 бит/символ откуда взято 1+1??? Rate_all=3,16/4,0=0,79 каким это образом кодавая скорость стала связана с модуляцией??? Цитата(ilya79 @ Feb 13 2013, 13:45)  3. Отображение кодированных потоков в сигнальные точки соответсвует оптимальным скоростям для данных точек (J. Huber and U. Wachsmann Capacities of equivalent channels in multilevel coding schemes)? Можно подробней? я думал что отображение всегда идет в соответсвии с таблицей модуляции где определенной группе бит соответствует точка на комплексной плоскости
|
|
|
|
|
Feb 13 2013, 15:11
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(ilya79 @ Feb 13 2013, 18:03)  "1+1+1/2+2/3=3.16 бит/символ откуда взято 1+1???" - Пока не посмотрел ваш код думал что у вас есть некодированые потоки бит (2 потока кодируються , 2 потока передаються без кодирования). По моему все потоки кодируются, там нет не кодированных
|
|
|
|
|
Feb 13 2013, 16:38
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Кажется понял что надо сделать, но че то не могу понять как эт написать, вобщем поток с первого кодера у1 поток со второго у2 надо потоки объединить так чтобы х = (у1(1), у1(2), у2(1), у2(2), у1(3), у1(4), у2(3), у2(4), и т.д.)
Сообщение отредактировал Ivan55 - Feb 13 2013, 16:53
|
|
|
|
|
Feb 14 2013, 05:20
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(ilya79 @ Feb 13 2013, 20:23)  Правильно ли я понял что вы не используете multistage decoder (декодирование составных кодов с мягкими решениями с последующей передачей их другим декодерам) см рис 5 в (tait.e-technik.uni-ulm.de/~baum/research/ofdm_workshop00.ps)? Если да то большого выигрыша от такой схемы наверное не будет. В коде программы все написано, суть программы верна, есть маленькие косяки, но я их исправил) Всем спасибо за помощь, я разобрался) Выигрыш получил такой какой и хотел увидеть))
|
|
|
|
|
Aug 12 2013, 12:27
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Ivan55 @ Aug 12 2013, 13:41)  Всем привет! Стал сравнивать декодер с рекомендациями ITU-R 1615. И возник вопрос, они там приводят S/N-отношение сигнал шум для BER = 10^-4. В программе я в awgn-канал вставлял следующий параметр EbNo+10*log10(k*codeRate). И не могу понять что в ITU-R принимают за S/N? EbNo или EbNo+10*log10(k*codeRate). Если брать EbNo+10*log10(k*codeRate) то 10^-4 у меня получается на 18 дБ для QAM-64, а они приводят параметр в 14,1 дБ. При этом я использую мягкое декодирование LLR 3 битным квантователем по видимому, S/N - это отношение энергии символа к спектральной плотности мощности шума, т.е. Es/No. от него еще нужно перейти к Eb/No учитивая спектральную эффективность модуляции, т.е. Eb/No = Es/No - 10*lg(M), где M - количество бит на символ. это без учета кодирования. кроме того, рекомендация описывает ВЧ диапазон, а он строго говоря далек от СВЧ диапазона, который в первом приближении можно счиать каналом с AWGN. может ваша модель рассчитана для этого канала? а может там приведены характеристики для жесткой схемы декодирования? поищите даташиты на фирменные декодеры, например, Qualcomm, Comtech или др., там приводятся наиболее полные характеристики с учетом различных факторов.
Сообщение отредактировал Serg76 - Aug 12 2013, 12:31
|
|
|
|
|
Aug 12 2013, 17:13
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Serg76 @ Aug 12 2013, 15:27)  по видимому, S/N - это отношение энергии символа к спектральной плотности мощности шума, т.е. Es/No. от него еще нужно перейти к Eb/No учитивая спектральную эффективность модуляции, т.е. Eb/No = Es/No - 10*lg(M), где M - количество бит на символ. это без учета кодирования. Спасибо! Значит если они там приводят 14,1 дБ для QAM-64 то EbNo = 14,1 - 10lg(M*CodeRate), т.е. еще меньше) а у меня 10^-4 достигается при EbNo = 13 дБ Цитата(Serg76 @ Aug 12 2013, 15:27)  кроме того, рекомендация описывает ВЧ диапазон, а он строго говоря далек от СВЧ диапазона, который в первом приближении можно счиать каналом с AWGN. может ваша модель рассчитана для этого канала? а может там приведены характеристики для жесткой схемы декодирования? поищите даташиты на фирменные декодеры, например, Qualcomm, Comtech или др., там приводятся наиболее полные характеристики с учетом различных факторов. Там приводят характеристики кодера в AWGN канале, то есть без замираний и рассинхронизации, но те параметры которые там приведены кажутся завышенными для QAM-64 10^-4 достигается гдето при EbNo = 17 дБ, я поставил декодер Витерби с мягкими решениями со скоростью 0.6 получил 4 дБ выигрыш, но для данных параметров в ITU-R они приводят 14 дБ и это Es/No а не Eb/No, не понимаю как они получили такие цифры
Сообщение отредактировал Ivan55 - Aug 13 2013, 07:42
|
|
|
|
|
Aug 13 2013, 08:49
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
нашел характеристику у AHA для 64КАМ, для некодированной передачи (без потерь демодулятора) BER - 10е-4 достигается при Eb/No = 16,5 дБ. отнимите от этого значения ваш ЭВК 4 дБ и получим 12,5 дБ. как для сверточного кода с кодовым ограничением К=7 и скоростью 0.6, то вроде нормально. А какой код приведен в рекомендации, я не нашел упоминания, может не Витерби, а TPC, например?
а зачем Вам вообще касаться вопросов модуляции, насколько я понимаю демодулятор Вы не проектируете. отбросьте вопросы модуляции и исследуйте характеристики только декодера. а характеристик BER для декодеров Витерби в сети полно.
|
|
|
|
|
Aug 13 2013, 09:29
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Serg76 @ Aug 13 2013, 11:49)  нашел характеристику у AHA для 64КАМ, для некодированной передачи (без потерь демодулятора) BER - 10е-4 достигается при Eb/No = 16,5 дБ. отнимите от этого значения ваш ЭВК 4 дБ и получим 12,5 дБ. как для сверточного кода с кодовым ограничением К=7 и скоростью 0.6, то вроде нормально. У меня гдето так и получается) Цитата(Serg76 @ Aug 13 2013, 11:49)  А какой код приведен в рекомендации, я не нашел упоминания, может не Витерби, а TPC, например? по поводу этого не знаю, я декодировал сверточный код декодером Витерби, да и не думаю что в стандарте DRM кто то применяет ТРС Цитата(Serg76 @ Aug 13 2013, 11:49)  а зачем Вам вообще касаться вопросов модуляции, насколько я понимаю демодулятор Вы не проектируете. отбросьте вопросы модуляции и исследуйте характеристики только декодера. а характеристик BER для декодеров Витерби в сети полно. Мы все проектируем) а демодулятор был нужен чтобы оценить эффективность декодера и сравнить с рекомендациями и стандартом, но возникла проблема, что все вроде правильно делаю, все по теории а цифры в рекомендациях очень отличаются. Есть подозрение, что в ITU-R они приводят в качестве S/N как раз Eb/No
|
|
|
|
|
Aug 13 2013, 09:44
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Ivan55 @ Aug 13 2013, 12:29)  Мы все проектируем) а демодулятор был нужен чтобы оценить эффективность декодера и сравнить с рекомендациями и стандартом ну чтобы оценить корректирующую способность декодера, демодулятор не нужен ). он нужен при оценке помехоустойчивости всего приемного тракта. Цитата(Ivan55 @ Aug 13 2013, 12:29)  по поводу этого не знаю, я декодировал сверточный код декодером Витерби, да и не думаю что в стандарте DRM кто то применяет ТРС так дело не пойдет, нужно иметь представление что с чем сравнивать, а то получается гадание на кофейной гуще. а как они получают на сверточных кодах такие скорости кодирования: 0.71, 0.78 и др? это что за перфорация такая или присутствуют еще какие-нибудь добавки в виде фрамера? Цитата(Ivan55 @ Aug 13 2013, 12:29)  Есть подозрение, что в ITU-R они приводят в качестве S/N как раз Eb/No ну вообще-то говоря, величины совершенно разные, а так не знаю. посмотрите еще другие стандарты.
|
|
|
|
|
Aug 13 2013, 09:54
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Serg76 @ Aug 13 2013, 13:44)  ну чтобы оценить корректирующую способность декодера, демодулятор не нужен ). он нужен при оценке помехоустойчивости всего приемного тракта. да не нужен, но в рекомендациях приводят BER = 10^-4, для QAM-64, при скорости кодирования 0,6 должен достигаться на 15 дБ. Поэтому и ставлю кодер модулятор, канал с учетом этих параметров, прогоняю модулированные данные через канал, демодулирую, декодирую, сравниваю. Если прикинуть по bertool в матлабе относительно EbNo то данные я получаю верные, то есть такая связка рабочая Цитата(Serg76 @ Aug 13 2013, 13:44)  так дело не пойдет, нужно иметь представление что с чем сравнивать, а то получается гадание на кофейной гуще. а как они получают на сверточных кодах такие скорости кодирования: 0.71, 0.78 и др? это что за перфорация такая или присутствуют еще какие-нибудь добавки в виде фрамера? Да это сверточный кодер с жутким выкалыванием) посмотрите стандарт DRM версия помоему 3.1.1 Цитата(Serg76 @ Aug 13 2013, 13:44)  ну вообще-то говоря, величины совершенно разные, а так не знаю. посмотрите еще другие стандарты. посмотреть то можно, но это будет не интересно тем людям которым я буду что то доказывать) есть стандарт DRM, в нем описаны все параметры в соответсвии с которыми надо делать, в нем есть ссылка на ITU-R где для канала AWGN они приводят параметры которые должны получаться) но у меня чет не получается)) соответственно мои данные не аргументированы)
Сообщение отредактировал Ivan55 - Aug 13 2013, 09:57
|
|
|
|
|
Aug 13 2013, 10:07
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Ivan55 @ Aug 13 2013, 12:54)  посмотреть то можно, но это будет не интересно тем людям которым я буду что то доказывать) есть стандарт DRM, в нем описаны все параметры в соответсвии с которыми надо делать, в нем есть ссылка на ITU-R где для канала AWGN они приводят параметры которые должны получаться) но у меня чет не получается)) соответственно мои данные не аргументированы) ок, понятно. там по-ходу еще перемежение присутствует, его тоже надо учитывать. а так-то в алгоритме Витерби и ломаться нечему, он или работает или нет ))). может попробовать для увеличения корректирующей способности использовать MAP - алгоритм, но это правда потребует бОльших вычислительных затрат.
Сообщение отредактировал Serg76 - Aug 13 2013, 10:12
|
|
|
|
|
Aug 13 2013, 10:11
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Serg76 @ Aug 13 2013, 14:07)  ок, понятно. там по-ходу еще перемежение присутствует, его тоже надо учитывать да перемежение я делал) но оно не влияет когда канал Гауссов, оно эффективно при замираниях, когда пакеты ошибок надо размазать по всей длинне символа, а в awgn они ложаться случайно, т.е. равномерно, смысл перемешивать) когда они итак размазаны
|
|
|
|
|
Aug 14 2013, 09:53
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(petrov @ Aug 14 2013, 13:41)  Очевидно по формуле LLR поделить на дисперсию шума, а потом уже квантовать. Дак в формуле LLR она итак поделена на дисперсию) может наоборот умножить?
|
|
|
|
|
Aug 14 2013, 10:08
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(petrov @ Aug 14 2013, 14:00)  Так в чём проблема? Если у вас LLR правильно посчитано, квантуйте и всё, так и должно быть, чем зашумлённей символ, тем меньше доверия к нему. Да, отлично)) именно так) но амлитуду квантования можно взять 0.00000001 а можно и 50, как с этим быть?) неужто наугад)
|
|
|
|
|
Aug 14 2013, 11:51
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(petrov @ Aug 14 2013, 13:17)  А как вы тогда до этого места добрались, ведь для того чтобы LLR для QAM посчитать нужно с порогами сравнивать, т. е. кое-какие решения принимать, поэтому символы должны пройти через АРУ, эквалайзер, ничего плавать не должно? нет, имеется ввиду, что расчет LLR для многопозиционных модуляций сильно зависит от дисперсии и оценка для некоторых бит в символе может иметь сильный разброс, то о чем говорит Иван, мы с ним уже это обсуждали в какой-то ветке. там же я выкладывал доку от AHA, в которой приведен расчет LLR для КАМ созвездий. прежде, чем запускать блок расчета LLR, I/Q составляющие на выходе решающего устройства демодулятора должны быть приведены к эталонным значениям сигнально-кодовой конструкции, только так, иначе правильного расчета не получите.
|
|
|
|
|
Aug 14 2013, 12:03
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Serg76 @ Aug 14 2013, 15:51)  мы с ним уже это обсуждали в какой-то ветке. там же я выкладывал доку от AHA, в которой приведен расчет LLR для КАМ созвездий. прежде, чем запускать блок расчета LLR, I/Q составляющие на выходе решающего устройства демодулятора должны быть приведены к эталонным значениям сигнально-кодовой конструкции, только так, иначе правильного расчета не получите. как я понял из того что там написано, так это просто нормировка на постоянный коэффициент "приведены к эталонным значениям сигнально-кодовой конструкции", но LLR то как плавало так и будет, или я из того документа что то не правильно понял?
|
|
|
|
|
Aug 14 2013, 12:10
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Ivan55 @ Aug 14 2013, 12:08)  А кто знает как правильно границы квантования метрик LLR выбрать, ведь они зависят от ОСШ и амплитуда их плавает? можно вместо полного алгоритма расчета LLR использовать его аппроксимации, например, MAX-LOG и тогда весь расчет можно построить уже для квантованных I/Q составляющих и составить соответствующую табличку, размер которой будет ограничиваться только размерностью модуляции и разрядностью квадратур. Цитата(Ivan55 @ Aug 14 2013, 15:03)  как я понял из того что там написано, так это просто нормировка на постоянный коэффициент "приведены к эталонным значениям сигнально-кодовой конструкции", но LLR то как плавало так и будет, или я из того документа что то не правильно понял? правильно нормировка, а значит ваши максимальные величины не должны вылазить за границы допустимого диапазона
|
|
|
|
|
Aug 14 2013, 17:00
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(petrov @ Aug 14 2013, 16:14)  Это и имел ввиду, после этого не должно возникать вопросов по квантованию, если он LLR посчитал, то в чём проблема то? Возможно) просто не знаю какой диапазон взять для квантователя, как он расчитывается? брать просто максимальное значение метрики, при ОСШ например 1 дБ и в таком диапазоне квантовать, или как... чет туплю
|
|
|
|
|
Aug 14 2013, 21:12
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Ivan55 @ Aug 14 2013, 21:00)  Возможно) просто не знаю какой диапазон взять для квантователя, как он расчитывается? брать просто максимальное значение метрики, при ОСШ например 1 дБ и в таком диапазоне квантовать, или как... чет туплю Всё понял о чём речь, вопрос правильный. Нет смысла учитывать большой диапазон метрик. Берёте для кода BER для AWGN, определяетесь с количеством уровней квантователя, чтобы потерями можно было пренебречь, определяетесь с минимальным Eb/N0 при котором достигается необходимый BER. Квантовать с более мелким шагом LLR более шумных символов бесполезно, грубо говоря там только шум. Вверх для менее шумных символов в лучшем случае на 1 бит уровней квантователя добавить есть смысл, всё что выше просто ограничиваем. В районе этих границ можно немного пооптимизировать квантователь на модельке.
|
|
|
|
|
Aug 15 2013, 04:32
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(petrov @ Aug 15 2013, 00:12)  Берёте для кода BER для AWGN, определяетесь с количеством уровней квантователя, чтобы потерями можно было пренебречь т.е. 3х битный квантователь? в книгах пишут что дальнейшее увеличение не дает существенного результата Цитата(petrov @ Aug 15 2013, 00:12)  определяетесь с минимальным Eb/N0 при котором достигается необходимый BER. необходимый BER = 10^-4, а вот Eb/No = S/N - 10*lg(M*R), где скорость кода R = 0.6, кол-во бит в созвездие M = log2(64) = 6, а S/N в ITU-R равен 15.4, соответственно необходимое Eb/No ~= 9.7 дБ. Т.е. для данного Eb/No посмотреть их уровень, и для такого уровня задать квантователь 3х битный?
|
|
|
|
|
Aug 15 2013, 06:43
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Ivan55 @ Aug 15 2013, 08:32)  т.е. 3х битный квантователь? в книгах пишут что дальнейшее увеличение не дает существенного результата Вот и проверьте правильно ли в книгах пишут, может там немного другой случай имеют ввиду. Цитата(Ivan55 @ Aug 15 2013, 08:32)  необходимый BER = 10^-4, а вот Eb/No = S/N - 10*lg(M*R), где скорость кода R = 0.6, кол-во бит в созвездие M = log2(64) = 6, а S/N в ITU-R равен 15.4, соответственно необходимое Eb/No ~= 9.7 дБ. Т.е. для данного Eb/No посмотреть их уровень, и для такого уровня задать квантователь 3х битный? Т. е. для не AWGN канала в расчёте LLR мы учитываем шум символа, очевидно что может так получиться что в какой то момент искажений не будет, и допустим при Eb/No ~= 9.7 дБ мы должны получить BER = 10^-4, таким образом метрики должны быть проквантованы не грубее чем для случая AWGN.
|
|
|
|
|
Aug 15 2013, 07:05
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(petrov @ Aug 15 2013, 10:43)  Вот и проверьте правильно ли в книгах пишут, может там немного другой случай имеют ввиду. Да, это я тоже проверяю Цитата(petrov @ Aug 15 2013, 10:43)  Т. е. для не AWGN канала в расчёте LLR мы учитываем шум символа, очевидно что может так получиться что в какой то момент искажений не будет, и допустим при Eb/No ~= 9.7 дБ мы должны получить BER = 10^-4, таким образом метрики должны быть проквантованы не грубее чем для случая AWGN. Уже по всякому попробовал, но 10^-4 для таких параметров у меня достигается при ОСШ = 17 дБ, меньше никак... А в ITU-R 1615 приводят 15.3 дБ. Не пойму в чем может быть косяк. Декодер собрал по стандарту, LLR вроде тоже правильно, думал может уровень квантования не правильно задаю, но я его уже по всякому покрутил самый лучший результат дал 17 дБ. Если посмотреть на QAM-64 без кодирования, то у него 10^-4 достигается гдето на 24 дБ, соответсвенно выигрышь я получаю приблизительно 7 дБ. Может декодер 3/5 давать выигрышь больше? то есть 24 дБ - 15.3 дБ = 8.7 дБ, это возможно получить?
|
|
|
|
|
Aug 15 2013, 08:29
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(petrov @ Aug 15 2013, 11:32)  В модели можно ничего не квантовать, так что ошибки в этом месте вы можете легко исключить, а что там на самом деле кто его знает, начиная от неправильного подсчёта С/Ш и заканчивая ошибками в алгоритме декодирования. Кажется догнал, в ITU-R они приводят данные параметры без собственных шумов приемника, и если посмотреть в другую таблицу, то там реальный S/N = 4.5 + x, где х = 15.3, а 4.5 это собственные шумы приемного тракта) Соответственно ОСШ = 19.8 дБ, то есть мне его брать?) если конечно я правильно понял то что они там написали Цитата(Serg76 @ Aug 13 2013, 12:49)  а зачем Вам вообще касаться вопросов модуляции, насколько я понимаю демодулятор Вы не проектируете. отбросьте вопросы модуляции и исследуйте характеристики только декодера. а характеристик BER для декодеров Витерби в сети полно. есть ссылка?
Сообщение отредактировал Ivan55 - Aug 15 2013, 09:32
|
|
|
|
|
Aug 15 2013, 12:06
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата т.е. 3х битный квантователь? в книгах пишут что дальнейшее увеличение не дает существенного результата потери при 8-ми уровневом квантовании примерно 0.2 дБ по сравнению с бесконечным квантованием. думайте, можете ли Вы пренебречь такими потерями? Цитата есть ссылка? есть http://www.google.com.ua/#bav=on.2,or.r_qf...formance+imagesи еще пара доков, что были под рукой
cm701_manual.pdf ( 3.59 мегабайт )
Кол-во скачиваний: 1962
FECDatabook.pdf ( 673.27 килобайт )
Кол-во скачиваний: 355
|
|
|
|
|
Aug 15 2013, 15:32
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Ivan55 @ Aug 15 2013, 10:05)  Декодер собрал по стандарту, LLR вроде тоже правильно, думал может уровень квантования не правильно задаю решайте проблемы по мере поступления, проверьте сначала декодер, хотя бы на BPSK или QPSK. если с ядром декодера все нормально, то переходите к блоку расчета LLR и сравните потом эту связку с промышленными модемами на высоких модуляциях, большой разницы не должно быть, алгоритм Витерби или работает или нет, там ломаться нечему. сделать равномерный квантователь входных I/Q составляющих тоже не должно вызывать проблем. Цитата(Ivan55 @ Aug 15 2013, 10:05)  Может декодер 3/5 давать выигрышь больше? то есть 24 дБ - 15.3 дБ = 8.7 дБ, это возможно получить? для сверточного кода с кодовым ограничением К = 7 с декодированием по Витерби не получится. даже 1/2 не дает такого ЭВК.
Сообщение отредактировал Serg76 - Aug 15 2013, 15:33
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|