Jump to content

    

Оценка и компенсация IFO в OFDM

Начал писать свой демодулятор для LTE-подобной системы и столкнулся с проблемой, касающейся оценки частотного смещения на целое число поднесущих. Получается змея, кусающая себя за хвост. Оценка IFO производится в частотной области по корреляции пилот-сигнала с опорным. Положение максимума будет соответствовать величине IFO. Только вот для растета такой корреляции нужно иметь точную синхронизацию по времени, иначе оценка IFO у меня получалась неверной на несколько бинов. Изначально я синхронизировался по времени по корреляции пилота с опорным, находил границу фрейма, затем считал корреляции ЦП во фрейме, усреднял их, находил дробную CFO, компенсировал, а после в частотной области делал оценку IFO. Однако при расстройке на несколько поднесущих у меня максимум корреляции пилота смещался где-то на 10 отсчетов во временной области. Символьная синхронизация может быть сделана и по корреляции циклических префиксов, которая не чувствительна к отстройке на целое число поднесущих, но там ведь априори точность не очень. В моем моделировании пока что получается необходимость синхронизации отсчет в отсчет по времени, чтобы в частотной области получить корректный результат. На рисунке 2 в PDF из вложения видна зависимость модуля корреляции от рассогласования по времени.

A Low-Complexity Integer Frequency Offset Estimation Scheme Using Combined Training Symbols for OFDM Systems.pdf

В публикациях всё просто. В зависимости от объекта исследования всё остальное считается идельаным. А как на практике поступают? Изначально по префиксам синхронизроваться?

Share this post


Link to post
Share on other sites

Начальная оценка фазы символов и смещения частоты делается по PSS. Дальше петли по пилотам, работающие совместно. Оценки фазы символов и смещения частоты, сделанные по CP, можно накапливать для контроля работы основных петель.

Share this post


Link to post
Share on other sites
9 минут назад, FatRobot сказал:

можно накапливать

Проблема заключается в том, что это какая-то собственная система, подобная LTE. У меня приходит всего один слот в несколько секунд. Потерять его нельзя. Его надо обнаружить при достаточно большой относительной неопределенности по времени, засинхронизироваться и демодулировать.

Думаю, надо сделать буфер несколько больше размеров слота и всё-таки идти по потоку корреляцией с пилотом Задова-Чу. Энергетический метод с двойным окном, я так думаю, будет часто цепляться за Wi-Fi. В итоге из-за частотной расстройким максимум корреляции окажется сдвинут от истинного положения отсчётов на десять, но слот будет обнаружен. Дальше пробегусь в буфере корреляциями с ЦП, компенсирую  дробную часть CFO. Дальше уже в частотной области будут снова находить корреляции Задова-Чу. Ошибка во времени даст набег фазы на поднесущих. Попробую сделать дифференциальную корреляцию, то есть и для принятого сигнала, и для пилота коррелировать выражения типа Sd(k) = S(k)S*(k-1). Во вложении формула (19). Так можно избавиться от фазового набега. А по (20) уже точно подстроюсь по времени, чтобы верно определить границы для FFT при демодуляции.

kyungsoowoo2007.pdf

Интересно, банк согласованных фильтров Задова-Чу, каждый из которых будет со своим значение IFO, не окажется эффективнее? Хотя без компенсации дробной части CFO, наверное, результаты будут очень плохие.

Share this post


Link to post
Share on other sites

О, свеженькое нашлось, даже из Open Access. Как раз про формулу (7) с дифференциальной корреляцией пишут, что применяется в том числе при ошибках, связанных с оценкой STO.

08653297.pdf

Тут, насколько я понимаю, все равно лучше по ЦП подстроиться по времени перед вычислением корреляций в частотной области. При отрицательных IFO пик корреляции пилота во временной области сместится в сторону соседнего символа, с межсимволкой уже фиг что сделаешь в частотной области.

Share this post


Link to post
Share on other sites

Рекомендую вам сделать двумерный (по delta_f и delta_t) поиск по пилотам. В частотной области.

Для пакетной передачи что-то делать по CP - плохая затея: СP короткий весьма, за 1 слот вы много не накопите.

Share this post


Link to post
Share on other sites
1 минуту назад, FatRobot сказал:

Рекомендую вам сделать двумерный (по delta_f и delta_t) поиск по пилотам. В частотной области.

Спасибо. Буду пробовать.

2 минуты назад, FatRobot сказал:

Для пакетной передачи что-то делать по CP - плохая затея

Поэтому я предпочел использовать пилот вместо них, но вскоре влетел в IFO :)

Share this post


Link to post
Share on other sites

@FatRobot только получится довольно много частотных позиций. Ведь нужно будет не 15 кГц делать шаг, а на мелкую сетку разбить, поскольку дробная часть не будет скомпенсирована.

Допустим, грубо я засинхронизируюсь во временной области. Относительно этого положения возьму +/-15 отчётов. Итого 31. По частоте +/-60 кГц в моих реалиях. Наверное, 500 Гц шаг брать, не больше. 241 позиция. Итого почти 7500. Хотя в сравнении с числом корреляций для грубого поиска фрейма это фигня ;) Их там миллионы будут при таком редком появлении фрейма. Так что в принципе можно и меньше делать шаг по частоте. Все познается в сравнении.

Share this post


Link to post
Share on other sites

Вы возьмите окно БПФ/ОБПФ побольше. Например 4 х {длительность символа}, и временная позиция у вас автоматом получится, 

И отдельного грубого поиска не надо с "миллионами корреляций"

Share this post


Link to post
Share on other sites
15 минут назад, FatRobot сказал:

И отдельного грубого поиска не надо с "миллионами корреляций"

В том-то всё и дело, что система поганая сама по себе :( Раз в 4 секунды приходит слот из 7 символов OFDM. Четвертый, как в uplink LTE, пилот. Только тут все равно OFDM, а не SC-FDMA. Первый раз я ведь должен найти этот слот по времени, дальше уже можно только подстраиваться каждые 4 секунды, зная его ожидаемое место.

Можно, конечно, энергетический детектор использовать для первого обнаружения, но как писал выше, боюсь, что WiFi может очень портить поиск. Зато в этом случае скользящим окном довольно просто считается, не надо коррелировать символы с 1024 отсчётами. На три порядка выигрыш.

 

Share this post


Link to post
Share on other sites

Поганость системы не отменяет методов функционального анализа и лин. алгебры.

Разберетесь в итоге, я надеюсь.

 

Share this post


Link to post
Share on other sites
11 часов назад, FatRobot сказал:

Разберетесь в итоге, я надеюсь.

Уже нашел один косяк :) Я считал корреляции в частотной области неверно. Брал в качестве длины не размерность Nfft, а длину Задова-Чу, которая занимает только поднесущие, выделенные для передачи информации (это чуть больше половины по центру). Из-за IFO бины циклически сдвигаются, и я терял информацию в итоге.

Так стыдно теперь :blush:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this