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

Нашёл в сети исходник на MatLab'e по генерации, передачи и получению OFDM сигнала, но у меня задача другая. Имеется сигнал OFDM, записанный с эфира. Надо его прослушать, т.е. демодулировать. Коверкался с исходником, так ничего и не получилось.

 

Уважаемые эксперты! Помогите, может у кого завалялся демодулятор OFDM сигналов!? Заранее большое спасибо. :)

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


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

Насколько мне известно, ортогональное частотное мультиплексирование - всего лишь метод, суть которого в разбиении частотного канала на несколько частотных подканалов. Сами же подканалы могут иметь любой известный вид модуляции, поэтому демодулятор OFDM в принципе состоит из многоканального приемника и устройства объеденения потоков подканалов (в случае цифрового сигнала). Не зная схемы модуляции подканалов и схемы разбиения цифрового потока на подканалы, говорить о приеме такого сигнала просто бессмысленно.

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


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

Насколько мне известно, ортогональное частотное мультиплексирование - всего лишь метод, суть которого в разбиении частотного канала на несколько частотных подканалов. Сами же подканалы могут иметь любой известный вид модуляции, поэтому демодулятор OFDM в принципе состоит из многоканального приемника и устройства объеденения потоков подканалов (в случае цифрового сигнала). Не зная схемы модуляции подканалов и схемы разбиения цифрового потока на подканалы, говорить о приеме такого сигнала просто бессмысленно.

Всё так. Сигнал уже есть. Записан с эфира. Хочу послушать. Но нет у меня подходящего демодулятора. Хоть бы какой простой демодулятор подсказали(в идеале надо чтоб по каждому подканалу можно было выбирать вид модуляции и соответственно ей демодуляцию), знал бы от чего отталкиваться. :help:

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


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

Извините за оффтоп, тоже вопросик есть...

Есть запись сигнала, параметры которого полностью известны, но вот демодулировать его у меня не получается... В каждом символе есть небольшая копия конца символа (guard интервал) и сам символ. При движении "окна" DFT по всему этому символу амплитуды ессно остаются почти одинаковыми, но вот фазы крутятся...

Если удачно подогнать смещение от начала, то этот поворот будет таким что его можно скорректировать по pilot-поднесущим (фаза откладывается по вертикали от -180 до + 180):

post-10008-1188332162_thumb.jpg

А если не повезет, то так:

post-10008-1188332174_thumb.jpg

Во втором случае, наверное, ничто не поможет...

Подскажите, пожалуйста, что может быть не так, как быть...

Может частота дискретизации немного не верно выбрана что приводит к такому поведению фаз?..

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


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

В каждом символе есть небольшая копия конца символа (guard интервал) и сам символ. При движении "окна" DFT по всему этому символу амплитуды ессно остаются почти одинаковыми, но вот фазы крутятся...

Не понял, окно DFT вдоль одного символа смещается у Вас? Вы один канал пытаетесь обработать таким образом?

Может частота дискретизации немного не верно выбрана что приводит к такому поведению фаз?..

если частота дискретизации неправильная то все ломается :). Многие звуковухи вместо оцифровки на 8000 кГц цифруют на частоте Гц на 50 меньшей. Вообщем осторожно нужно с этим...

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


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

Не понял, окно DFT вдоль одного символа смещается у Вас? Вы один канал пытаетесь обработать таким образом?

Запись сигнала в IQ форме, т.е. комплексной, два канала получается. Под окном я подразумеваю то что есть OFDM символ, который состоит из собственно самого информационного символа и из его небольшой части, которая подставлена вперед. Комплексное DFT я беру ессно с точностью на время информационного символа. Начальный отсчет может быть сдвинут "влево" по времени на время длительности этой копии, т.е. это окно у меня движется в пределах одного OFDM символа...

если частота дискретизации неправильная то все ломается :). Многие звуковухи вместо оцифровки на 8000 кГц цифруют на частоте Гц на 50 меньшей. Вообщем осторожно нужно с этим...
т.е. как понять "ломается"? Это значит что у меня как раз тот самый случай?

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


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

Запись сигнала в IQ форме, т.е. комплексной, два канала получается. Под окном я подразумеваю то что есть OFDM символ, который состоит из собственно самого информационного символа и из его небольшой части, которая подставлена вперед. Комплексное DFT я беру ессно с точностью на время информационного символа. Начальный отсчет может быть сдвинут "влево" по времени на время длительности этой копии, т.е. это окно у меня движется в пределах одного OFDM символа...

т.е. как понять "ломается"? Это значит что у меня как раз тот самый случай?

А на картинке фаза крутится для одной несущей?

Вообщем, лучше бросить смотреть на непонятную фазу и делать так:

1) Правильно спозиционировать "окно DFT". Для этого считаете корреляцию защитного интервала и последнего куска символа длинной в защитный интервал. Т.е.

Ls - длина символа

Lg - длина защитного интервала

Lu - длина окна

s - Ваш сигнал (вектор-строка)

Ns - длина сигнала в символах

 

в Матлабовской нотации:

