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

Прием сигнала анализатором - ресемплинг

Я генерирую сигнал векторным генератором, задал частоту дискретизации 1000 кГц, то есть полоса сигнала 1 МГц, 0.5 МГц слева несущей частоты и 0.5 МГц справа, я прав?

Тогда имеем на приеме необходимость анализа полосы 1 МГц. В приборе доступно 4.167 МГц, то есть на каждую выборку моего сигнала теоретически приходится 4.167 выборок с анализатора спектра, опять же, ничего не путаю?

Итак, в итоге получаем, что мне нужно в Матлабе использовать какой-то фильтр, который бы из 4.167 выборок сделал одну. Подскажите несложное и правильное решение, чтобы не ломать голову? Я бы мог просто откидывать лишние выборки, но дробный коэффициент заставляет меня пока сильно напрячься + фильтр, наверное, эффективнее был бы здесь, но вот хочу услышать варианты для моего случая. Принимаю обычный 13-позиционный код Баркера, на приеме отлично вижу как синхросигнал, так и информационный код, но надо дальше с ним что-то делать.

 

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


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

Шикарно, в принципе решение, спасибо!

Но думаю еще, а так же теряется информация об амплитудах остальных точек. Можно как-то использовать эти 4,167 выборки для накопления информации об амплитуде сигнала?

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


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

В общем, немного расширяется суть топика.

Ресемпл я сделал, серьезно помогло. Передаю на синхросигнале длинную постедовательность Баркера 13-позиционную, а в качестве информации зацикленный код Баркера 13-позиционный, так вот, на графиках, я приложил, видно, что все принял на ура. Но это на глаз так. 

1. Амплитуда постоянно скачет, как это устранить.

2. Как проще сделать правильный детектор? Чтобы в итоге я получил просто битовую последовательность I и Q и мог дальше это интерпретировать как QAM-модуляцию...

3. Понял, что вопрос немного расширяется. Там в сигнале видно, что присутствует паразитная ненулевая частота, как ее лучше убрать

 

 

1.jpg

2.jpg

3.jpg

 

Сейчас примерно так все представляю, но не получилось! Сигнал после кода все-равно скачет по гармонике.

fid=fopen('C:\Users\User\Documents\UDP_log.pcm','r');
sig=fread(fid,inf,'int16');

I = sig(1:2:end);
Q = sig(2:2:end);

fclose(fid);

sI = smooth(I,4);
sQ = smooth(Q,4);

yI=resample(sI,1000,4167);
yQ=resample(sQ,1000,4167);

carrSynch = comm.CarrierSynchronizer( ...
    'SamplesPerSymbol',1,'Modulation','QPSK');

[ssI,phErrI] = carrSynch(yI);
[ssQ,phErrQ] = carrSynch(yQ)


plot(ssI);
hold on;
plot(ssQ);
hold off;

 

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


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

Попробовал еще так.

M = 4;
fs = 1e6;
foffset = 100;
carriersync = comm.CarrierSynchronizer('Modulation','QPSK', ...
    'DampingFactor',0.05,'NormalizedLoopBandwidth',0.01);

syncInfo = info(carriersync)
aa = [foffset/fs syncInfo.NormalizedPullInRange/(2*pi)]
carriersync.DampingFactor = aa(1)*1000;

fid=fopen('C:\Users\User\Documents\UDP_log.pcm','r');
sig=fread(fid,inf,'int16');

I = sig(1:2:end);
Q = sig(2:2:end);

fclose(fid);

sI = smooth(I,4);
sQ = smooth(Q,4);

yI=resample(sI,1000,4167);
yQ=resample(sQ,1000,4167);


ss = I+1i*Q;
[ssI,phErrI] = carrSynch(ss);

plot(ssI);
hold on;

Но получается, пока не могу въехать в тему, как использовать CarrierSynchronizer и нужен ли он тут вообще. Картинка может служить логотипом или продолжением кубизма-круголизма-импрессионизма.

untitled.jpg

 

Я так-то осознаю чуть чуть, что раз эллипсоид, нужно устранить IQ дисбаланс, а раз все смешалось в круг, надо применить то, что пробовал. Но вот я не могу до конца понять, подскажите, пожалуйста, чтобы я все таки получил долгожданные точки созвездия:) Попробовал эту функцию без компенсатора: compSig = iqImbComp(ss); Но что-то не так может настраиваю. Если мои вопросы очень простые, прошу наставить, что я могу сделать следующим шагом. Возможно уже есть готовое решение на Матлабе, которым могу воспользоваться?

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


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

Ок, можно тогда проще. Допустим, я принял такое созвездие, как на рисунке. Частота дискретизации на передатчике 1 МГц. На приеме полоса 4,167 МГц. В двух словах то все просто, данные то я уже на глаз различаю. Просто в каком смысле - созвездие эллипсоид, значит дисбалланс I и Q, и созвездие с размытыми точками и крутящейся фазой, что исправляется синхронизацией несущей частоты. 

Как я могу это смоделировать в Matlab, или хотя бы с чего начать?

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


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

Вам нужно понять суть формирования и демодуляции сигналов частотной/фазовой модуляции. dsplib.ru

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

 

в настоящем случае вам нужна частотная синхра, восстановление несущей (хоть та же петля Костаса). Изучите петлевые фильтры.

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


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

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

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

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

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

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

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

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

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

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