реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> восстановление несущей ofdm модем
infinity
сообщение Mar 16 2010, 05:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 9-06-08
Пользователь №: 38 169



Постановка задачи:
делается небольшенький пакетный ofdm модем на 64 поднесущих. Разнесение поднесущих от 11 до 180kHz переключаемое. Схема восстановления несущей по заголовку

Есть две непонятки, первая по расчету:

Вне зависимости от разнесения поднесущих, сигнал ошибки со схемы восстановления дает погрешность не лучше 4% от величины разнесения. При этом усреднение ошибки от пакета к пакету невозможно, т.е. подстройка осуществляется только на текущий пакет. Вопрос, можно ли получить лучшие результаты по погрешности, возможно есть какие-то нестандартные способы и как стреляется полученная мной величина, с тем, что должно быть.

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

буду признателен всем, кто направит советом, или дорогой к мануалу, в котором описано решение схожих задач.
Go to the top of the page
 
+Quote Post
svalery
сообщение Mar 17 2010, 07:15
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 18-07-09
Из: Н.Новгород
Пользователь №: 51 363



Что мешает добавлять в начале пакета преамбулу достаточной длины для вычисления отстройки по частоте с заданой точностью?
Go to the top of the page
 
+Quote Post
DMax
сообщение Mar 17 2010, 11:47
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234



Цитата(infinity @ Mar 16 2010, 08:38) *
второй по эквалайзированию:
Если нескомпенсированная величина ошибки по несущей небольшая, то по идее ее должен скорректировать эквалайзер. Здесь получается небольшой затык. Делаю в два этапа: сначала для каждой поднесущей по обучающей последовательности нахожу мгновенное значение ошибки и для всех символов убираю эту ошибку. Далее для каждого символа считаю ошибку по пилотным поднесущим, в итоге имею деградацию среднего значения фазы и амплитуды и собственно, корректирую. В результате, если есть нескомпенсированная ошибка по несущей, то в зависимости от длинны пакета, в какой-то момент будет происходить перескок фазы на 180deg.


Не совсем понятно, откуда у вас берутся эти 180 градусов. Пилотные поднесущие должны иметь заранее известную фазу. На приёмной стороне после эквалайзера, вы должны посчитать разность между принятой фазой и этой заранее известной фазой, а потом вычесть эту дельту из всех поднесущих символа. Если будете вычислять эту дельту из суммы нескольких пилотов (которая должна быть для всех пилотов одинакова), то точность определения угла поворота созвездия возрастёт. И никаких перескоков (разве только на 360 градусов) быть не должно.
Go to the top of the page
 
+Quote Post
infinity
сообщение Mar 18 2010, 07:19
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 9-06-08
Пользователь №: 38 169



Цитата(svalery @ Mar 17 2010, 10:15) *
Что мешает добавлять в начале пакета преамбулу достаточной длины для вычисления отстройки по частоте с заданой точностью?


В начале пакета имеется символ, по которому вычисляется отстройка по частоте. Точность, как и говорил, не лучше 4%. Не совсем понятно, что вы понимаете под преамбулой, если обозначенная мной штука, тогда что есть достаточная длинна? Выделить на синхронизацию частоты больше одного символа не позволяет жадность - во всю идёт война с избыточностью

Цитата(DMax @ Mar 17 2010, 14:47) *
Не совсем понятно, откуда у вас берутся эти 180 градусов. Пилотные поднесущие должны иметь заранее известную фазу. На приёмной стороне после эквалайзера, вы должны посчитать разность между принятой фазой и этой заранее известной фазой, а потом вычесть эту дельту из всех поднесущих символа. Если будете вычислять эту дельту из суммы нескольких пилотов (которая должна быть для всех пилотов одинакова), то точность определения угла поворота созвездия возрастёт. И никаких перескоков (разве только на 360 градусов) быть не должно.

Возможно я немного некорректно выразился. unsure.gif Ситуация выглядит следующим образом:

