9Заключение
В выпускной магистерской работе исследованы пути построения приемников цифровом телевещании. По схеме реализации кодирования в системе DVB-T2 созданы программы среде MatLAB для двух случаев. Благодаря программе наглядно видна работа всей системы.
Из графиков размытия сигнальных созвездий в канале сделан вывод, что применение Релеевских замирании на размытие сигнального созвездия практически не влияет.
Так же, что ключевую роль при восстановлении сигнала играет LDPC декодер. Он не просто декодирует принятый сигнал, а полностью восстанавливает его изначальную форму, приводя параметры сигнала к исходным до передачи по каналу связи. На выходе декодера реализована возможность наблюдения количества итераций при декодировании.
Из графиков выходных показателей итераций в LDPS кодах сделан вывод, что скорость кода маленькая, следовательно, его избыточность максимальна, это приводят к выполнению алгоритмом максимального числа итераций: 50. Но, благодаря перемежению и LDPC декодированию, данные восстанавливаются безошибочно, несмотря на такое количество итераций.
Сравнив эти показатели пришли к выводу, что коду не хватает оперативной памяти для быстрого исправления ошибок, так как данный алгоритм требователен к объему оперативной памяти и за 50 итераций не успевает исправить все ошибки. Но на выходе мы видим другие зависимости, поэтому графики не измены.
Следовательно, лучше установить многоядерный процессор. Это будет более экономично и есть вариант даже использования приемника с аккумулятором. Так же будет удобно применение в машине и в любом месте, вне дома.
По данной теме имеются публикации в научном журнале «Вестник».
Приложение А. Программная реализация без применения Релеевских замираний канала
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);
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.rfwireless-world.com/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
Приложение Б. Библиография
Прокис Джон. Цифровая связь. Пер. с англ. / Под ред. Д.Д. Кловского. - М.: Радио и связь. 2000. - 800 с.
Теория электрической связи: учебное пособие / К.К. Васильев, В.А. Глушков, А.В. Дормидонтов, А.Г. Нестеренко;под общ. ред. К.К. Васильева. – Ульяновск: УлГТУ, 2008. – 452 с.
Цифровое телевидение: Учебное пособие для ВУЗов / В.Л. Карякин – М.: СОЛОН-Пресс, 2008. – 272 с.
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 р.
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 р.
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 с.
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.
Вишневский В.М., Ляхов А.И., Портной С.Л., Шахнович И.В. Широкополосные беспроводные сети передачи информации. М.: Техносфера, 2005. – 592 с.
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.
|