Компенсируйте смещение частоты с помощью грубой и тонкой компенсации

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

Установите параметры примера.

fs = 10000;           % Symbol rate (Hz)
sps = 4;              % Samples per symbol
M = 16;               % Modulation order
k = log2(M);          % Bits per symbol

Создайте модулятор QAM и канал AWGN.

channel = comm.AWGNChannel('EbNo',20,'BitsPerSymbol',k,'SamplesPerSymbol',sps);

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

constdiagram = comm.ConstellationDiagram(...
    'ReferenceConstellation',qammod(0:M-1,M), ...
    'SamplesPerSymbol',sps, ...
    'SymbolsToDisplaySource','Property','SymbolsToDisplay',4000, ...
    'XLimits',[-5 5],'YLimits',[-5 5]);

Введите смещение частоты 400 Гц и смещение фазы 30 степеней.

phaseFreqOffset = comm.PhaseFrequencyOffset(...
    'FrequencyOffset',400,...
    'PhaseOffset',30,...
    'SampleRate',fs);

Сгенерируйте символы случайных данных и примените 16-QAM модуляцию.

data = randi([0 M-1],10000,1);
modSig = qammod(data,M);

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

txfilter = comm.RaisedCosineTransmitFilter('OutputSamplesPerSymbol',sps, ...
    'Gain',sqrt(sps));
txSig = txfilter(modSig);

Примените фазу и смещение частоты, а затем передайте сигнал через канал AWGN.

freqOffsetSig = phaseFreqOffset(txSig);
rxSig = channel(freqOffsetSig);

Примените точную коррекцию частоты к сигналу при помощи синхронизатора несущей.

fineSync = comm.CarrierSynchronizer('DampingFactor',0.7, ...
    'NormalizedLoopBandwidth',0.005, ...
    'SamplesPerSymbol',sps, ...
    'Modulation','QAM');
rxData = fineSync(rxSig);

Отобразите сигнальное созвездие последних 4000 символов.

constdiagram(rxData)

Даже со временем для сходимости, спиральный характер графика показывает, что синхронизатор несущей еще не компенсировал большое смещение частоты. Смещение 400 Гц составляет 1% от частоты дискретизации.

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

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

coarseSync = comm.CoarseFrequencyCompensator('Modulation','QAM','FrequencyResolution',1,'SampleRate',fs*sps);

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

syncCoarse = coarseSync(rxSig);
rxData = fineSync(syncCoarse);

Постройте график созвездия сигнала после грубой и тонкой частотной компенсации.

constdiagram(rxData)

Полученные данные теперь выравниваются по ссылке созвездию.

См. также

|