exponenta event banner

Производительность BER различных эквалайзеров

В этом примере показана производительность BER нескольких типов эквалайзеров в статическом канале с нулевым значением в полосе пропускания. Пример конструирует и реализует объект линейного эквалайзера и объект эквалайзера обратной связи принятия решения (DFE). Он также инициализирует и вызывает эквалайзер оценки последовательности максимального правдоподобия (MLSE). Эквалайзер MLSE сначала вызывается с совершенным знанием канала, затем с простым, но несовершенным способом оценки канала.

В процессе моделирования обновляется график BER для сравнительного анализа методов выравнивания. Он также показывает спектры сигналов линейно выровненных и DFE выровненных сигналов. Он также показывает относительную пакетность ошибок, указывая на то, что при низких ЧБВ как алгоритм MLSE, так и алгоритм DFE страдают от пакетов ошибок. В частности, DFE-ошибка имеет более быструю характеристику с обнаруженными битами, поданными обратно, чем с правильными битами, поданными обратно. Наконец, во время «несовершенной» части MLSE моделирования он показывает и динамически обновляет оцененный отклик канала.

Чтобы поэкспериментировать с этим примером, можно изменить такие параметры, как импульсная характеристика канала, количество весов отводов эквалайзера, коэффициент забывания рекурсивных наименьших квадратов (RLS), размер шага наименьшего среднего квадрата (LMS), длина отслеживания MLSE, ошибка в оцененной длине канала и максимальное количество ошибок, собранных при каждом значении Eb/No.

Структура кода

В этом примере эти вспомогательные сценарии и функции используются для моделирования связей в диапазоне значений Eb/No.

eqber_adaptive.m - сценарий, выполняющий моделирование связей для линейных и DFE-эквалайзеров

eqber_mlse.m - сценарий, выполняющий моделирование связей для идеальных и несовершенных эквалайзеров MLSE

eqber_siggen.m - сценарий, который генерирует сигнал бинарной фазовой манипуляции (BPSK) без формирования импульсов, затем обрабатывает его по каналу и добавляет шум

eqber_graphics.m - функция, которая генерирует и обновляет графики, показывающие производительность линейных, DFE и MLSE-эквалайзеров.

Сценарии eqber_adaptive и eqber_mlse иллюстрируют, как использовать адаптивные и выравниватели MLSE для множества блоков данных, так что информация о состоянии сохраняется между блоками данных.

Параметры сигнала и канала

Установите параметры, относящиеся к сигналу и каналу. Используйте BPSK без формирования импульсов и 5-отводную симметричную импульсную характеристику канала. (Более подробную информацию о канале см. в разделе 10.2.3 «Цифровые коммуникации» Дж. Проакиса, 4-е издание.) Установка начальных состояний генераторов данных и шумов. Установите диапазон Eb/No.

% System simulation parameters
Fs = 1;           % sampling frequency (notional)
nBits = 2048;     % number of BPSK symbols per vector
maxErrs = 200;    % target number of errors at each Eb/No
maxBits = 1e6;    % maximum number of symbols at each Eb/No

% Modulated signal parameters
M = 2;                     % order of modulation
Rs = Fs;                   % symbol rate
nSamp = Fs/Rs;             % samples per symbol
Rb = Rs*log2(M);           % bit rate

% Channel parameters
chnl = [0.227 0.460 0.688 0.460 0.227]';  % channel impulse response
chnlLen = length(chnl);                   % channel length, in samples
EbNo = 0:14;                              % in dB
BER = zeros(size(EbNo));                  % initialize values

% Create BPSK modulator
bpskMod = comm.BPSKModulator;

% Specify a seed for the random number generators to ensure repeatability.
rng(12345)

Параметры адаптивного эквалайзера

Задайте значения параметров для линейного и DFE-эквалайзеров. Используйте линейный эквалайзер с 31 отводом и DFE с 15 отводами прямой и обратной связи. Используйте алгоритм рекурсивных наименьших квадратов (RLS) для первого блока данных, чтобы обеспечить быструю сходимость отводов. Затем используйте алгоритм наименьшего среднего квадрата (LMS), чтобы обеспечить быструю скорость выполнения.

% Linear equalizer parameters
nWts = 31;               % number of weights
algType = 'RLS';         % RLS algorithm
forgetFactor = 0.999999; % parameter of RLS algorithm

% DFE parameters - use same update algorithms as linear equalizer
nFwdWts = 15;            % number of feedforward weights
nFbkWts = 15;            % number of feedback weights

Параметры выравнивания и оценки канала MLSE и начальная визуализация

Установите параметры эквалайзера MLSE. Используйте длину отслеживания, в шесть раз превышающую длину импульсной характеристики канала. Инициализируйте состояния эквалайзера. Установите для режима выравнивания значение «continuous», чтобы обеспечить плавное выравнивание нескольких блоков данных. Используйте циклический префикс в методе оценки канала и задайте длину префикса. Предположим, что оцененная длина импульсной характеристики канала на одну выборку больше фактической длины.

