'MaximumIterationCount', dvb. LDPCNumIterations, ...
'NumIterationsOutputPort', true);
bbFrameTx = false(hBCHEnc. MessageLength,1);
numIterVec = zeros(numFrames, 1);
falseVec = false(dvb. NumPacketsPerBBFrame, 1);
forframeCnt=1:numFrames
% Передатчик, канал и приемник
bbFrameTx(1:dvb. NumInfoBitsPerCodeword) = ...
logical(randi([0 1], dvb. NumInfoBitsPerCodeword, 1));
bchEncOut = step(hBCHEnc, bbFrameTx);
ldpcEncOut = step(hLDPCEnc, bchEncOut);
intrlvrOut = step(hIntrlv, ldpcEncOut);
modOut = step(hMod, intrlvrOut);
chanOut = step(hChan, modOut);
demodOut = step(hDemod, chanOut);
deintrlvrOut = step(hDeintrlv, demodOut);
[ldpcDecOutnumIter] = step(hLDPCDec, deintrlvrOut);
bchDecOut = step(hBCHDec, ldpcDecOut);
bbFrameRx = bchDecOut(1:dvb. NumInfoBitsPerCodeword,1);
% Статистика ошибок
comparedBits = xor(bbFrameRx, bbFrameTx(1:dvb. NumInfoBitsPerCodeword));
packetErr = any(reshape(comparedBits, dvb. NumBitsPerPacket, ...
dvb. NumPacketsPerBBFrame));
PER = step(hPER, falseVec, packetErr');
berMod = step(hBERMod, demodOut<0, intrlvrOut);
berLDPC = step(hBERLDPC, ldpcDecOut, bchEncOut);
% Иттерации LDPC декодера
numIterVec(frameCnt) = numIter;
% Оценка дисперсии шума
noiseVar = step(hMean, step(hVar, chanOut - modOut));
% Точечная диаграмма
update(hRxConst, chanOut);
ifframeCnt == 1
autoscale(hRxConst)
end
end
fprintf('Measured SNR : %1.2f dB\n', 10*log10(1/noiseVar))
fprintf('Modulator BER: %1.2e\n', berMod(1))
fprintf('LDPC BER : %1.2e\n', berLDPC(1))
fprintf('PER : %1.2e\n', PER(1))
distFig = figure; hist(numIterVec, 1:hLDPCDec. MaximumIterationCount-1);
xlabel('Number of iterations'); ylabel('# occurrences'); grid on;
title('Distribution of number of LDPC decoder iterations')
loadberResultsDVBS2Demo. matcBERsnrdb
berFig = figure; semilogy(snrdb, cBER(1,:));
xlabel('SNR (dB)'); ylabel('BER'); grid on
рограммная реализация с применением Релеевских замираний канала
subsystemType = 'QPSK 1/2'; % Созвездие и скорость LDPC кода
EsNodB = 1; % Энергия за символ и отношение PSD шума в дБ
numFrames = 20; % Количество кадров для имитации
% Инициализировать
configureDVBS2Demo
% Системные параметры диспле
dvb
hLDPCEnc = comm. LDPCEncoder(dvb. LDPCParityCheckMatrix);
hLDPCDec = comm. LDPCDecoder(dvb. LDPCParityCheckMatrix, ...
'IterationTerminationCondition', 'Parity check satisfied', ...
'MaximumIterationCount', dvb. LDPCNumIterations, ...
'NumIterationsOutputPort', true);
bbFrameTx = false(hBCHEnc. MessageLength,1);
numIterVec = zeros(numFrames, 1);
falseVec = false(dvb. NumPacketsPerBBFrame, 1);
%=============================http://www. /source-code/MATLAB/Rayleigh-channel-model-matlab-code. html
%Ts=1e-4; % sampling time in second
%Fd=100; % doppler frequency in Hz
%Tau=[0 1.5e-4 2.5e-4]; % delay for the three paths
%PdB=[0, -2, -6]; % power in each of the three paths
% Rayleigh channel model
%h = rayleighchan(Ts, Fd, Tau, PdB);
%==============================
Ts= 5e-4;
Fd= 100;
Tau= [0 1.5e-3 2.5e-3];
PdB= [0, -2, -6];
RayleighChannel = rayleighchan(Ts, Fd, Tau, PdB);
for frameCnt=1:numFrames
% Передатчик, канал и приемник
bbFrameTx(1:dvb. NumInfoBitsPerCodeword) = ...
logical(randi([0 1], dvb. NumInfoBitsPerCodeword, 1));
bchEncOut = step(hBCHEnc, bbFrameTx);
ldpcEncOut = step(hLDPCEnc, bchEncOut);
intrlvrOut = step(hIntrlv, ldpcEncOut);
modOut = step(hMod, intrlvrOut);
chanOut = step(hChan, modOut);
ChannelSignal=filter(RayleighChannel, chanOut);
demodOut = step(hDemod, ChannelSignal);
deintrlvrOut = step(hDeintrlv, demodOut);
[ldpcDecOut numIter] = step(hLDPCDec, deintrlvrOut);
bchDecOut = step(hBCHDec, ldpcDecOut);
bbFrameRx = bchDecOut(1:dvb. NumInfoBitsPerCodeword,1);
% Статистика ошибок
comparedBits = xor(bbFrameRx, bbFrameTx(1:dvb. NumInfoBitsPerCodeword));
packetErr = any(reshape(comparedBits, dvb. NumBitsPerPacket, ...
dvb. NumPacketsPerBBFrame));
PER = step(hPER, falseVec, packetErr');
berMod = step(hBERMod, demodOut<0, intrlvrOut);
berLDPC = step(hBERLDPC, ldpcDecOut, bchEncOut);
% Иттерации LDPC декодера
numIterVec(frameCnt) = numIter;
% Оценка дисперсии шумадв
noiseVar = step(hMean, step(hVar, chanOut - modOut));
% Точечная диаграмма
update(hRxConst, chanOut);
if frameCnt == 1
autoscale(hRxConst)
end
end
fprintf('Measured SNR : %1.2f dB\n', 10*log10(1/noiseVar))
fprintf('Modulator BER: %1.2e\n', berMod(1))
fprintf('LDPC BER : %1.2e\n', berLDPC(1))
fprintf('PER : %1.2e\n', PER(1))
distFig = figure; hist(numIterVec, 1:hLDPCDec. MaximumIterationCount+10);
xlabel('Number of iterations'); ylabel('# occurrences'); grid on;
title('Distribution of number of LDPC decoder iterations')
load berResultsDVBS2Demo. mat cBER snrdb
berFig = figure; semilogy(snrdb, cBER(1,:));
xlabel('SNR (dB)'); ylabel('BER'); grid on
иблиография
1. Прокис Джон. Цифровая связь. Пер. с англ. / Под ред. . - М.: Радио и связь. 2000. - 800 с.
2. Теория электрической связи: учебное пособие / , , ;под общ. ред. . – Ульяновск: УлГТУ, 2008. – 452 с.
3. Цифровое телевидение: Учебное пособие для ВУЗов / – М.: СОЛОН-Пресс, 2008. – 272 с.
4. Digital Video Broadcasting (DVB); Modulator Interface (T2-MI) for a second generation digital terrestrial television broadcasting system (DVB-T2): ETSI TS 102 773 v.1.1.1, 2009. – 36 р.
5. Digital Video Broadcasting (DVB) Implementation guidelines for a second generation digital terrestrial television broadcasting system (DVB-T2): ETSI TS 102 831 v1.1.1. ETSI, 2010. – 213 р.
6. Digital Video Broadcasting (DVB); Frame structure channel coding and modulation for a second generation digital terrestrial television broadcasting system (DVB-T2): ETSI EN 302 755 v1.1.1. ETSI, 2009. – 167 с.
7. Dogan H., Yildiz H., Cooklev T., Acar Y. Coded OFDM wireless systems with generalized prefix /"Application of Information and Communication Technologies (AICT) ", 2012 6th International Conference., pp.1-4. 2012.
8. , , Шахнович беспроводные сети передачи информации. М.: Техносфера, 2005. – 592 с.
9. Chenggao Han, Hashimoto T., Suehiro N. Constellation-rotated vector OFDM and its performance analysis over Rayleigh fading channels / Communications, IEEE Transactions, vol.58, no.3, pp.828-838, 2010.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 |