for offset = 1:Ls
    r(offset) = 0; 
    index1 = offset; 
    index2 = offset+Lu;  
    for i = 1: Ns
        r(offset) = r(offset) + r(index1: index1+Lg-1) * r(index2: index2+Lg-1)';
        index1 = index1+Ls;  index2=index2+Ls;  
    end
end

Идея такая когда защитный интервал и его копия совпадут корреляция будет максимальна. Это широкоизвестный способ символьной синхронизации для ОFDM. Длинна выборки должны быть довольна значительна (порядка сотни символов). График abs( r ) имеет характерную треугольную форму ширина основания треугольника примерно 2*Lg. При отклонении частоты дикретизации от истинной треугольник скругляется, если сильное отклонение вообще исчезает.

 

2) Если треугольник получился, тогда пол-дела сделано, позиционируется начало вашего окна на offset соответсвующий максимуму(max_offset) r + Lg/2. Считаете ДПФ и пытаетесь увидеть пилоты. Кстати arg(r(max_offset)) величина пропорциональная сдвигу несущей.

 

Еще по гуглите "OFDM timing recovery" найдете массу ссылок.

 

ps: а что за сигнал у Вас, если не секрет?

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


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

Спецам, касательно ОФДМ:

 

1)На счёт циклического префикса. Интересует следующее. Как правильно задать размер? На что именно он повлияет. + и - больших и малых GT.

 

2)Касательно ТИПА префикса. Какой вид циклического префикса использовать?, или стандартный, когда часть отсчетов из начала добавляется в конец, или другой, когда в конец просто дописываются нули. Какие положительные и отрицательные стороны у обоих?.

 

Какая именно часть отсчётов добавляется в конец? сколько 0?

 

3)Ещё вопрос касательно рациональности выбора числа поднесущих. Каков подход, опять же +/-

 

4)Читал что частотный разнос каналов = скорости манипуляции. Так ли это на самом деле? И как задаётся эта скорость? На что влияет?

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


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

1)На счёт циклического префикса. Интересует следующее. Как правильно задать размер? На что именно он повлияет. + и - больших и малых GT.

 

Чем длинее у тебя ИХ канала тем длинее дожен быть ЦП, иначе будет межсимвольная интерференция, и вся радость от OFDM пропадет. Ну а экстремельно длинные ЦП очевидно снижают скорость передачи.

 

2)Касательно ТИПА префикса. Какой вид циклического префикса использовать?, или стандартный, когда часть отсчетов из начала добавляется в конец, или другой, когда в конец просто дописываются нули. Какие положительные и отрицательные стороны у обоих?.

 

Добавление нулей имеет положительный момент, что у тебя не появятся нули в оценке частотной характеристики, минус - гораздо более сложная организация приемника. Тут простым БПФ не обойтись, так как свертка с каналом уже не бкдет считаться циклической.

 

Какая именно часть отсчётов добавляется в конец? сколько 0?

 

Отсчеты добавляются вначало, из конца. Впринципе конечно ни кто не мешает сделать наоборот, но как то классически добавляется последних К отсчетов к началу

 

3)Ещё вопрос касательно рациональности выбора числа поднесущих. Каков подход, опять же +/-

 

Тут все зависит от длины выбранного ЦП. Если ЦП 100 отсчетов, то использование БПФ на 128 не рационально ;-)

С другой стороны, использование слишкои больших БПФ приводит к огромному пик-фактору, что конечно так же не приятно/

 

4)Читал что частотный разнос каналов = скорости манипуляции. Так ли это на самом деле? И как задаётся эта скорость? На что влияет?

 

частотный разнос каналов = частота дискретизации/(размер бпф+ЦП), при чем тут скорость манипуляции?

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


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

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

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


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

zhorro

Спасибо за помощь.

частотный разнос каналов = частота дискретизации/(размер бпф+ЦП), при чем тут скорость манипуляции?

А чем тогда определяется скорость?

Изменено пользователем Dub01

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


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

- поподробней можно пояснить, что за нули, почему берутся и что за оценка частотной характеристики - чего?

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

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


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

Добавление нулей имеет положительный момент, что у тебя не появятся нули в оценке частотной характеристики, минус - гораздо более сложная организация приемника. Тут простым БПФ не обойтись, так как свертка с каналом уже не бкдет считаться циклической.

 

А что нам даёт циклическая свертка?, даже если она не будет циклической, и что тогда? И какой БПФ необходим в таком случае? :07:

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


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

А что нам даёт циклическая свертка?, даже если она не будет циклической, и что тогда? И какой БПФ необходим в таком случае? :07:

 

Циклическая свёртка даёт возможность считать, что принятый символ циклически свернут с каналом, а в этом случае можно считать, что принятый символ после БПФ будет представлять собой передаваемое распределение по созвездиям умноженное на комплексный коэффициент передачи канала.

Если свёртка будет не циклической необходимы укорачивающие фильтры, которые приведут длину сквозной ИХ канала к длине ЦП.

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


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

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

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

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

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

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

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

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

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

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