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

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

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

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