Эта модель показывает улучшение производительности BER при использовании логарифмического отношения правдоподобия (LLR) вместо демодуляции жесткого решения в линии связи со сверточным кодированием.
Для получения MATLAB™ версии этого примера см. Демодуляция логарифмического отношения правдоподобия (LLR).
Эта примерная модель моделирует сверточно кодированную систему связи, имеющую один передатчик, канал AWGN и три приемника. Сверточный кодер имеет кодовую скорость 1/2. Система использует 16-QAM модуляцию. Модулированный сигнал проходит через аддитивный канал белого гауссова шума. Верхний приемник выполняет демодуляцию жесткого решения совместно с декодером Витерби, который настроен для выполнения декодирования жесткого решения. Второй приемник имеет демодулятор, выполненный с возможностью вычисления логарифмических отношений правдоподобия (LLR), которые затем квантуются с использованием 3-битового квантователя. Хорошо известно, что уровни квантования зависят от дисперсии шума для оптимальной производительности [2]. Точные границы квантователя определяются здесь эмпирически. Декодер Витерби, который установлен для декодирования с мягким решением, обрабатывает эти квантованные значения. Значения LLR, вычисленные демодулятором, умножаются на -1 для отображения их в правильный индекс квантователя для использования с декодером Витерби. Для вычисления ЛОП демодулятору должна быть дана дисперсия шума, как видно на его входе. Третий приемник включает в себя демодулятор, который вычисляет LLR, которые обрабатываются декодером Витерби, который установлен в неквантованном режиме. Вычисляют и отображают характеристики BER каждого приемника.
modelName = 'commLLRvsHD';
open_system(modelName);

Смоделировать эту систему по диапазону значений информационных битов Eb/No. Отрегулируйте эти значения Eb/No для кодированных битов и многоразрядных символов, чтобы получить значения дисперсии шума, необходимые для блока AWGN и блока демодулятора основной полосы прямоугольной QAM. Соберите результаты 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;

Чтобы поэкспериментировать с этой системой, попробуйте использовать различные типы модуляции. Эта система использует схему двоичной отображенной модуляции для более быстрого сбора ошибок, но хорошо известно, что созвездие отображенного сигнала Грея обеспечивает лучшую производительность BER. Экспериментируйте с различными вариантами упорядочения созвездий в блоках модулятора и демодулятора. Сконфигурируйте блок демодулятора для вычисления приблизительного LLR, чтобы увидеть разницу в производительности BER по сравнению с демодуляцией жесткого решения и LLR. Попробуйте использовать другой диапазон значений Eb/No. Наконец, исследуйте различные границы квантователя для вашей схемы модуляции и значений Eb/No.
В этом примере можно настроить выполнение на основе данных, установив для параметра Domain значение dataflow для подсистемы Dataflow. При использовании потока данных блоки внутри домена выполняются на основе доступности данных, а не времени выборки в Simulink. Simulink автоматически разделяет систему на параллельные потоки. Такая автопартизация ускоряет моделирование и увеличивает пропускную способность данных. Дополнительные сведения о потоке данных и выполнении этого примера с использованием нескольких потоков см. в разделе Многоядерное моделирование сравнения типов демодуляции.
% 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] Дж. Л. Мэсси, «Кодируя и модуляция в цифровой связи», Proc. Интервал. Цюрихский семинар по цифровой связи, 1974 год
[2] Дж. А. Хеллер, И. М. Джейкобс, «Декодирование Витерби для спутниковой и космической связи», IEEE ® Trans. Comm. Tech. vol COM-19, октябрь 1971 г.