Vehfl 0 13 ноября, 2012 Опубликовано 13 ноября, 2012 · Жалоба Есть программа на C++ для моделирования кодов LDPC для стандарта DVB-S2, в программе есть матрицы из стандарта, задающие коды, есть модем и канал связи с возможностью установки отношения Eb/No. Для всех кодов кроме скоростей 2/5, 1/3, 1/4 получились приемлимые графики зависимости BER (Bit Error Rate) от Eb/No, сходящиеся с теоретическими из статей. Для скоростей 1/4, 1/3, 2/5 декодер не работает, сам добавляет ошибки даже, если в канале ошибок не было. Может это опечатка в матрицах, взятых из стандарта. Ниже приведен стандарт. Не знаете с чем может быть связано, что не работают три скорости? DVB_S2_en_302307v010201p.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 13 ноября, 2012 Опубликовано 13 ноября, 2012 · Жалоба Есть программа на C++ для моделирования кодов LDPC для стандарта DVB-S2, в программе есть матрицы из стандарта, задающие коды, есть модем и канал связи с возможностью установки отношения Eb/No. Для всех кодов кроме скоростей 2/5, 1/3, 1/4 получились приемлимые графики зависимости BER (Bit Error Rate) от Eb/No, сходящиеся с теоретическими из статей. Для скоростей 1/4, 1/3, 2/5 декодер не работает, сам добавляет ошибки даже, если в канале ошибок не было. Может это опечатка в матрицах, взятых из стандарта. Ниже приведен стандарт. Не знаете с чем может быть связано, что не работают три скорости? Промоделировал своими средствами для QPSK 1/4 при разных С/Ш - все работает, ошибки исправляются. Ищите ошибки в модели. Товарищи, которые делали по стандарту, говорят, что в матрицах опечаток нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vehfl 0 13 ноября, 2012 Опубликовано 13 ноября, 2012 · Жалоба Промоделировал своими средствами для QPSK 1/4 при разных С/Ш - все работает, ошибки исправляются. Ищите ошибки в модели. Товарищи, которые делали по стандарту, говорят, что в матрицах опечаток нет. Случайно не в матлабе моделировали? У меня в матлабе при отношении С/Ш=0, BER=0. Ведь физически такого не может быть? Код программы в матлабе: format long clear all; r=2/3 H = dvbs2ldpc®; %e=0 % spy(H); % Visualize the location of nonzero elements in H. % Construct a default LDPC encoder object henc = fec.ldpcenc(H); for SNRdB = 0 for n=1:100; % Generate a random binary message msg = randint(1,henc.NumInfoBits,2); % Encode the message codeword = encode(henc, msg); % Verify the parity checks (which should be a zero vector) paritychecks = mod(henc.ParityCheckMatrix * codeword', 2); hdec = fec.ldpcdec(H); % Construct a BPSK modulator object modObj = modem.pskmod('M',2,'InputType','Bit'); % Modulate the signal (map bit 0 to 1 + 0i, bit 1 to -1 + 0i) modulatedsig = modulate(modObj, codeword); % Noise parameters sigma = sqrt(10^(-SNRdB/10)); % Transmit signal through AWGN channel receivedsig = awgn(modulatedsig, SNRdB, 0); % Signal power = 0 dBW % % Visualize received signal % scatterplot(receivedsig) % Construct a BPSK demodulator object to compute % log-likelihood ratios demodObj = modem.pskdemod(modObj,'DecisionType','LLR', ... 'NoiseVariance',sigma^2); % Compute log-likelihood ratios (AWGN channel) llr = demodulate(demodObj, receivedsig); % Decode received signal decodedmsg = decode(hdec, llr); N_err=nnz(decodedmsg-msg); % % Actual number of iterations executed % disp(['Number of iterations executed = ' ... % num2str(hdec.ActualNumIterations)]); % % Number of parity-checks violated % disp(['Number of parity-checks violated = ' ... % num2str(sum(hdec.FinalParityChecks))]); % % Compare with original message % disp(['Number of bits incorrectly decoded = ' ... % num2str(N_err)]) a(n)=N_err; % Общее количество ошибок end BER=sum(a)/(n*henc.NumInfoBits) end BER FER=(nnz(a))/n Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 13 ноября, 2012 Опубликовано 13 ноября, 2012 (изменено) · Жалоба программная модель на C++. попробовал пару режимов, один из них без внесения ошибок в канал, второй при вероятности битовой ошибки на входе где-то 4е-2. в обоих случаях все ошибки были исправлены, точнее во втором случае. Изменено 13 ноября, 2012 пользователем Serg76 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mogwaika 0 13 ноября, 2012 Опубликовано 13 ноября, 2012 · Жалоба Случайно не в матлабе моделировали? У меня в матлабе при отношении С/Ш=0, BER=0. Ведь физически такого не может быть? Почему не может? у меня 9.259259259259259e-07 получилось... а могло и не получиться. Запускайте подольше и параллельно несколько потоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 13 ноября, 2012 Опубликовано 13 ноября, 2012 (изменено) · Жалоба У меня в матлабе при отношении С/Ш=0, BER=0. Ведь физически такого не может быть? Для режима QPSK 1/4 вполне может быть, код достаточно мощный, а вот то, что он вносит ошибки при их отсутствии в канале, то это уже ошибка в модели. по спецификации для QPSK 1/4 FER = 1e-7 при Es/No = -2,35 дБ. Изменено 13 ноября, 2012 пользователем Serg76 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slash_spb 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба У вас реализация с плавающей точкой? В реализациях с фиксированной точкой декодер начинает сам вносить ошибки при больших снрах когда нет проверки на четность(наличию ошибок в блоке) после каждой итерации, либо что-то с нормировкой мягких решений на входе декодера. Ну это так, вдруг поможет. Хотя наверное ошибка в модели. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба У вас реализация с плавающей точкой? В реализациях с фиксированной точкой декодер начинает сам вносить ошибки при больших снрах когда нет проверки на четность(наличию ошибок в блоке) после каждой итерации, либо что-то с нормировкой мягких решений на входе декодера. такого я еще не слышал :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
icyrock 0 19 ноября, 2012 Опубликовано 19 ноября, 2012 (изменено) · Жалоба Стандарт точен. Я сам проверял (у меня собственная модель) на всех кодовых скоростях. Изменено 19 ноября, 2012 пользователем icyrock Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vehfl 0 19 ноября, 2012 Опубликовано 19 ноября, 2012 · Жалоба У вас реализация с плавающей точкой? В реализациях с фиксированной точкой декодер начинает сам вносить ошибки при больших снрах когда нет проверки на четность(наличию ошибок в блоке) после каждой итерации, либо что-то с нормировкой мягких решений на входе декодера. Ну это так, вдруг поможет. Хотя наверное ошибка в модели. Пожалуйста можете поподробней и что вы имеете ввиду под реализацией с фиксированной точкой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slash_spb 0 20 ноября, 2012 Опубликовано 20 ноября, 2012 · Жалоба Пожалуйста можете поподробней и что вы имеете ввиду под реализацией с фиксированной точкой? Имел ввиду реализацию декодера с фиксированной точкой, т.е. все метрики имеют ограниченный динамический диапазон. При работе с таким декодером сталкивался с тем что декодер вносил ошибки и было это конечно от неправильной реализации алгоритма декодирования, хотя он как вносил ошибки так и исправлял. Как вариант может у вас реализация декодера с фиксированной точкой и переполнение метрик наступает только на на указанных вами скоростях? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vehfl 0 22 ноября, 2012 Опубликовано 22 ноября, 2012 · Жалоба Не могли бы поделиться алгоритмом декодирования который использовали. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slash_spb 0 22 ноября, 2012 Опубликовано 22 ноября, 2012 · Жалоба Не могли бы поделиться алгоритмом декодирования который использовали. Спасибо. Алгоритм декодирования MIN-SUM, такой же как в DVB-S2, только нет коррекции. Ну еще он с одним проходом по строкам кодовой матрице. У меня он есть на матлабе, на си нет. Вам исходник нужен, я правильно понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vehfl 0 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба Вам исходник нужен, я правильно понял? Да, это было бы прекрасно иметь наглядный алгоритм декодирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimez 0 27 ноября, 2012 Опубликовано 27 ноября, 2012 · Жалоба Могу выправить вам алгоритм и проконсультировать, за плату. Пишите в личку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться