Перейти к содержанию
    

Ошибки при синхронизации OFDM по циклическому префиксу

Основное сделать получилось. Дело было в оценке STO. Пока сделал компенсацию уже после БПФ через возведение в 4-ю степень по выборке на одном OFDM символе. Думал, что только я такую дичь придумал для данного случая, но нашел статью 90-х годов в IEEE :) Для QPSK нормально. Сейчас сгенерировал наборы Задова-Чу, смотрю, кто из них будет коррелировать. Тогда уже по ним будет делаться точная оценка.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм, неприятное свойство обнаружилось для последовательностей Задова-Чу. Они чувствительны к ошибкам временной синхронизации. Читаю сообщение с форума про тактовую синхронизацию и моделирую для своего случая, расширив ошибку, учитывая неточность определения границы OFDM символа по корреляции префикса: 

 

Я планировал по последовательностям Задова-Чу по корреляции в частотной области определять сдвиг на целое число поднесущих, затем сдвигать их в верное положение, а после этого делать эквализацию. Получается, что даже ошибка на один отсчет во временной области при оценке начала OFDM символа приводит к очень плохой корреляции в частотной области между принятой последовательностью и эталоном.

 

Nsubcar = 1201;
Nfft = 2048;

R = 3;

seq = lteZadoffChuSeq(R, Nsubcar);

shift_samp = 1;

delta_phi = 2*pi*shift_samp/Nfft;
seq_time_shift = seq.*exp(-1j*delta_phi*(-(Nsubcar-1)/2:1:(Nsubcar-1)/2).');

plot(abs(xcorr(seq, seq_time_shift)))

Сверху ошибки нет, снизу ошибка на один отсчет. Основной пик сместился далеко от центра.

xcorr_zc_shift_0.png.8bfc290f7878a5931997280df1d71c99.png

xcorr_zc_shift_1.png.a47ea5b52689cc52d90b0665386b921c.png

UPD. Получается, что оценку сдвига на целое число поднесущих, наверное, можно сделать, сравнивая уровень мощности на поднесущих с данными и пилотами и пустых. По контрасту. Потом сместиться на +/-1 частотную позицию, чтобы верно выбрать данные. Большего сдвига по частоте не ожидаю. Нигде не встречал описание подобного способа, но вроде бы для Задова-Чу и QPSK с данными это должно сработать при хорошей энергетике и АБГШ-подобном канале (надеюсь, что только фаза будет меняться на поднесущих). Мощность всех символов одинакова, поднесущие с ними должны выделяться от пустых.

А эквализацию по фазе можно ведь и в таком случае сделать. Наплевать, что несколько оборотов на целом OFDM символе фаза прокручивается, на каждой поднесущей ведь будет своя правильная. Собственно, в эту же оценку уйдет дробная часть отсчёта (фаза в частотной области), вызванная ошибкой в тактовой частоте. Ну а от МСИ, разумеется, никуда уже не деться. Разве что попробовать усреднять оценку временного сдвига по всем 7 OFDM символам в сабслоте или же делать по символу Задова-Чу (во временной области), 144 против почти 2200 отсчётов всё-таки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.02.2019 в 23:47, andyp сказал:

По имеющейся производной (спектрограмма) их можно восстановить до постоянного члена, который для синхронизации даст просто поворот созвездий всех поднесущих

Спасибо! Я строил ещё diff(unwrap(angle(seq_zc))), увидел наклон. Как оказалось, там действительно последовательности нечётной длины. Но и выяснилось другое - это не совсем LTE, есть некоторые изменения. Не во всех фреймах Задов-Чу, есть какие-то кусочные ЛЧМ. Не могу сказать, что кусочно-линейные, потому что на некоторых отрезках более интересные законы (возможно, полиномы + окна). Надо попробовать разложить на отдельные отрезки и поизучать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 часов назад, Grizzly сказал:

Не во всех фреймах Задов-Чу, есть какие-то кусочные ЛЧМ

Не, это я забыл сделать fftshift и удалить пустые поднесущие :) Всё узнаваемо теперь. Это Задов-Чу везде. @andyp спасибо ещё раз!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снова продолжил заниматься демодуляцией LTE. Возникла проблема для сигналов с полосой 1.4 МГц. До этого я работал с сигналами с полосой 20 МГц и Fs = 30.72 МГц, как это требуется. Сейчас работаю по прежнему с Fs = 30.72 МГц вместо возможных 1.92 МГц, то есть имеет место oversampling в 16 раз. SNR ~ 20-30 дБ.  Замирания неглубокие, порядка ~ 3 дБ могут быть провалы.

Для сигнала с полосой 20 МГц длина CP = 160 или 144 отсчета в зависимости от номера OFDM-символа во фрейме, для 1.4 МГц - 10 или 9 при работе с Fs = 1.92 МГц. Я специально оставил повышенную частоту, чтобы сохранить 160 (144) отсчетов. Для сигнал с полосой 20 МГц я вижу отчетлевые треугольники при корреляции циклического префикса. Конечно, пик сглажен и стороны кривоваты, но это треугольники, которые в несколько раз выше средних значений. При работе с сигналом 1.4 МГц пики не соответствуют началу символа (приходится на несколько десятков отсчетов брать левее, тогда созвездие принимает разумный вид), кроме того, рядом может быть несколько пиков.

Чем может быть вызвана такая картина? Возможно, я зря oversampling использую?

sto_synchr_by_cp.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Промоделировал на свежую голову на идеальных OFDM-сигналах. Oversampling не помогает. То есть, что 9, что 144 отсчёта - корреляция плохая. Оно и логично. Ведь уникальных символов в префиксе всего 9 для сигнала 1.4 МГц, при оверсемплинге отсчёты все равно только от этих 9 символов.

Надо временную синхронизацию делать либо усреднением по нескольким символам OFDM, либо по OFDM символам, которые полностью пилотные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот эффект вызван случайностью модуля отсчетов сигнала, которая зашумляет корреляционный пик. Причем в окрестности максимума перекосы будут одинаковыми что для большого числа несущих, что для малого, вызывая одинаковую абсолютную ошибку синхронизации, но относительная ошибка при малом числе несущих будет больше. При наличии шума есть шанс вообще не увидель одиночный пик, поэтому если использовать усреднение по нескольким символам, то усреднаять надо саму АКФ, а не оценку начала символа.

Если в пилотном символе последовательность Задова-Чу, то модуль отсчетов сигнала будет почти постоянным и дополнительной ошибки синхронизации появляться не должно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ.

57 минут назад, KalashKS сказал:

Если в пилотном символе последовательность Задова-Чу

Да, она. Но что-то всё равно не получается вытянуть корреляцию. Пики не соответствуют OFDM-символам, на которых последовательности Задова-Чу. Буду перепроверять код. Логика ведь такая же, как с циклическим префиксом, пробегаем последовательно по куску с сигналом, считаем корреляции на интервале Nfft и находим максимум корреляции, но вот на графике abs(corr) при оверсемплинге в 16 раз фигня. Много пиков, некоторые расположены рядом друг с другом.  Видимо, где-то ошибка закралась.

function [sto_samp, max_magn_corr, corr, p] = sto_estimation_zc(y, zc_time, Nfft, Ncp, Nsymb)

N = Nsymb*(Nfft + Ncp);

corr = zeros(N, 1);
p    = zeros(N, 1); 

for n = 1:N
    corr(n) = 0;
    k = 0;
    for m = n:(n + Nfft - 1)
        k = k+1;
        corr(n) = corr(n) + y(m)*conj(zc_time(k));
        p(n)    = p(n) + abs(y(m))^2;
    end
end

[sto_samp, max_magn_corr] = max(abs(corr));

end

 

При этом после думодуляции я вижу созвездия и круги Задова-Чу на соответствующих символах, но созвездия повернуты от OFDM символа к OFDM символу. Компенсация фазового сдвига в зависимости от номера поднесущей делается стандартно в частотной области по оценке аргумента между эталонной и принятой последовательностями Задова-Чу. От прокручивания созвездий это спасает, но по фазе ровно не становится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Код выше, как я понял, описывает согласованный фильтр с ИХ zc_time. Если он не дает выраженных пиков, то скорее всего дело в неправильной ИХ.

Что касается поворотов по фазе от символа к символу, то они скорее всего вызваны остаточным частотным рассогласованием. Если при этом скачки большие, то можно предположить, что рассогласование кратно расстоянию между несущими. Тогда фаза будет поворачиваться на 2*pi*Ncp/Nfft*df, где df - относительное рассогласование.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 минут назад, KalashKS сказал:

Если он не дает выраженных пиков, то скорее всего дело в неправильной ИХ.

Перепроверяю, что использую в качестве эталона при работе с реальным сигналом. Только что в LTE Toolbox сгенерировал сигнал для uplink на 6 RB, как для общей полосы в 6 RB, так и для 100 RB, чтобы получить аналог оверсемплинга. В обоих случаях пик есть в нужном месте. Рисунок для случая 6RB с данными в полосе 20 МГц (100 RB), сигнал снесен в ноль умножением на комплексную экспоненту. 4-й символ, 2048+160 + 3*(2048 + 144) + 144 = 8928 -> начало на 8929-м отсчете.

 

13 минут назад, KalashKS сказал:

Если при этом скачки большие, то можно предположить, что рассогласование кратно расстоянию между несущими

Ну тааак. За несколько символов к последнему до 45 градусов может набежать. Я специально оцениваю график модулей для всех поднесущих после FFT, в редких случаях, когда рассогласование больше расстояния между ними, вручную подправлял.

Скорее всего, неверное положение во времени приводит к неверной синхронизации по частоте.

zadoff_chu_corr.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, KalashKS сказал:

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

А возможно, в трех соснах потерялся :) Хочу проверить код на всякие дурацкие ошибки и описки.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оказалось, что была ошибка по частоте в 10 кГц при том, что половина разноса 7,5 кГц. Сейчас вручную скомпенсировал. Почти исчез набег фазы между OFDM-символами. Да и корреляционные пики Задова-Чу стали заметны. Где-то в 3,5 раза выше среднего уровня, как выше на идеальном сигнале.

Мне почему-то казалось, что расстройку на целое число можно не компенсировать умножением на комплексную экспоненту, а брать нужные символы в частотной области со смещением на число бинов, соответствующее целой расстройке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...