comm.CoarseFrequencyCompensator

Компенсируйте смещение частоты для PAM, PSK или QAM

Описание

The CoarseFrequencyCompensator Система object™ компенсирует смещение частоты принимаемых сигналов.

Для компенсации смещения частоты сигнала PAM, PSK или QAM:

  1. Определите и настройте объект компенсатора грубой частоты. См. «Конструкция».

  2. Функции step для компенсации смещения частоты сигнала PAM, PSK или QAM согласно свойствам comm.CoarseFrequencyCompensator. Поведение step характерен для каждого объекта в тулбоксе.

Примечание

Начиная с R2016b, вместо использования step метод для выполнения операции, заданной системным объектом, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Конструкция

CFC = comm.CoarseFrequencyCompensator создает объект компенсатора смещения грубой частоты, CFC. Этот объект использует метод разомкнутого контура, чтобы оценить и компенсировать смещение несущей частоты в принятом сигнале.

CFC = comm.CoarseFrequencyCompensator(Name,Value) создает объект компенсатора смещения грубой частоты, CFC, с заданным свойством Name установить на заданную Value. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке, как Name1,Value1,...,NameN,ValueN.

Свойства

Modulation

Тип модуляции

Задайте тип модуляции сигнала следующим BPSK, QPSK, OQPSK, 8PSK, PAM, или QAM. Значение по умолчанию является QAM. Это свойство неразрывно.

Algorithm

Алгоритм, используемый для оценки смещения частоты

Задайте алгоритм оценки как один из FFT-based или Correlation-based. Значение по умолчанию является FFT-based. Это свойство неразрывно.

Таблица показывает допустимые комбинации типа модуляции и алгоритма оценки.

МодуляцияАлгоритм, основанный на FFTАлгоритм, основанный на корреляции
BPSK, QPSK, 8PSK, PAM
OQPSK, QAM 

Используйте основанный на корреляции алгоритм для реализации HDL и для других ситуаций, в которых вы хотите избегать использования БПФ.

Это свойство появляется, когда Modulation является 'BPSK', 'QPSK', '8PSK', или 'PAM'.

FrequencyResolution

Частотное разрешение (Гц)

Задайте разрешение частоты для оценки частоты смещения как положительный, действительный скаляр типа данных double. Это свойство устанавливает длину БПФ, используемую для выполнения спектрального анализа, и должно быть меньше, чем частота дискретизации. Значение по умолчанию является 0.001. Это свойство неразрывно.

MaximumFrequencyOffset

Максимальное измеряемое смещение частоты (Гц)

Задайте максимальное измеряемое смещение частоты как положительный, действительный скаляр типа данных double.

Значение этого свойства должно быть меньше fsamp/ M, где fsamp - частота дискретизации, а M - порядок модуляции. Как лучшая практика, установите MaximumOffset меньше r/( 4 M). Это свойство применяется только в том случае, если Algorithm является Correlation-based. Значение по умолчанию является 0.05. Это свойство неразрывно.

SampleRate

Частота дискретизации (Гц)

Задайте частоту дискретизации в выборках в секунду как положительный, действительный скаляр типа данных double. Значение по умолчанию является 1. Это свойство неразрывно.

SamplesPerSymbol

Выборки по символу

Задайте количество выборок на символ, s, как действительный положительный конечный целочисленный скаляр, такой что s ≥ 2. Значение по умолчанию 4. Это свойство неразрывно.

Это свойство появляется, когда Modulation является 'OQPSK'.

Методы

информацияХарактеристическая информация о крупночастотном компенсаторе
шагКомпенсируйте смещение частоты
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

reset

Сброс внутренних состояний Системного объекта

Примеры

свернуть все

Компенсируйте смещение частоты 4 кГц, накладываемое на шумный сигнал QPSK.

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

nSym = 2048;       % Number of input symbols
sps = 4;           % Samples per symbol
nSamp = nSym*sps;  % Number of samples
fs = 80000;        % Sampling frequency (Hz)

Создайте квадратный корень фильтр передачи косинуса.

txfilter = comm.RaisedCosineTransmitFilter(...
    'RolloffFactor',0.2, ...
    'FilterSpanInSymbols',8,   ...
    'OutputSamplesPerSymbol',sps);

Создайте объект смещения частоты фазы, чтобы ввести смещение частоты 4 кГц.

freqOffset = comm.PhaseFrequencyOffset(...
    'FrequencyOffset',-4000, ...
    'SampleRate',fs);

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

freqComp = comm.CoarseFrequencyCompensator(...
    'Modulation','QPSK', ...
    'SampleRate',fs, ...
    'FrequencyResolution',1);

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

data = randi([0 3],nSym,1);
modData = pskmod(data,4,pi/4);
txSig = txfilter(modData);
rxSig = awgn(txSig,20,'measured');
offsetData = freqOffset(rxSig);

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

[compensatedData,estFreqOffset] = freqComp(offsetData);

Отобразите оценку смещения частоты.

estFreqOffset
estFreqOffset =

  -3.9999e+03

Возвращает информацию о freqComp объект. Чтобы получить длину БПФ, необходимо вызвать freqComp перед вызовом info способ.

