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

Вопрос по модулятору OFDM

С учебной целью хочу на матлабе сделать модель канала с OFDM модуляцией/демодуляцией используя  ofdmmod()/ofdmdemod(); Ну и все это работает, если выходные данные модулятора загонять в демодулятор. Но когда пробую имитировать цепь с квадратурной модуляцией и переносом спектра на промежуточную частоту и назад ( пробовал на fp=8кГц при частоте сеплирования fs=32кГц и fp=40kHz при fs=360кГц) ofdmdemod - выдает полный бред, хотя спектры до и после переноса достаточно хорошо совпадают(см. аттачмент). Заметил, что для матлаба все примеры без переноса частот - все почему-то пропускают этот момент.   

specctr1.png

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


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

1 час назад, phantom сказал:

имитировать цепь с квадратурной модуляцией и переносом спектра на промежуточную частоту и назад

Использовали готовый блок или свой реализовали?

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

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

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


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

Нет, просто умножал на синус и косинус и суммировал для передатчика. A в приемнике делал наоборот. Типа такого:
 

% HF modulation => shift spectrum Up (to Fc)
for i=1:length(dQ)
xSQ(i) = dQ(i) * cos(2*pi*fc * i * dT);
xSI(i)  = dI(i) * sin(2*pi*fc * i * dT);
end
xS = xSQ + xSI;

*****
% Start to receive data => put spectrum down
for i=1 : length(xS)
rQ(i)  = 1.4 * xS(i) * cos(2*pi*(fc) * i * dT) ;
rI(i)   = 1.4 * xS(i) * sin(2*pi*(fc) * i * dT) ;
end
rSx= complex(rQ,rI);
rSx = filter(batt_60k_fs360k,rSx);
 

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


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

On 9/6/2022 at 9:07 AM, phantom said:

Нет, просто умножал на синус и косинус и суммировал для передатчика. A в приемнике делал наоборот. Типа такого:
 

xSI(i)  = dI(i) * sin(2*pi*fc * i * dT);
 
rI(i)   = 1.4 * xS(i) * sin(2*pi*(fc) * i * dT) ;

Разве можно умножать два раза на синус?

 

Не смотрите на спектры - посмотрите на числа...

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


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

1 hour ago, _4afc_ said:

Разве можно умножать два раза на синус?

 

Не смотрите на спектры - посмотрите на числа...

Это я не понял. Согласно схем, вроде как можно (Re - компоненты умножаются 2 раза на гармоническое колебание с одинаковой фазой):

 1131px-OFDM_transmitter_ideal.png

1200px-OFDM_receiver_ideal.png

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


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

В 06.09.2022 в 10:07, phantom сказал:

rSx = filter(batt_60k_fs360k,rSx);

А фильтр batt_60k_fs360k - это судя из названия фильтр Баттерворта?:) И как задержку компенсируете перед демодуляцией? А с нелинейностью ФЧХ как боретесь?

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


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

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

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


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

В 06.09.2022 в 14:45, phantom сказал:

Может есть готовый блок синхронизации?

Готовых блоков не встречал. Могу посоветовать посмотреть книгу Cho Y.S. et al. MIMO-OFDM Wireless Communications with MATLAB, там есть раздел по синхронизации OFDM. К ней есть арихв примеров для Matlab.

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


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

В 06.09.2022 в 15:45, phantom сказал:

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

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

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


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

2 hours ago, alexPec said:

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

Да я просто думал, что это надо делать для реального канала. А тут канала то и нет никакого, все идеально. Умножил 2 раза на синусы/косинусы, какие тут серьезные искажения? А оно реагирует даже на ресемпл вверх/вниз (функцией resample) и без проведения частотных переносов - на выходных графиках появляется легкая "рябь". Так оно вообще какое-то сверхчувствительное, получается. 
... MIMO-OFDM Wireless Communications with MATLABЗа книгу спасибо, у меня такой не было. 

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


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

52 минуты назад, phantom сказал:

Да я просто думал, что это надо делать для реального канала. А тут канала то и нет никакого, все идеально. Умножил 2 раза на синусы/косинусы, какие тут серьезные искажения? А оно реагирует даже на ресемпл вверх/вниз (функцией resample) и без проведения частотных переносов - на выходных графиках появляется легкая "рябь". Так оно вообще какое-то сверхчувствительное, получается. 
... MIMO-OFDM Wireless Communications with MATLABЗа книгу спасибо, у меня такой не было. 

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

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


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

7 hours ago, phantom said:

Так оно вообще какое-то сверхчувствительное, получается. 

Добро пожаловать в OFDM)

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


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

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

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

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

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

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

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

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

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

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