Демодуляция LLR и жесткого решения в Simulink

Эта модель показывает улучшение эффективности BER при использовании логарифмического отношения логарифмической правдоподобности (LLR) вместо демодуляции жесткого решения в сверточно закодированной ссылке связи.

Для получения MATLAB™ версии этого примера смотрите Демодуляцию коэффициента логарифмической правдоподобности (LLR).

Setup системы

Эта модель примера моделирует сверточно закодированную систему связи, имеющую один передатчик, канал AWGN и три приемника. Сверточный энкодер имеет скорость кода 1/2. Система использует 16-QAM модуляцию. Модулированный сигнал проходит через аддитивный канал белого Гауссова шума. Верхний приемник выполняет демодуляцию жесткого решения в сочетании с декодером Viterbi, который установлен для выполнения декодирования жесткого решения. Второй приемник имеет демодулятор, сконфигурированный для вычисления логарифмических коэффициентов логарифмической правдоподобности (LLR), которые затем квантуются с использованием 3-разрядного квантователя. Хорошо известно, что уровни квантования зависят от отклонения шума для оптимальной эффективности [2]. Здесь эмпирически определены точные контуры квантователя. Декодер Viterbi, который настроен для мягкого декодирования принятия решений, обрабатывает эти квантованные значения. Значения LLR, вычисленные демодулятором, умножаются на -1, чтобы сопоставить их с индексом правого квантователя для использования с декодером Viterbi. Чтобы вычислить LLR, демодулятору должна быть дана отклонение шума, как видно на его входе. Третий приемник включает в себя демодулятор, который вычисляет LLR, которые обрабатываются декодером Viterbi, который установлен в неквантованном режиме. Вычисляется и отображается эффективность BER каждого приемника.

modelName = 'commLLRvsHD';
open_system(modelName);

Системная симуляция

Симулируйте эту систему в области значений значений Eb/No информационного бита. Отрегулируйте эти значения Eb/No для закодированных бит и многобитных символов, чтобы получить значения отклонения шума, необходимые для блока AWGN и блока Прямоугольного QAM Baseband Demodulator. Собирайте результаты BER для каждого значения Eb/No и визуализируйте результаты.

EbNo     = 2:0.5:8; % information rate Eb/No in dB
codeRate = 1/2;     % code rate of convolutional encoder
nBits    = 4;       % number of bits in a 16-QAM symbol
Pavg     = 10;      % average signal power of a 16-QAM modulated signal
snr      = EbNo - 10*log10(1/codeRate) + 10*log10(nBits); % SNR in dB
noiseVarVector = Pavg ./ (10.^(snr./10)); % noise variance

% Initialize variables for storing the BER results
ber_HD  = zeros(1,length(EbNo));
ber_SD  = zeros(1,length(EbNo));
ber_LLR = zeros(1, length(EbNo));

% Loop over all noiseVarVector values
for idx=1:length(noiseVarVector)
    noiseVar = noiseVarVector(idx); %#ok<NASGU>
    sim(modelName);
    % Collect BER results
    ber_HD(idx)  = BER_HD(1);
    ber_SD(idx)  = BER_SD(1);
    ber_LLR(idx) = BER_LLR(1);
end

% Perform curve fitting and plot the results
fitBER_HD  = real(berfit(EbNo,ber_HD));
fitBER_SD  = real(berfit(EbNo,ber_SD));
fitBER_LLR = real(berfit(EbNo,ber_LLR));
semilogy(EbNo,ber_HD,'r*', ...
    EbNo,ber_SD,'g*', ...
    EbNo,ber_LLR,'b*', ...
    EbNo,fitBER_HD,'r', ...
    EbNo,fitBER_SD,'g', ...
    EbNo,fitBER_LLR,'b');
legend('Hard Decision Decoding', ...
    'Soft Decision Decoding','Unquantized Decoding');
xlabel('Eb/No (dB)');
ylabel('BER');
title('LLR vs. Hard Decision Demodulation with Viterbi Decoding');
grid on;

Чтобы экспериментировать с этой системой далее, попробуйте различные типы модуляции. Эта система использует двоичную схему отображенной модуляции для более быстрой ошибки набора но хорошо известно, что Gray mapped сигнального созвездия обеспечивает лучшую эффективность BER. Экспериментируйте с различными опциями упорядоченного расположения созвездий в блоках модулятора и демодулятора. Сконфигурируйте блок демодулятора, чтобы вычислить аппроксимацию LLR, чтобы увидеть различие в эффективности BER по сравнению с демодуляцией с жестким решением и LLR. Попробуйте другую область значений значений Eb/No. Наконец, исследуйте различные контуры квантователя для вашей схемы модуляции и значений Eb/No.

Использование Dataflow в Simulink

Можно сконфигурировать этот пример, чтобы использовать управляемое данными выполнение путем установки параметра Domain на dataflow для Подсистемы Dataflow. С dataflow, блоки внутри области, выполняются на основе доступности данных, а не расчета временных параметров в Simulink. Simulink автоматически разделяет систему на параллельные потоки. Эта автоподстройка ускоряет симуляцию и увеличивает пропускную способность данных. Чтобы узнать больше о dataflow и о том, как запустить этот пример с использованием нескольких потоков, смотрите Многоядерную симуляцию сравнения типов демодуляции.

% Cleanup
close_system(modelName,0);
clear modelName EbNo codeRate nBits Pavg snr noiseVarVector ...
    ber_HD ber_SD ber_LLR idx noiseVar fitBER_HD fitBER_SD fitBER_LLR;

Избранная библиография

[1] J. L. Massey, «Кодирование и модуляция в цифровых коммуникациях», Proc. Int. Цюрихский семинар по цифровым коммуникациям, 1974 год

[2] J. A. Heller, I. M. Jacobs, «Viterbi Decoding for Satellite and Space Communication», IEEE ® Trans. Comm. Tech. vol COM-19, октябрь 1971 г.