Используются все поднесущие, кроме нулевой и 32. На входе эквалайзера искаженные амплитуды и фазы. По заголовку для каждой поднесущей определяется ошибка по фазе. После чего делается коррекция - f0. Предполагаю, что в процессе работы фаза и амплитуда могут деградировать, поэтому для каждого символа, используя пилоты, определяю среднюю деградацию и во второй раз делаю коррекцию - f1. Картинка, когда ошибки по несущей нет, и все работает хорошо
Прикрепленное изображение


Совсем другое дело, когда есть ошибка по несущей:

Для примера выключил коррекцию ошибки несущей по заголовку, и добавил большую ошибку (дабы эффект происходящего был более нагляден). Видно, что в точке f0 средняя фаза деградирует - линейно 'плывёт' со скоростью, определяемой ошибкой частоты. В результате, в точке f0 имеются повороты фазы с шагом 90deg. Такой эффект получается, если часть пилотов на интервале одного символа в точке f0 содержит ошибку в 90deg, а часть- без нее. Ясно, что эквалайзер не должен уметь исправлять ошибки, когда фаза шустро меняется на интервале одного символа. Но когда ошибочка по несущей небольшая, рано или поздно случаются одиночные символы, на которых фаза 'прокручивается'.

Прикрепленное изображение


Возможно порядок работы эквалайзера должен быть не такой? crying.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
svalery
сообщение Mar 18 2010, 08:52
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 18-07-09
Из: Н.Новгород
Пользователь №: 51 363



Цитата(infinity @ Mar 18 2010, 10:19) *
тогда что есть достаточная длинна


Длина необходимая для получения нужной точности оценки при заданном уровне шума. При каком уровне шума у вас получается эта 4% ошибка, меняется она с увеличением шума? Если проверяется без шума, то сам по себе алгоритм ошибку давать не может, если только что то не загрублено с разрядностью.
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 18 2010, 09:15
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(infinity @ Mar 18 2010, 10:19) *
Возможно порядок работы эквалайзера должен быть не такой?


Расскажите подробно как эквалайзер работает. Как по поднесущим и по символам усреднение сделано для исправления одной несущей.
Go to the top of the page
 
+Quote Post
DMax
сообщение Mar 18 2010, 10:14
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234



Цитата(infinity @ Mar 18 2010, 10:19) *
Совсем другое дело, когда есть ошибка по несущей:

Для примера выключил коррекцию ошибки несущей по заголовку, и добавил большую ошибку (дабы эффект происходящего был более нагляден). Видно, что в точке f0 средняя фаза деградирует - линейно 'плывёт' со скоростью, определяемой ошибкой частоты. В результате, в точке f0 имеются повороты фазы с шагом 90deg. Такой эффект получается, если часть пилотов на интервале одного символа в точке f0 содержит ошибку в 90deg, а часть- без нее. Ясно, что эквалайзер не должен уметь исправлять ошибки, когда фаза шустро меняется на интервале одного символа. Но когда ошибочка по несущей небольшая, рано или поздно случаются одиночные символы, на которых фаза 'прокручивается'.


Секундочку. То, что вы тут говорите противоречит теории.

По порядку. Предположим, что вы передаёте OFDM-символы, в которых все поднесущие имеют одинаковую амплитуду и фазу. На приемной стороне вы принимаете сигнал, в котором:
0) Все параметры сигнала чуть-чуть искажены из-за шумов.
1) Фазы (и, обычно, в меньшей мере амлитуды) искажены из-за частотной отстройки.
2) Фазы искажены из-за погрешности синхронизации.
3) Фазы и амплитуды искажены из-за многолучевости.

Далее, нулевой пункт не убирается.

