Компенсируйте смещение частоты Используя крупную и прекрасную компенсацию

Правильный для фазы и смещения частоты в шумном сигнале 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);

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

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);

Отобразите схему созвездия последних 4 000 символов.

constdiagram(rxData)

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

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

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

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

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

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

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

constdiagram(rxData)

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

Смотрите также

|