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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> LDPC код из стандарта DVB-S2, BER, отношение сигнал-шум, DVB-S2, LDPC
Vehfl
сообщение Nov 13 2012, 10:33
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 9-11-12
Пользователь №: 74 305



Есть программа на 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 ( 682.13 килобайт ) Кол-во скачиваний: 181
 
Go to the top of the page
 
+Quote Post
Serg76
сообщение Nov 13 2012, 13:59
Сообщение #2


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

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



Цитата(Vehfl @ Nov 13 2012, 13:33) *
Есть программа на 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 при разных С/Ш - все работает, ошибки исправляются. Ищите ошибки в модели. Товарищи, которые делали по стандарту, говорят, что в матрицах опечаток нет.
Go to the top of the page
 
+Quote Post
Vehfl
сообщение Nov 13 2012, 16:24
Сообщение #3





Группа: Участник
Сообщений: 14
Регистрация: 9-11-12
Пользователь №: 74 305



Цитата(Serg76 @ Nov 13 2012, 17:59) *
Промоделировал своими средствами для QPSK 1/4 при разных С/Ш - все работает, ошибки исправляются. Ищите ошибки в модели. Товарищи, которые делали по стандарту, говорят, что в матрицах опечаток нет.

Случайно не в матлабе моделировали? У меня в матлабе при отношении С/Ш=0, BER=0. Ведь физически такого не может быть?

Код программы в матлабе:
CODE
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
Go to the top of the page
 
+Quote Post
Serg76
сообщение Nov 13 2012, 16:30
Сообщение #4


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

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



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

Сообщение отредактировал Serg76 - Nov 13 2012, 16:33
Go to the top of the page
 
+Quote Post
Mogwaika
сообщение Nov 13 2012, 16:49
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 11-09-11
Пользователь №: 67 121



Цитата(Vehfl @ Nov 13 2012, 20:24) *
Случайно не в матлабе моделировали? У меня в матлабе при отношении С/Ш=0, BER=0. Ведь физически такого не может быть?


Почему не может? у меня 9.259259259259259e-07 получилось... а могло и не получиться.
Запускайте подольше и параллельно несколько потоков.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Nov 13 2012, 17:18
Сообщение #6


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

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



Цитата(Vehfl @ Nov 13 2012, 19:24) *
У меня в матлабе при отношении С/Ш=0, BER=0. Ведь физически такого не может быть?

Для режима QPSK 1/4 вполне может быть, код достаточно мощный, а вот то, что он вносит ошибки при их отсутствии в канале, то это уже ошибка в модели.

по спецификации для QPSK 1/4 FER = 1e-7 при Es/No = -2,35 дБ.

Сообщение отредактировал Serg76 - Nov 13 2012, 17:10
Go to the top of the page
 
+Quote Post
slash_spb
сообщение Nov 15 2012, 15:49
Сообщение #7


Частый гость
**

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



У вас реализация с плавающей точкой? В реализациях с фиксированной точкой декодер начинает сам вносить ошибки при больших снрах когда нет проверки на четность(наличию ошибок в блоке) после каждой итерации, либо что-то с нормировкой мягких решений на входе декодера. Ну это так, вдруг поможет. Хотя наверное ошибка в модели.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Nov 15 2012, 16:52
Сообщение #8


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

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



Цитата(slash_spb @ Nov 15 2012, 19:49) *
У вас реализация с плавающей точкой? В реализациях с фиксированной точкой декодер начинает сам вносить ошибки при больших снрах когда нет проверки на четность(наличию ошибок в блоке) после каждой итерации, либо что-то с нормировкой мягких решений на входе декодера.

такого я еще не слышал sm.gif
Go to the top of the page
 
+Quote Post
icyrock
сообщение Nov 19 2012, 08:44
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-04-07
Из: Санкт-Петербург
Пользователь №: 27 351



Стандарт точен. Я сам проверял (у меня собственная модель) на всех кодовых скоростях.

Сообщение отредактировал icyrock - Nov 19 2012, 08:53
Go to the top of the page
 
+Quote Post
Vehfl
сообщение Nov 19 2012, 08:58
Сообщение #10





Группа: Участник
Сообщений: 14
Регистрация: 9-11-12
Пользователь №: 74 305



Цитата(slash_spb @ Nov 15 2012, 18:49) *
У вас реализация с плавающей точкой? В реализациях с фиксированной точкой декодер начинает сам вносить ошибки при больших снрах когда нет проверки на четность(наличию ошибок в блоке) после каждой итерации, либо что-то с нормировкой мягких решений на входе декодера. Ну это так, вдруг поможет. Хотя наверное ошибка в модели.


Пожалуйста можете поподробней и что вы имеете ввиду под реализацией с фиксированной точкой?

Go to the top of the page
 
+Quote Post
slash_spb
сообщение Nov 20 2012, 07:37
Сообщение #11


Частый гость
**

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



Цитата(Vehfl @ Nov 19 2012, 11:58) *
Пожалуйста можете поподробней и что вы имеете ввиду под реализацией с фиксированной точкой?


Имел ввиду реализацию декодера с фиксированной точкой, т.е. все метрики имеют ограниченный динамический диапазон. При работе с таким декодером сталкивался с тем что декодер вносил ошибки и было это конечно от неправильной реализации алгоритма декодирования, хотя он как вносил ошибки так и исправлял. Как вариант может у вас реализация декодера с фиксированной точкой и переполнение метрик наступает только на на указанных вами скоростях?
Go to the top of the page
 
+Quote Post
Vehfl
сообщение Nov 22 2012, 13:03
Сообщение #12





Группа: Участник
Сообщений: 14
Регистрация: 9-11-12
Пользователь №: 74 305



Не могли бы поделиться алгоритмом декодирования который использовали. Спасибо.
Go to the top of the page
 
+Quote Post
slash_spb
сообщение Nov 22 2012, 15:31
Сообщение #13


Частый гость
**

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



Цитата(Vehfl @ Nov 22 2012, 16:03) *
Не могли бы поделиться алгоритмом декодирования который использовали. Спасибо.


Алгоритм декодирования MIN-SUM, такой же как в DVB-S2, только нет коррекции. Ну еще он с одним проходом по строкам кодовой матрице. У меня он есть на матлабе, на си нет. Вам исходник нужен, я правильно понял?
Go to the top of the page
 
+Quote Post
Vehfl
сообщение Nov 26 2012, 15:18
Сообщение #14





Группа: Участник
Сообщений: 14
Регистрация: 9-11-12
Пользователь №: 74 305



Цитата(slash_spb @ Nov 22 2012, 18:31) *
Вам исходник нужен, я правильно понял?

Да, это было бы прекрасно иметь наглядный алгоритм декодирования.
Go to the top of the page
 
+Quote Post
dimez
сообщение Nov 27 2012, 05:12
Сообщение #15





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



Могу выправить вам алгоритм и проконсультировать, за плату. Пишите в личку.
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 Текстовая версия Сейчас: 15th June 2025 - 19:04
Рейтинг@Mail.ru


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