Настройте фактор затухания синхронизатора поставщика услуг, чтобы исправить смещение частоты

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

Установите порядок модуляции, частоту дискретизации, смещение частоты и параметры отношения сигнал-шум.

M = 8;
fs = 1e6;
foffset = 1000;
snrdb = 20;

Создайте объект смещения частоты фазы ввести смещение частоты модулируемому сигналу. Создайте объект схемы совокупности.

pfo = comm.PhaseFrequencyOffset('SampleRate',fs, ...
    'FrequencyOffset',foffset);
constDiagram = comm.ConstellationDiagram('ReferenceConstellation',pskmod(0:M-1,M,pi/M));

Создайте объект синхронизатора поставщика услуг исправить для смещения частоты.

carriersync = comm.CarrierSynchronizer('Modulation','8PSK', ...
    'DampingFactor',0.05,'NormalizedLoopBandwidth',0.01);

Основной цикл обработки включает эти шаги:

  • Сгенерируйте случайные данные.

  • Примените модуляцию 8-PSK.

  • Введите смещение частоты.

  • Передайте сигнал через канал AWGN.

  • Правильный для частоты смещается.

  • Отобразите схему совокупности.

for k = 1:200
    data = randi([0 M-1],1000,1);
    modSig = pskmod(data,M);
    txSig = pfo(modSig);
    rxSig = awgn(txSig,snrdb);
    syncOut = carriersync(rxSig);
    constDiagram(syncOut)
end

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

Определите нормированное получение по запросу - в области значений, максимальной задержке блокировки частоты и максимальной задержке блокировки фазы при помощи функции info.

syncInfo = info(carriersync)
syncInfo = 

  struct with fields:

    NormalizedPullInRange: 0.0044
    MaxFrequencyLockDelay: 78.9568
        MaxPhaseLockDelay: 130

Преобразуйте нормализованное получение по запросу - в диапазоне от радианов до циклов. Сравните нормированное смещение частоты с получением по запросу - в области значений.

[foffset/fs syncInfo.NormalizedPullInRange/(2*pi)]
ans =

   1.0e-03 *

    1.0000    0.7071

Смещение больше, чем получение по запросу - в области значений. Это - причина, что синхронизатору поставщика услуг не удалось исправить смещение частоты.

Измените фактор затухания синхронизатора к 0.707.

carriersync.DampingFactor = 0.707;

Повторите основной цикл обработки.

for k = 1:200
    data = randi([0 M-1],1000,1);
    modSig = pskmod(data,M);
    txSig = pfo(modSig);
    rxSig = awgn(txSig,snrdb);
    syncOut = carriersync(rxSig);
    constDiagram(syncOut)
end

Существует теперь восемь заметных кластеров, который показывает, что смещение частоты было исправлено.

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

syncInfo = info(carriersync);
[foffset/fs syncInfo.NormalizedPullInRange/(2*pi)]
ans =

    0.0010    0.0100

Для просмотра документации необходимо авторизоваться на сайте