Первый пункт, убирается тем, что вы по преамбуле определяете величину частотной отстройки во временной области. И во временной же области вы компенсируете, домножая на комплексную синусоиду с обратной частотой. Однако, в присутствие погрешности вы никогда не сведете отстройку к 0, а только уменьшите её. Но остаток этой отстройки будет приводить к тому, что созвездие будет по чуть-чуть вращаться вокруг 0. Причём внутри символа (после FFT) этот остаток отстройки не будет играть роли (разве только нарушая ортогональность, но эффект минимален). Его можно увидеть только сравнив созвездия двух символов, и чем дальше эти символы будут друг от друга - тем сильнее будет виден поворот созвездия. Для того чтобы поворачивать созвездие обратно, используют пилоты.

Далее, второй пункт. В зависимости от используемого вами метода временной синхронизации, величина ошибки синхронизации может быть от длительности полусэмпла до длительности защитного интервала. Наличие этой ошибки (по теореме о задержке) обусловливает добавочную фазу к поднесущим, величина которой прямо пропорциональна номеру поднесущей. То есть предположим, что мы передавали поднесущие с одной и той же фазой и амплитудой, а все остальные искажения отсутствуют. Тогда на приемной стороне, мы получим поднесущие с одной амплитудой, но с фазами, образующими наклонную прямую на графике фаз. Или же, что то же самое, если отложить на комплексной плоскости полученные поднесущие и соединить их одной кривой, то мы получим идеальный кусок окружности с радиусом равным амплитуде поднесущих. Если частота дискретизации на приемной и передающей сторонах совпадают (с большой точностью), то величина ошибки одна и та же на всех символах одного пакета. А значит величина добавочной фазы для n-ой поднесущей тоже постоянна. То есть эту ошибку можно учесть в эквалайзере.

Третий пункт по определению исправляется эквалайзером.

Таким образом, если вы видите, что после эквализации у вас внутри символа линейно изменяется фаза по поднесущим, то
а) вы не правильно рассчитали эквалайзер
б) у вас проблема с частотой дискретизации.

Ну и в заключение... вы там со своей борьбой за избыточность надеюсь не забыли про защитные интервалы во временной и частотной областях?
Go to the top of the page
 
+Quote Post
infinity
сообщение Mar 18 2010, 12:52
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 9-06-08
Пользователь №: 38 169



Цитата(svalery @ Mar 18 2010, 11:52) *
Длина необходимая для получения нужной точности оценки при заданном уровне шума. При каком уровне шума у вас получается эта 4% ошибка, меняется она с увеличением шума? Если проверяется без шума, то сам по себе алгоритм ошибку давать не может, если только что то не загрублено с разрядностью.


сигнал/шум не менее 30дБ. Проверки проводились как в режиме цифрового шлейфа, так и через радиоканал. О многолучевости пока речи нет. Разрядность не загублена с вероятностью не менее 95%.

Для индексов модуляции меньше qam64 полученные 4% приемлимы. Начиная с qam64 мой эквалайзер не слишком хорошо справляется. Остюда и появлися такой вопрос.

Насколько я понимаю, любая схема восстановления несущей отработает с какой- то погрешностью. Вот только на сколько хорошо? Буду признателен, если кто- то делал модем на базе ofdm и поможет 'пристрелятся' к цифрам biggrin.gif
Go to the top of the page
 
+Quote Post
alex_os
сообщение Mar 18 2010, 13:28
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(infinity @ Mar 18 2010, 15:52) *
..
Насколько я понимаю, любая схема восстановления несущей отработает с какой- то погрешностью. Вот только на сколько хорошо? Буду признателен, если кто- то делал модем на базе ofdm и поможет 'пристрелятся' к цифрам biggrin.gif


А как несущую меряете? Может ошибка в алгоритме?


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
infinity
сообщение Mar 18 2010, 14:42
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 9-06-08
Пользователь №: 38 169



Цитата(petrov @ Mar 18 2010, 12:15) *
Расскажите подробно как эквалайзер работает. Как по поднесущим и по символам усреднение сделано для исправления одной несущей.


Эквалайзер работает как корректор искажений. Два этапа:

1 по каждой поднесущей скорректировать долговременные искажения ачх и фчх

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

