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

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

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

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

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type line. This object represents Channel 1.

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

Определите нормированную полосу захвата, максимальную задержку синхронизации частоты и максимальную задержку синхронизации фазы при помощи 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

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type line. This object represents Channel 1.

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

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

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

    0.0010    0.0100