Эквалайзеры MLSE

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

В Communications Toolbox™, mlseeq функция, comm.MLSEEqualizer Системный object™ и MLSE Equalizer блок используют алгоритм Viterbi, чтобы выровнять линейно модулированный сигнал через дисперсионный канал. Эти функции выводят максимальную оценку последовательности правдоподобия сигнала путем использования оценки канала, смоделированного как фильтр с конечной входной характеристикой (конечной импульсной характеристикой).

Чтобы декодировать принятый сигнал, эквалайзер MLSE:

  1. Применяет конечная импульсная характеристика к символам входного сигнала. Веса отводов конечной импульсной характеристики соответствуют оценке канала.

  2. Использует алгоритм Viterbi, чтобы вычислить пути трассировки и метрику состояния. Эти значения присваиваются символам на каждом шаге Алгоритма Viterbi. Метрики основаны на евклидовом расстоянии.

  3. Выводит оценку максимальной последовательности правдоподобия сигнала как последовательность комплексных чисел, соответствующих точкам созвездия модулированного сигнала.

Эквалайзер MLSE приводит к наилучшей теоретически возможной эффективности, но является вычислительно интенсивным.

Фоновый материал эквалайзеров MLSE см. в разделе «Выбранные ссылки для эквалайзеров».

Выравнивание сигнала Вектора в MATLAB

Вы можете использовать mlseeq функция или comm.MLSEEqualizer Системный объект для эквализации MLSE в MATLAB®. Примеры в этом разделе вызывают mlseeq функция. Аналогичный рабочий процесс применяется при использовании comm.MLSEEqualizer Системный объект. Для примеров, которые используют системный объект, смотрите comm.MLSEEqualizer Системный объект страницы с описанием.

mlseeq Функция имеет две операции:

  • Непрерывный режим работы позволяет вам обработать серию векторов, используя повторные вызовы к mlseeq. Функция сохраняет информацию о своем внутреннем состоянии от одного вызова к следующему. Дополнительные сведения см. в разделе Уравнение в режиме непрерывной операции.

  • Режим операции сброса позволяет вам задать преамбулу и постамб, которые сопровождают ваши данные. Чтобы узнать больше, смотрите Использование преамбулы или Postamble.

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

Используйте mlseeq, чтобы выравнивать сигнал Вектора

В самой простой форме mlseeq функция выравнивает вектор модулируемых данных, когда вы задаете:

  • Оценочные коэффициенты канала (моделируются как конечная импульсная характеристика).

  • Сигнальное созвездие для типа модуляции.

  • Глубина следа алгоритма Viterbi. Большие значения глубины следа могут улучшить результаты эквалайзера, но увеличить время расчета.

Сгенерируйте PSK модулированный сигнал с порядком модуляции, установленным на четыре.