2 быстрые изменения ачх и фчх

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

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

В итоге, сейчас видится, что нужно либо менять весь алгоритм, либо что-то немного допилить. Второй вариант более желателен, но пока не видится как это сделать crying.gif






Цитата(DMax @ Mar 18 2010, 13:14) *
По порядку. Предположим, что вы передаёте OFDM-символы, в которых все поднесущие имеют одинаковую амплитуду и фазу.

На приемной стороне вы принимаете сигнал, в котором:
0) Все параметры сигнала чуть-чуть искажены из-за шумов.
1) Фазы (и, обычно, в меньшей мере амлитуды) искажены из-за частотной отстройки.
2) Фазы искажены из-за погрешности синхронизации.
3) Фазы и амплитуды искажены из-за многолучевости.


Спасибо за обстоятельный ответ. smile.gif
С 0) и 2) все понятно. 3) при моделировании железяка работает- пока что считаю что и в реальности будет работать.
Сейчас бъюсь над 1).

Цитата(DMax @ Mar 18 2010, 13:14) *
Первый пункт, убирается тем, что вы по преамбуле определяете величину частотной отстройки во временной области. И во временной же области вы компенсируете, домножая на комплексную синусоиду с обратной частотой. Однако, в присутствие погрешности вы никогда не сведете отстройку к 0, а только уменьшите её. Но остаток этой отстройки будет приводить к тому, что созвездие будет по чуть-чуть вращаться вокруг 0.


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

Цитата(DMax @ Mar 18 2010, 13:14) *
Причём внутри символа (после FFT) этот остаток отстройки не будет играть роли (разве только нарушая ортогональность, но эффект минимален). Его можно увидеть только сравнив созвездия двух символов, и чем дальше эти символы будут друг от друга - тем сильнее будет виден поворот созвездия. Для того чтобы поворачивать созвездие обратно, используют пилоты.

Таким образом, если вы видите, что после эквализации у вас внутри символа линейно изменяется фаза по поднесущим, то
а) вы не правильно рассчитали эквалайзер
б) у вас проблема с частотой дискретизации.


Такой поворот созвездия я и наблюдаю. Вот только качественно довернуть не совсем получается.

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

Чуть выше описал, как работает эквалайзер в моем исполнении. Ошибка днк не видится sad.gif

Цитата(DMax @ Mar 18 2010, 13:14) *
Ну и в заключение... вы там со своей борьбой за избыточность надеюсь не забыли про защитные интервалы во временной и частотной областях?


biggrin.gif Во временной области интервалы имеются. А что имеется ввиду под защитными интервалами в частотной области, не совсем понятно. Может я упустил ужасно важную штуку?
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 18 2010, 15:24
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(infinity @ Mar 18 2010, 17:42) *
Эквалайзер работает как корректор искажений. Два этапа:

1 по каждой поднесущей скорректировать долговременные искажения ачх и фчх

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

2 быстрые изменения ачх и фчх

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

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

В итоге, сейчас видится, что нужно либо менять весь алгоритм, либо что-то немного допилить. Второй вариант более желателен, но пока не видится как это сделать crying.gif


Ничего непонятно. Опустим первоначальную настройку. Засинхронизировались вы как то, из-за небольшого сдвига по частоте имеете вращение созвездия в каждой поднесущей. Как у вас распределены пилот-тоны по поднесущим и по символам? Как вы осуществляете усреднение пилот-тонов по поднесущим и по сиволам? Скажем 16-я поднесущая в 20-ом символе, какие пилот-символы участвуют в усреднении для получения оценки канала для этой поднесущей, как интерполяция осуществляется и т. п.?
Go to the top of the page
 
+Quote Post
svalery
сообщение Mar 18 2010, 16:37
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 18-07-09
Из: Н.Новгород
Пользователь №: 51 363



Цитата(infinity @ Mar 18 2010, 17:42) *
А что имеется ввиду под защитными интервалами в частотной области, не совсем понятно. Может я упустил ужасно важную штуку?


