|
Я думал, что понимаю OFDM, Как я ошибся :) |
|
|
|
Apr 19 2010, 18:39
|
Частый гость
 
Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234

|
В общем-то имел опыт работы с несколькими типами OFDM сигналов и думал, что понимаю всё - от и до. Однако столкнулся тут с проблемой и понял, что мне не приходит в голову решения.
Имя этой проблеме Mobile WiMAX, т.е. IEEE 802.16-2009 глава 8.4 - OFDMA. А именно обнаружение и синхронизация с базовой станцией. Для тех, кто не в курсе, вкратце расскажу. Все базовые станции (БС) сети одного оператора синхронизированны между собой, то есть в один и тот же момент каждые 5 милисекунд начинают посылать фрейм. Чтобы БС, работающие на одной частоте, друг с другом меньше интерферировали каждая базовая станция имеет свой паттерн перестасовки поднесущих, отличный от паттернов соседних БС, но не уникальный. Всего таких паттернов 114, или по 38 в каждом из трёх (условных) секторов БС. Условных потому, что нигде не прописано, что БС должна иметь сектора и если должна, то сколько. Но условно паттерны разделяются на три сектора. Чтобы в момент приёма понять, что за паттерн используется данной БС, а также в целях синхронизации с БС, фрейм предваряется преамбулой, которая является почти таким же OFDM-символом с циклическим префиксом как и все другие символы фрейма. Только преамбул этих 114 видов (по количеству паттернов). Имеют они не хитрую структуру: в них присутсвует энергия в каждой третей поднесущей, а все остальные поднесущие пусты. Как не трудно догадаться, установить каждую третию поднесующую можно тремя способами. Соответственно, который из этих способов используется данной БС, тот и определяет её условный сектор - 0, 1 или 2. А дальше, как было сказанно выше, каждый сектор имеет 38 уникальных преамбул. Они по сути являются псевдослучайными последовательностями единичек и ноликов, которые модулируют не пустые поднесущие созвездием BPSK. Все эти 114 последовательностей прописаны в стандарте.
Так например, положим у нас есть преамбула 11001001..... в нулевом секторе. Тогда поднесущие 0, 3, 12 и 21 будут иметь фазу 0, а поднесущие 6, 9, 15 и 18 - фазу Pi, и некоторую не нулевую и одинаковую амплитуду, а остальные поднесущие имеют амплитуду 0.
Соответственно, на приемной стороне требуется. 1) Обнаружить и найти преамбулу 2) Найти центральную частоту 3) Определить тип преамбулы, а точнее сектор и номер внутри сектора.
Не выполнив третий пункт можно синхронизироваться, но демодулировать фреймы невозможно, так как из номера преамбулы и номера сектора вырабатывается туева хуча перестановок поднесущих. То есть все три пунтка обязательны.
Вот тут и возникает задница. До селе я использовал следующий алгоритм.
1) Находил автокорреляцией циклический префикс. Но у него очень размазанный корреляционный пик. Поэтому, так можно определить только лишь примерное место, где имеется OFDM-символ. Понять преамбула это или нет также не представляется возможным. Однако, результат этих вычислений можно использовать для оценки частотного смещения. Причем оценить смещение по частоте таким способом можно лишь в пределах +/- 0.5 шага между поднесущими.
2) Сигнал любой из 114 преамбул, из-за того, что в нем фазы всех поднесущих отличаются на 0 или Pi (то как бы есть лежат на одном диаметре окружности) должен быть симметричен во времени относительно центральной точки, делящей преамбулу пополам. Соответственно, если мы успешно проверили гипотезу в первом шаге, то проверяем гипотезу симметричности во времени. Если она выполняется, значит мы локализовали преамбулу (или что-то очень на неё похожее) с точностью до одного сэмла и переходим к следующему шагу.
3) Делаем преобразование Фурье, смотрим в каком из трёх возможных распределений поднесущих содержится максимальная энергия, и пытаемся демодулировать эти поднесущие. Исходя из того, что мы не можем локализовать преамбулу с точностью большей чем один сэмпл, получается, что фазы поднесущих уже могут не быть строго 0 и Pi, но разность фаз между соседними поднесущими не должна сильно отличаться от 0 и Pi. Поэтому проходим все поднесущие слева на права и демодулируем каждую поднесущую как бы относительно предыдущей. Резонно, что мы не знаем как была модулирована первая поднесущая. Поэтому мы получаем две инвертированных относительно друг друга последовательности нулей и единиц. А далее находим наименее отличающуюся эталонную (одну из 114) последовательность по таблице из стандарта.
Всё хорошо, но вот сигнал, записанный на узкой улочке, не проходит через этот алгоритм. Модем провайдера при этом ухитряется работать - плохо, но работает. А мой алгоритм не проходит проверку второй гипотезы ни в одной точке. Хотя если там искусственно загрубить порог правдоподобия, т.е. сразу перейти к шагу 3, то там хорошо видно, что энергия сигнала распределена по каждой третьей поднесущей, то есть там преамбула. Однака попытка её демодулировать кончается тем, что ближайшая по похожести преамбула определяется с очень большим количеством несовпадений и, как видно в дальнейшей работе, определяется к томуже не правильно. То есть получается, что поднесущие присутствуют правильные, но у них что-то не так с фазами.
Что я здесь не учел? Похоже, что многолучевость. Ведь поднесущие, фазы которых лежат на одном диаметре (как было описано выше) на передаче, в результате действия многолучевости, совершенно не обязательно будут иметь (примерно) фазы такой же структуры на приёме. А тогда, если фазы не лежат на одном диамете, сигнал во временной области теряет своё свойство симметрии. А биты (даже если мы случайно попадем точно в преамбулу) тем более не понятно как тогда демодулировать. Оценить канал и построить эквалайзер на данном этапе просто не по чему. Что же делать и как выяснить номер преамбулы в таком случае?
До сих пор встречались лишь OFDM-сигналы, в которых преамбула всегда одна и таже. В таких сигналах я обнаружал её в частотной области и по ней уже строил эквалайзер. То есть задачи определить её конкретный вид, основываясь на фазах поднесущих, не стояло.
|
|
|
|
Сообщений в этой теме
DMax Я думал, что понимаю OFDM Apr 19 2010, 18:39 Oldring Цитата(DMax @ Apr 19 2010, 22:54) Что я з... Apr 20 2010, 04:30 DMax Цитата(Oldring @ Apr 20 2010, 08:45) Скор... Apr 20 2010, 07:05  Oldring Цитата(DMax @ Apr 20 2010, 11:20) Кроме т... Apr 20 2010, 07:44   DMax Цитата(Oldring @ Apr 20 2010, 11:59) Так ... Apr 20 2010, 08:39    petrov Смотрите алгоритм Schmidl. Символ преамбулы состои... Apr 20 2010, 09:19     DMax Цитата(petrov @ Apr 20 2010, 13:34) Смотр... Apr 20 2010, 11:29      petrov Цитата(DMax @ Apr 20 2010, 15:44) Кто вам... Apr 20 2010, 13:58    Oldring Цитата(DMax @ Apr 20 2010, 12:54) Длина ц... Apr 20 2010, 13:54     DMax Цитата(Oldring @ Apr 20 2010, 18:09) Како... Apr 20 2010, 14:19      petrov Цитата(DMax @ Apr 20 2010, 18:34) Ага, из... Apr 20 2010, 14:32       DMax Цитата(petrov @ Apr 20 2010, 18:47) Почем... Apr 20 2010, 20:19        petrov Цитата(DMax @ Apr 21 2010, 00:34) Потому ... Apr 21 2010, 07:12         DMax Цитата(petrov @ Apr 21 2010, 11:27) Про с... Apr 21 2010, 08:05      samurad Цитата(DMax @ Apr 20 2010, 17:34) Ага, из... Apr 22 2010, 04:39       DMax Цитата(samurad @ Apr 22 2010, 08:54) ИМХО... Apr 22 2010, 06:50        samurad Цитата(DMax @ Apr 22 2010, 11:05) Мне про... Apr 22 2010, 09:34         DMax Цитата(samurad @ Apr 22 2010, 13:49) А эт... Apr 22 2010, 13:02          samurad Цитата(DMax @ Apr 22 2010, 16:17) Надо, н... Apr 22 2010, 14:13           DMax Цитата(samurad @ Apr 22 2010, 18:13) А та... May 6 2010, 12:01 mikalaha Если еще актуально.
Быстрый поиск точного начала п... Jul 22 2010, 05:10 DMax Цитата(mikalaha @ Jul 22 2010, 09:10) Есл... Jul 23 2010, 10:55  Kokos DMax
а не могли бы вы поделиться кодом для синхрон... Mar 10 2011, 18:56 mikalaha Цитата(DMax @ Jul 23 2010, 14:55) Вообще ... Jul 27 2010, 05:26 mikalaha DMax, спасибо за ответ в ветке по STC.
Пока разра... Aug 9 2010, 14:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|