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

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

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

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