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

Как построить созвездия и глазковую диаграмму bpsk сигнала полученного из файла

Здравствуйте. Я сгенерировал bpsk сигнал лабораторным генератором, затем оцифровал векторным анализатором и сохранил на 0 ПЧ комплексные данные. Полученный файл на анализаторе строит хорошую глазковую диаграмму и фазовые созвездия. При воспроизведении данного файла в матлаб, получаю плохие результаты (спектр похож, а фаза нет). Может кто-то уже такое делал и укажет мне, что я делаю неправильно. 

Несущая = 1575.42 МГц, частота модуляции = 1.023 МГц, фильтр - корень из Найквиста с alfa = 0.5.

P.S. сам файл данных импортировался в векторный генератор и воспроизводил правильный сигнал, так что дело в настройках модели матлаба.

 

Снимок.JPG

etalon_bpsk_file.rar

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


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

В 27.11.2022 в 14:54, Skryppy сказал:

Может кто-то уже такое делал и укажет мне, что я делаю неправильно. 

Для начала неплохо оцифровывать сигнал на частоте, строго кратной символьной, а то у Вас сейчас примерно 12.5122... отсчета на символ, Вы даже приемный фильтр толком не сделаете. Кстати, а где он в модели? Начните пока с этого. 

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


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

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

Сигнал стандарта GPS, 1575.42/1.023 = 1540 . Если сторонний лабораторный генератор воспроизводит данный оцифрованный файл как надо, то и матлаб должен, осталось выбрать правильные настройки. Я с ними игрался, пока не подобрал.

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


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

нужно определится с какой fs у вас оцифрованные данные в файле. я подозреваю сигнал у вас после квадратурного демодулятора с фильтром Найквиста. нужно восстановить несущую через ФАПЧ и реализовать символьную синхронизацию (например детектор Гарднера), тогда можно будет увидеть корректные квадратурные созвездия.

посмотрите настройки векторного анализатора, полагаю все это он реализует

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


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

берём данные из файла и определяем количество отсчетов на символ в записанном сигнале

load('DataEtalonGenerator.mat');
y0 = Y;
sps0 = (12.8/1.023); % 12.5122 % старый sps

 

задаемся необходимым целым количеством отсчетов на символ и передискретизирем сигнал в новой тактовой

sps = 20; % новый sps
t0 = (0:numel(Y)-1).'; % старая шкала времени
t = (0:(sps0/sps):numel(Y)-1).'; % новая шкала времени
y = interp1(t0,y0,t,'spline'); % 
% plot(t0,y0,t,y);

data_out_struct.time = [];
data_out_struct.signals.values = y;
data_out_struct.signals.dimentions = 1;

 

в блоке Eye Diagram задаем указанное новое количество отсчетов на символ

image.thumb.png.a7d8047b02beef0b27ba881b866bd689.png

глаз диаграмма точно стала лучше на вид, по ней видно, с каких точек можно строить созвездие, период известен, так как мы сами задали количество отсчетов на символ в передискретизированном сигнале

так как Вам точнее известна частота дискретизации записанного сигнала, Вы можете точнее передискретизировать записанный сигнал,  а значит и получить лучший результат

 

 

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


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

В 27.11.2022 в 19:31, Skryppy сказал:

Сигнал уже правильно отфильтрован и оцифрован.

Я не знаю, откуда у Вас такая уверенность, но лично я уверен в одном - сигнал, который Вы прикрепили в первом посте, оцифрован на частоте 12.8 МГц, что дает 12.512218963... отсчетов на символ. А стандартные средства Матлаба заточены на работу только с кратным целочисленным соотношением частот дискретизации/символьной. Играться здесь бесполезно и бессмысленно.

 

В 27.11.2022 в 19:31, Skryppy сказал:

Фильтр стоит в лабораторном генераторе, который сгенерировал ВЧ сигнал, его отключить нельзя, можно выбрать один из трёх вариантов.

Речь не про фильтр в передатчике, речь про фильтр в приемнике. Вы уверены, что сгенеренный файл получен после аналогичного RRC? Я нет.

 

В 27.11.2022 в 19:31, Skryppy сказал:

Сигнал стандарта GPS, 1572.45/1.023 = 1540 .

Информация, не имеющая смысла в контексте темы.

 

В 27.11.2022 в 19:31, Skryppy сказал:

Если сторонний лабораторный генератор воспроизводит данный оцифрованный файл как надо, то и матлаб должен, осталось выбрать правильные настройки.

Нет проблем, делайте в матлабе ресемплинг Вашего сигнала на кратный самплингрэйт и все получиться. Вот картинка после передискретизации Вашего сигнала на 25 отсчетов на символ после RRC фильтра, аналогичного фильтру в передатчике:

  image.png.cecf6072cbff71cecb9d5b3fcef1c559.png

 

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


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

Спасибо всем, буду завтра тестировать модель, вроде всё понятно. Лабораторное оборудование уже не доступно мне, поэтому точную частоту дискретизации и другие настройки уже не могу посмотреть. Единственное, не понятно , как вы определили, что тактовая частота близка к 12.8 МГц? 

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


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

В 27.11.2022 в 21:31, Skryppy сказал:

Единственное, не понятно , как вы определили, что тактовая частота близка к 12.8 МГц?

Можно через оценку символьной частоты по исходному сигналу. А можно и через переменную XDelta в файле DataEtalonGenerator.mat, которая, судя по названию и значению, соответствует интервалу дискретизации:)

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


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

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

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

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

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

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

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

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

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

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