Если используются все 64 поднесущих то как планируется делать апсемплинг в дальнейшем? При этом переходная полоса получается - 0, ессно интерполирующие фильтры будут не реализуемыми.
Go to the top of the page
 
+Quote Post
infinity
сообщение Mar 19 2010, 05:23
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 9-06-08
Пользователь №: 38 169



Цитата(svalery @ Mar 18 2010, 19:37) *
Если используются все 64 поднесущих то как планируется делать апсемплинг в дальнейшем? При этом переходная полоса получается - 0, ессно интерполирующие фильтры будут не реализуемыми.

Можно использовать в передатчике фурье на 128 точек, с полезной нагрузкой в 64 поднесущих и с интерполяцией будет все в норме. А по приему это не важно и ставим преобразование на 64 точки, так? wink.gif

Цитата(petrov @ Mar 18 2010, 18:24) *
Ничего непонятно. Опустим первоначальную настройку. Засинхронизировались вы как то, из-за небольшого сдвига по частоте имеете вращение созвездия в каждой поднесущей. Как у вас распределены пилот-тоны по поднесущим и по символам? Как вы осуществляете усреднение пилот-тонов по поднесущим и по сиволам? Скажем 16-я поднесущая в 20-ом символе, какие пилот-символы участвуют в усреднении для получения оценки канала для этой поднесущей, как интерполяция осуществляется и т. п.?


Прошу прощения, если мое изложение излишне сумбурное. Попробую описать по порядку:

Во временной области каждый пакет состоит из:
- преамбулы, ко которой осуществляется грубая коррекция ошибки несущей частоти и временная синхронизация.
- обучающей последовательности эквалайзера.
- символов данных
Каждый символ пакета - 64 поднесущих, 8 из которых - пилотные. В настоящий момент, для простоты, пилоты находятся в каждом символе на одних и тех же местах.
Устреднение пилотов осуществляется только на интервале одного символа.
Считаю, что по заголовку эквалайзер гарантированно выходит на режим, и в символах данных пилоты использую лишь чтобы немного доворачивать картинку.

Сообщение отредактировал infinity - Mar 19 2010, 05:09
Go to the top of the page
 
+Quote Post
svalery
сообщение Mar 19 2010, 05:50
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 18-07-09
Из: Н.Новгород
Пользователь №: 51 363



Цитата(infinity @ Mar 19 2010, 08:23) *
Можно использовать в передатчике фурье на 128 точек, с полезной нагрузкой в 64 поднесущих и с интерполяцией будет все в норме. А по приему это не важно и ставим преобразование на 64 точки, так? wink.gif


Можно и так, просто иногда накладно Фурье в 2раза больше делать. Расскажите как планируется делать подстройку частоты если она больше ширины поднесущей ?

Сообщение отредактировал svalery - Mar 19 2010, 05:52
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 19 2010, 06:50
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(infinity @ Mar 19 2010, 08:23) *
Во временной области каждый пакет состоит из:
- преамбулы, ко которой осуществляется грубая коррекция ошибки несущей частоти и временная синхронизация.
- обучающей последовательности эквалайзера.
- символов данных
Каждый символ пакета - 64 поднесущих, 8 из которых - пилотные. В настоящий момент, для простоты, пилоты находятся в каждом символе на одних и тех же местах.
Устреднение пилотов осуществляется только на интервале одного символа.
Считаю, что по заголовку эквалайзер гарантированно выходит на режим, и в символах данных пилоты использую лишь чтобы немного доворачивать картинку.


Т. е. канал у вас меняется настолько медленно что оцениваете вы его только по обучающей последовательности?

Пилот-тоны используете только лишь для подстройки частоты?

Усреднения по 8-ми пилот-тонам мало для реального отношения сигнал/шум, тем более что некоторые пилоты могут быть задавлены каналом.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 17:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01549 секунд с 7
ELECTRONIX ©2004-2016