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

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

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

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×2
10-3 ×

    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 = 1×2

    0.0010    0.0100