freqCompInfo = info(freqComp)
freqCompInfo = 

  struct with fields:

    FFTLength: 131072
    Algorithm: 'FFT-based'

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

specAnal = dsp.SpectrumAnalyzer('SampleRate',fs,'ShowLegend',true, ...
    'ChannelNames',{'Offset Signal' 'Compensated Signal'});
specAnal([offsetData compensatedData])

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

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

Алгоритмы

Основанная на корреляции

Алгоритм оценки на основе корреляции, который может использоваться, чтобы оценить смещение частоты для сигналов PSK и PAM, описан в [1]. Чтобы определить смещение частоты, Δf, алгоритм выполняет оценку максимальной правдоподобности (ML) комплексного колебания exp(<reservedrangesplaceholder1>). Наблюдаемый сигнал, rk, представлен как

rk=ej(2πΔfkTs+θ),1kN,

где Ts - интервал дискретизации, θ - неизвестная случайная фаза, а N - количество выборок. Максимальная оценка правдоподобия смещения частоты эквивалентна поиску максимума функции правдоподобия, Λ(Δf),

Λ(Δf)|i=1Nriej2πΔfiTs|2=k=1Nm=1Nrkrm*ej2πΔfTs(km).

После упрощения задача выражается как дискретное преобразование Фурье, взвешенное параболической оконной функцией. Оно выражается как

Im{k=1N1k(Nk)R(k)ej2πΔf^Ts}=0,

где R(k) обозначает предполагаемую автокорреляцию последовательности rk и представлено как

R(k)1Nki=k+1Nririk*,0kN1.

Термин k(N–k) является параболической оконной функцией. В [1] показано, что R(k) является плохой оценкой автокорреляции rk, когда k = 0 или когда k близка к N. Следовательно, функция работы с окнами может быть выражена как прямоугольная последовательность 1 с для k = 1, 2..., L, где <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0> - 1. Результаты являются измененной стратегией оценки ML, в которой

Im{k=1LR(k)ej2πΔf^kTs}=0.

Это приводит к оценке Δf^ в котором

Δf^fsampπ(L+1)arg{k=1LR(k)}.

Частота дискретизации, fsamp, является взаимной Ts. Количество элементов, используемых для вычисления автокорреляционной последовательности, L, определяется как

L=round(fsampfmax)1,

где fmax - это максимальное ожидаемое смещение частоты и round - функция ближайшее целого числа. Оценка смещения частоты улучшается, когда <reservedrangesplaceholder3> ≥ 7 и приводит к рекомендации что <reservedrangesplaceholder2> ≤ <reservedrangesplaceholder1> / (4 M).

Основанные на БПФ

Основанные на БПФ алгоритмы могут использоваться, чтобы оценить смещение частоты для всех типов модуляции. Два изменений используются в comm.CoarseFrequencyCompensator.

  • Для BPSK, QPSK, 8PSK, PAM, или QAM модуляция используемого алгоритма на основе БПФ описана в [2]. Оценки алгоритма Δf^ при помощи периодограммы mth степень принимаемого сигнала и определяется как

    Δf^=fsampNmargmaxf|k=0N1rm(k)ej2πkt/N|,(Rsym2fRsym2),

    где m - порядок модуляции, r(k) - полученная последовательность, Rsym - скорость символа, и N - количество выборок. Алгоритм ищет частоту, которая максимизирует среднее время mth степень принимаемого сигнала, умноженная на различные частоты в области значений [- Rsym/2, Rsym/2]. Как форма алгоритма является определением дискретного преобразования Фурье rm(t), поиск частоты, которая максимизирует среднее время, эквивалентно поиску пиковой линии в спектре rm(т). Для число точек требуется БПФ

    N=2log2(fsampfr),

    где fr - желаемое частотное разрешение.

  • Для OQPSK модуляция используемого алгоритма на основе БПФ описана в [4]. Алгоритм ищет спектральный peaks на +/- 200 кГц вокруг скорости символа. Этот метод определяет местоположение желаемого peaks в присутствии помех от спектрального содержимого вокруг частот основной полосы частот из-за фильтрации.

Ссылки

[1] Луизе, М. и Р. Регианнини. «Восстановление несущей в полностью цифровых модемах для передач в пакетном режиме». IEEE® Транзакции по коммуникациям. Том 43, № 2, 3, 4, Feb/Mar/April, 1995, pp. 1169-1178.

[2] Wang, Y., K. Shi, and E. Serpedi. Оценка смещения несущего Feedforward без использования данных для созвездий QAM: нелинейный подход методом наименьших квадратов. Журнал EURASIP по прикладной обработке сигналов. 2004:13, стр 1993–2001.

[3] Накагава, Т., М. Мацуи, Т. Кобаяси, К. Исихара, Р. Кудо, М. Мидзогути, и Я. Миямото. «Оценка смещения широкополосной частоты без использования данных для оптических когерентных приемников QAM». Конференция и экспозиция по оптоволоконной связи (OFC/NFOEC), 2011 г. и Национальная конференция по оптоволоконным инженерам. Март 2011, стр. 1-3.

[4] Олдс, Джонатан. «Разработка демодулятора OQPSK».

Расширенные возможности

.
Введенный в R2015b