В этом примере показана производительность 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. Используйте длину отслеживания, в шесть раз превышающую длину импульсной характеристики канала. Инициализируйте состояния эквалайзера. Установите для режима выравнивания значение «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 используется для адаптации весов отводов эквалайзера, а опорный отвод устанавливается в центральный отвод.
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 с идеальной оценкой канала и постройте график характеристик BER и ошибки пакета для каждого блока данных. Следует отметить, что ошибки происходят чрезвычайно бурно. Обратите внимание, в частности, на низкие значения BER, что подавляющий процент ошибок возникает с интервалом между ошибками в один или два бита.
Список кодов моделирования для эквалайзеров MLSE см. в разделе eqber_mlse.m.
close(hLinFig(ishghandle(hLinFig)),hDfeFig(ishghandle(hDfeFig))); eqType = 'mlse'; mlseType = 'ideal'; eqber_mlse;


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