% MLSE equalizer parameters
tbLen = 30;                        % MLSE equalizer traceback length
numStates = M^(chnlLen-1);         % number of trellis states
[mlseMetric,mlseStates,mlseInputs] = deal([]);
const = constellation(bpskMod);    % signal constellation
mlseType = 'ideal';                % perfect channel estimates at first
mlseMode = 'cont';                 % no MLSE resets

% Channel estimation parameters
chnlEst = chnl;         % perfect estimation initially
prefixLen = 2*chnlLen;  % cyclic prefix length
excessEst = 1;          % length of estimated channel impulse response
% beyond the true length

% Initialize the graphics for the simulation. Plot the unequalized channel
% frequency response, and the BER of an ideal BPSK system.
idealBER = berawgn(EbNo,'psk',M,'nondiff');

[hBER,hLegend,legendString,hLinSpec,hDfeSpec,hErrs,hText1,hText2, ...
    hFit,hEstPlot,hFig,hLinFig,hDfeFig] = eqber_graphics('init', ...
    chnl,EbNo,idealBER,nBits);

Построение объектов выравнивания RLS и LMS и DFE

Алгоритм обновления RLS используется для адаптации весов отводов эквалайзера, а опорный отвод устанавливается в центральный отвод.

linEq = comm.LinearEqualizer('Algorithm',algType, ...
    'ForgettingFactor',forgetFactor, ...
    'NumTaps',nWts, ...
    'Constellation',const, ...
    'ReferenceTap',round(nWts/2), ...
    'TrainingFlagInputPort',true);

dfeEq = comm.DecisionFeedbackEqualizer('Algorithm',algType, ...
    'ForgettingFactor',forgetFactor, ...
    'NumForwardTaps',nFwdWts, ...
    'NumFeedbackTaps',nFbkWts, ...
    'Constellation',const, ...
    'ReferenceTap',round(nFwdWts/2), ...
    'TrainingFlagInputPort',true);

Линейный эквалайзер

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

Список кодов моделирования адаптивных эквалайзеров см. в разделе eqber_adaptive.m.

firstRun = true;  % flag to ensure known initial states for noise and data
eqType = 'linear';
eqber_adaptive;

Эквалайзер обратной связи для принятия решений

Запустите DFE и постройте график спектра выровненного сигнала, BER и характеристики ошибки пакета для каждого блока данных. Заметим, что DFE намного лучше способен смягчить нулевое значение канала, чем линейный эквалайзер, как показано на спектральном графике и BER графике. Точки BER на графике при заданном значении Eb/No обновляются для каждого блока данных, поэтому они перемещаются вверх или вниз в зависимости от количества ошибок, собранных в этом блоке. Следует также отметить, что ошибки DFE являются в некоторой степени пакетными из-за распространения ошибок, вызванного обратной передачей обнаруженных битов вместо правильных битов. График ошибок пакета показывает, что по мере уменьшения BER происходит значительное количество ошибок при поступлении между ошибками пяти битов или менее. (Если бы эквалайзер DFE работал в тренировочном режиме в любое время, ошибки были бы гораздо менее бурными.)

Для каждого блока данных график также показывает средний интервал между ошибками, если эти ошибки происходили случайным образом.

Список кодов моделирования адаптивных эквалайзеров см. в разделе eqber_adaptive.m.

close(hFig(ishghandle(hFig)));

eqType = 'dfe';
eqber_adaptive;

Идеальный эквалайзер MLSE с идеальными знаниями о каналах

Запустите эквалайзер MLSE с идеальной оценкой канала и постройте график характеристик BER и ошибки пакета для каждого блока данных. Следует отметить, что ошибки происходят чрезвычайно бурно. Обратите внимание, в частности, на низкие значения BER, что подавляющий процент ошибок возникает с интервалом между ошибками в один или два бита.

Список кодов моделирования для эквалайзеров MLSE см. в разделе eqber_mlse.m.

close(hLinFig(ishghandle(hLinFig)),hDfeFig(ishghandle(hDfeFig)));

eqType = 'mlse';
mlseType = 'ideal';
eqber_mlse;

Эквалайзер MLSE с несовершенной оценкой канала

Запустите эквалайзер MLSE с несовершенной оценкой канала и постройте график BER и производительности ошибки пакета для каждого блока данных. Эти результаты довольно близко согласуются с идеальными результатами MLSE. (Алгоритм оценки канала сильно зависит от данных, так что БПФ переданного блока данных не имеет нулей.) Обратите внимание, как расчетные графики канала сравниваются с фактическим графиком спектра канала.

Список кодов моделирования для эквалайзеров MLSE см. в разделе eqber_mlse.m.

mlseType = 'imperfect';
eqber_mlse;