exponenta event banner

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

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

Задайте параметры примера.

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)

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

См. также

|