M = 4; 
msg = pskmod([1 2 2 0 3 1 3 3 2 1 0 2 3 0 1]',M);

Пропустите модулированный сигнал через канал искажения.

chcoeffs = [.986; .845; .237; .12345+.31i];
filtmsg = filter(chcoeffs,1,msg);

Задайте созвездие ссылки, длину обратного вызова и оценку канала для эквалайзера MLSE. В этом примере точный канал предоставляется как оценка канала.

const = pskmod([0:M-1],M);
tblen = 10;
chanest = chcoeffs;

Выравнивание принимаемого сигнала.

msgEq = mlseeq(filtmsg,chanest,const,tblen,'rst');
isequal(msg,msgEq)
ans = logical
   1

Выравнивание сигналов в режиме непрерывной операции

Если ваши данные разделены на ряд векторов (которые вы обрабатываете, например, в цикле), непрерывный режим работы является подходящим способом использовать mlseeq функция. В режиме непрерывной операции, mlseeq может сохранить информацию о своем внутреннем состоянии для использования в последующем вызове и может инициализировать с помощью ранее сохраненной информации о состоянии. Выбор режима непрерывной операции при вызове mlseeq, задайте 'cont' как входной параметр.

Примечание

Режим непрерывной операции имеет задержку, как описано в разделе Задержки в режиме непрерывной операции. Этот режим не может включать преамбулу или постамб.

Процедура непрерывной операции

При использовании режима непрерывной операции в цикле предварительно выделите три пустые матричные переменные, чтобы сохранить метрики состояния, состояния трассировки и входы трассировки для эквалайзера перед началом цикла эквализации. Внутри цикла активируйте mlseeq использование синтаксиса, такого как:

sm = [];
ts = [];
ti = [];
for ...
    [y,sm,ts,ti] = mlseeq(x,chcoeffs,const,tblen,'cont',nsamp,sm,ts,ti);
...
end

Использование sm, ts, и ti как причины входных параметров mlseeq чтобы продолжить работу там, где она завершилась в предыдущей итерации. Использование sm, ts, и ti как выходные аргументы mlseeq для обновления информации о состоянии в конце текущей итерации. В первой итерации sm, ts, и ti start как пустые матрицы, поэтому первый вызов mlseeq функция инициализирует метрики всех состояний в 0.

Задержки в режиме непрерывной операции

Непрерывный режим работы с глубиной обратного вызова tblen несет выход задержку tblen символы. Первый tblen выходные символы не связаны с входным сигналом и последним tblen Входы символы не связаны с сигналом выхода. Например, эта команда использует глубину трассировки 3. Первые три выходных символа не связаны с входным сигналом ones(1,10).

y = mlseeq(ones(1,10),1,[-7:2:7],3,'cont')
y =
    -7   -7   -7    1    1    1    1    1    1    1

Важно следить за задержками, вызванными различными фрагментами коммуникационной системы. Пример «Использование mlseeq для выравнивания вектора в режиме непрерывной операции» иллюстрирует, как учесть задержку при вычислении частоты ошибок.

Используйте mlseeq, чтобы уравнять вектор в режиме непрерывной операции

Этот пример показывает процедуру использования режима непрерывной операции mlseeq функция в цикле.

Инициализация переменных

Задайте переменные во время выполнения.

numsym = 200; % Number of symbols in each iteration
numiter = 25; % Number of iterations

M = 4; % Use 4-PSK modulation
qpskMod = comm.QPSKModulator('PhaseOffset',0);

chcoeffs = [1 ; 0.25]; % Channel coefficients
chanest = chcoeffs; % Channel estimate

Чтобы инициализировать эквалайзер, задайте параметры для ссылки созвездия, длины обратного вызова, количества выборок на символ и переменных состояния sm, ts, и ti.

const = qpskMod((0:M-1)');
tblen = 10;
nsamp = 1;
sm = [];
ts = [];
ti = [];

Задайте переменные, чтобы накопить результаты из каждой итерации цикла.

fullmodmsg = [];
fullfiltmsg = [];
fullrx = [];

Симулируйте систему при помощи цикла

Запустите симуляцию в цикле, который генерирует случайные данные, модулирует данные с помощью модуляции PSK основной полосы частот и фильтрует данные. The mlseeq функция выравнивает отфильтрованные данные. Цикл также обновляет переменные, которые накапливают результаты каждой итерации цикла.

for jj = 1:numiter
    msg = randi([0 M-1],numsym,1); % Random signal vector
    modmsg = qpskMod(msg); % PSK-modulated signal
    filtmsg = filter(chcoeffs,1,modmsg); % Filtered signal
    % Equalize the signal.
    [rx,sm,ts,ti] = mlseeq(filtmsg,chanest,const, ...
        tblen,'cont',nsamp,sm,ts,ti);
    % Update vectors with cumulative results.
    fullmodmsg = [fullmodmsg; modmsg];
    fullfiltmsg = [fullfiltmsg; filtmsg];
    fullrx = [fullrx; rx];
end

Вычисление частоты ошибок и результаты построения графиков

Вычислите вероятность ошибки символа из всех итераций цикла. The symerr функция сравнивает выбранные фрагменты принятых и переданных сигналов, а не целые сигналы. Потому что непрерывный режим работы несет задержку, чья длина в выборках является глубиной отслеживания (tblen) эквалайзера, исключить первое tblen выборки из принятого сигнала и последнего tblen выборки из переданного сигнала. Исключение выборок, которые представляют задержку эквалайзера, гарантирует, что вычисление частоты ошибок символа сравнивает выборки из принятых и переданных сигналов, которые являются значимыми и которые действительно соответствуют друг другу.

Учитывая задержку, вычислите общее количество ошибок символа.

hErrorCalc = comm.ErrorRate('ReceiveDelay',10);
err = step(hErrorCalc, fullmodmsg, fullrx);
numsymerrs = err(1)
numsymerrs = 0

Постройте график сигнального созвездия до и после эквализации. Точки в уравненном сигнале совпадают с точками идеального сигнального созвездия для 4-PSK.

h = scatterplot(fullfiltmsg); 
hold on;
scatterplot(fullrx,1,0,'r*',h);
legend('Filtered signal before equalization','Equalized signal',...
   'Location','NorthOutside');
hold off; 

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains 2 objects of type line. These objects represent Filtered signal before equalization, Equalized signal.

Использование преамбулы или постамба

Некоторые системы включают последовательность известных символов в начале или конце набора данных. Известная последовательность в начале или конце называется преамбулой или постамблом, соответственно. mlseeq функция может включать преамбулу и постамб, которые уже включены в ее входной сигнал. Когда вы вызываете функцию, вы задаете преамбулу и postamble как целочисленные векторы, которые представляют последовательность известных символов путем индексации в вектор сигнального созвездия. Для примера - вектор преамбулы [1 4 4] и 4-PSK сигнальное созвездие [1 j -1 -j] указывает, что модулируемый сигнал начинается с [1 -j -j].

Если ваша система использует преамбулу без postamble, используйте вектор postamble of [] при вызове mlseeq. Если ваша система использует postamble без преамбулы, используйте вектор преамбулы [].

Восстановление сообщения, содержащего преамбулу

Восстановите сообщение, которое включает преамбулу, выровняйте сигнал и проверьте вероятность ошибки символа.

Задайте порядок модуляции, глубину отслеживания эквалайзера, количество выборок на символ, преамбулу и длину сообщения.

M = 4; 
tblen = 16;
nsamp = 1;
preamble = [3;1];
msgLen = 500;

Сгенерируйте ссылочное созвездие.

const = pskmod(0:3,4);

Сгенерируйте сообщение с помощью случайных данных и подготовьте преамбулу к сообщению. Модулируйте случайные данные.

msgData = randi([0 M-1],msgLen,1);
msgData = [preamble; msgData];
msgSym = pskmod(msgData,M);

Пропустите данные через канал искажения и добавьте Гауссов шум к сигналу.

chcoeffs = [0.623; 0.489+0.234i; 0.398i; 0.21];
chanest = chcoeffs;
msgFilt = filter(chcoeffs,1,msgSym);
msgRx = awgn(msgFilt,9,'measured');

Выравнивание принимаемого сигнала. Чтобы сконфигурировать эквалайзер, предоставьте оценку канала, ссылочное созвездие, глубину отслеживания эквалайзера, режим работы, количество выборок на символ и преамбулу. Те же символы преамбулы появляются в начале вектора сообщения и в синтаксисе mlseeq. Поскольку система не использует postamble, пустой вектор задается в качестве последнего входного параметра в этой mlseeq синтаксис.

Проверьте вероятность ошибки символа выравниваемого сигнала. Результаты прогона варьируются из-за использования случайных чисел.

eqSym = mlseeq(msgRx,chanest,const,tblen,'rst',nsamp,preamble,[]);
[nsymerrs,ser] = symerr(msgSym,eqSym)
nsymerrs = 8
ser = 0.0159

Использование эквалайзеров MLSE в Simulink

Блок MLSE Equalizer использует алгоритм Viterbi, чтобы выровнять линейно модулированный сигнал через дисперсионный канал. Блок выводит максимальную оценку последовательности правдоподобия (MLSE) сигнала путем использования вашей оценки канала, смоделированного как фильтр с конечной входной характеристикой (конечной импульсной характеристикой). При использовании блока MLSE Equalizer вы задаете оценку канала и сигнальное созвездие входного сигнала. Можно также задать ожидаемую преамбулу входного сигнала и postamble в качестве входных параметров для блока MLSE Equalizer.

MLSE- Эквализации с динамически изменяющимся каналом

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

Структура модели

  • Передатчик генерирует данные случайного сигнала QPSK.

  • Нарушения канала включают многолучевое замирание и AWGN.

  • Приемник применяет MLSE эквализацию и QPSK демодуляцию.

  • Модель использует возможности и вычисление BER, чтобы показать поведение системы.

Исследуйте модель примера

Эксперименты с моделью

The Bernoulli Binary Generator блочный шаг расчета 5e-6 секунд соответствует скорости передачи битов 200 кбит/с и скорости символа QPSK 100 км/с.

The Multipath Rayleigh Fading Channel настройки блоков:

  • Максимальный доплеровский сдвиг составляет 30 Гц.

  • Дискретная задержка пути составляет [0 1e-5], что соответствует двум последовательным шагам расчета входных данных символа QPSK. Эта задержка отражает самый простой вектор задержки для двухпутного канала.

  • Средний коэффициент усиления пути [0 -10].

  • Среднее усиление пути нормировано до 0 дБ, так что средний вход степени в AWGN блок составляет 1 Вт.

The MLSE Equalizer для блока задана глубина трассировки 10. Измените эту глубину, чтобы изучить ее эффект на вероятность битовой ошибки (BER).

Демодулятор QPSK принимает N-by-1 входной кадр и генерирует 2N-by-1 выход система координат. Эта выходная система координат и глубина трассировки 10 приводит к задержке 20 биты. Модель выполняет обработку на основе кадра для систем координат, которые имеют 100 выборки на систему координат. Из-за обработки на основе фрейма в модели присуща задержка в 100 биты. Комбинированная задержка приема 120 устанавливается в параметре Receive delay блока Error Rate Calculation, выравнивая выборки.

Отображается вычисленный BER. Графики созвездия показывают созвездие до и после эквализации.

BER = 0.033645

См. также

Объекты

Блоки

Похожие темы