Отслеживание Частоты дискретизации соединений и смещения частоты несущей

Этот пример демонстрирует частоту дискретизации соединений и отслеживание смещения частоты несущей в приемнике WLAN.

Введение

В радио WLAN один генератор обычно используется для вывода синхроимпульсов для дискретизации и модуляции. Генераторы в радиоприемниках передатчика и приемника работают не на точно такой же частоте. Из-за этого несоответствия моменты дискретизации в приемник смещаются относительно передатчика. Поэтому между приемником и передатчиком существует смещение скорости дискретизации (SRO). Аналогично, смещение несущей частоты (CFO) существует между приемником и передатчиком из-за несоответствия несущих частот. Включение пилотных поднесущих в стандарт IEEE ® 802.11™ позволяет отслеживать и коррекция искажения SRO и CFO.

В системах OFDM SRO проявляется как поднесущая и зависимое от символа вращение фазы и межнесущая интерференция (ICI) [1]. Когда SRO является большой и пакет длинный, поднесущие, удаленные от DC, будут испытывать существенное ухудшение. CFO проявляется как ICI и зависимое от символа вращение фазы, общее для всех поднесущих. Вращение фазы на поднесущих от одного символа OFDM к следующему из-за этих нарушений показано ниже.$\Phi_k$ - фазовая ошибка, -$k$ индекс поднесущей, -$K$ количество поднесущих. является$\zeta$ SRO, является${\Delta}f$ смещением несущей частоты, является$T_u$ периодом символа, является$\delta$ градиентом фазовой ошибки (PEG) и является$\omega$ общей фазовой ошибкой (CPE). PEG и CPE могут использоваться для оценки SRO и остаточного CFO.

В этом примере сигнал IEEE 802.11ac™ VHT генерируется с фиксированными ослаблениями SRO и CFO [2]. Ослабленная форма волны синхронизируется, и фрагмент данных демодулируется и декодируется с и без совместного синхронизации и отслеживания фазы для коррекции SRO и CFO. Уравненное созвездие с отслеживанием и без него показано, чтобы продемонстрировать эффективность отслеживания.

Сгенерируйте сигнал основной полосы частот

Для параметризации передачи создается объект строения VHT. Поскольку нарушения легче визуализировать с меньшим количеством символов OFDM, полезная нагрузка данных только с 500 байтами передается с помощью 16-QAM модуляции.

% Create a VHT configuration
cfgVHT = wlanVHTConfig;
cfgVHT.ChannelBandwidth = 'CBW20';
cfgVHT.NumTransmitAntennas = 1;
cfgVHT.NumSpaceTimeStreams = 1;
cfgVHT.MCS = 4;          % 16-QAM and 3/4 coding rate
cfgVHT.APEPLength = 500; % Bytes

% Create a random PSDU
s = rng(10); % Seed the random number generator
psdu = randi([0 1],cfgVHT.PSDULength*8,1,'int8');

% Generate a VHT packet
tx = wlanWaveformGenerator(psdu,cfgVHT);

Обесценения модели

Смещение скорости дискретизации между передатчиком и приемником моделируется повторной дискретизацией переданной формы волны. The resample функция может использоваться, чтобы смоделировать ограниченную область значений больших смещений частоты дискретизации. В этом примере моделируется смещение скорости выборки -100 частей на миллион (PPM).

% Model sample rate offset
p = 1e4;   % Interpolation factor
q = 1e4-1; % Decimation factor
sro = (1-p/q)*1e6;
disp('Impairments:');
disp(['  Sample rate offset (SRO): ' num2str(sro,'%.1f') ' PPM']);

% Resample the waveform, appending zeros to allow for filter delay
N = 100; % Size of filter used for resampling
rx = resample([tx; zeros(N,cfgVHT.NumTransmitAntennas)],p,q,N);
Impairments:
  Sample rate offset (SRO): -100.0 PPM

Смещение остаточной несущей частоты добавляется к форме волны с помощью функции helperFrequencyOffset. В этом примере мы предполагаем, что тот же генератор используется для дискретизации и модуляции, поэтому CFO будет функцией SRO и несущей частоты.

fc = 5.25e9;         % Carrier frequency, Hertz
cfo = (sro*1e-6)*fc; % Carrier frequency offset, Hertz
disp(['  Carrier frequency offset (CFO): ' num2str(cfo,'%.1f') ' Hz']);

fs = wlanSampleRate(cfgVHT);           % Baseband sample rate
rx = helperFrequencyOffset(rx,fs,cfo); % Add frequency offset
  Carrier frequency offset (CFO): -525052.5 Hz

Шум добавляется к форме волны с отклонением 30 дБВ.

awgnChannel = comm.AWGNChannel('NoiseMethod','Variance','Variance',10^(-30/10));
rx = awgnChannel(rx);

Внешняя синхронизация и обработка приемника

Следующие шаги обработки выполняются для синхронизации пакета в процессе подготовки к восстановлению поля данных.

  1. Пакет обнаружен

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

  3. Устанавливается временная синхронизация символов

  4. Хорошее смещение частоты несущей оценивается и корректируется

  5. L-LTF является демодулированным OFDM, и выполняется оценка шума

  6. VHT-LTF демодулирован OFDM, и выполняется оценка канала

% Generate field indices
ind = wlanFieldIndices(cfgVHT);

% Packet detection
tOff = wlanPacketDetect(rx,cfgVHT.ChannelBandwidth);

% Coarse frequency offset correction
lstf = rx(tOff+(ind.LSTF(1):ind.LSTF(2)),:);
coarseCFOEst = wlanCoarseCFOEstimate(lstf,cfgVHT.ChannelBandwidth);
rx = helperFrequencyOffset(rx,fs,-coarseCFOEst);

% Symbol timing synchronization
nonhtPreamble = rx(tOff+(ind.LSTF(1):ind.LSIG(2)),:);
symOff = wlanSymbolTimingEstimate(nonhtPreamble,cfgVHT.ChannelBandwidth);
tOff = tOff+symOff;

% Fine frequency offset correction
lltf = rx(tOff+(ind.LLTF(1):ind.LLTF(2)),:);
fineCFOEst = wlanFineCFOEstimate(lltf,cfgVHT.ChannelBandwidth);
rx = helperFrequencyOffset(rx,fs,-fineCFOEst);

% Channel estimation
vhtltf = rx(tOff+(ind.VHTLTF(1):ind.VHTLTF(2)),:);
vhtltfDemod = wlanVHTLTFDemodulate(vhtltf,cfgVHT);
chanEst = wlanVHTLTFChannelEstimate(vhtltfDemod,cfgVHT);

% Get single stream channel estimate
chanEstSSPilots = vhtSingleStreamChannelEstimate(vhtltfDemod,cfgVHT);

Восстановление без смещения частоты дискретизации или остаточного отслеживания CFO

Грубая и мелкая оценка смещения частоты и коррекция удаляют большую часть CFO, но остаточная CFO остается из-за наличия нарушений в форме волны. Это должно быть отслежено и исправлено приемником.

disp('Front-end impairment correction:');
frontEndCFOEst = coarseCFOEst+fineCFOEst;
disp(['  Estimated CFO: ' num2str(frontEndCFOEst,'%.1f') ' Hz']);
residualCFO = cfo-frontEndCFOEst;
disp(['  Residual CFO after initial correction: ' num2str(residualCFO,'%.1f') ' Hz']);
Front-end impairment correction:
  Estimated CFO: -524764.3 Hz
  Residual CFO after initial correction: -288.2 Hz

Функция trackingVHTDataRecover восстанавливает поле данных VHT с опциональным отслеживанием пилот-сигнала, чтобы исправить ошибки синхронизации и фазы из-за SRO и CFO. Отслеживанием пилотов управляет объект trackingRecoveryConfig.

Поле данных сначала восстанавливается без отслеживания пилот-сигнала. Поле данных извлекается из формы волны с помощью начала и конца выборочных индексов поля со скоростью основной полосы частот. Если частота дискретизации получателя выше, чем скорость передатчика, приемник требует больше выборок, чем производит передатчик. Чтобы разрешить это, Ne дополнительные выборки извлекают из формы волны и передают в функцию восстановления. Максимальное количество требуемых дополнительных выборок является функцией ожидаемой SRO, частоты дискретизации основной полосы частот и максимальной длительности пакета.

% Recovery configuration with pilot tracking disabled
cfgRec = trackingRecoveryConfig;
cfgRec.PilotTracking = 'None';

% Extract data field with Ne additional samples to allow for negative SRO
maxDuration = 5.484e-3; % Maximum packet duration in seconds
maxSRO = 120;           % PPM
Ne = ceil(fs*maxDuration*maxSRO*1e-6); % Number of extra samples
dataInd = tOff+(ind.VHTData(1):ind.VHTData(2)+Ne);
dataInd = dataInd(dataInd<=length(rx)); % Only use indices within waveform
data = rx(dataInd,:);

% Perform demodulation and decoding
[rxPSDUNoTrack,~,eqSymNoTrack] = trackingVHTDataRecover(data,chanEst,chanEstSSPilots,cfgVHT,cfgRec);

Выравниваемое созвездие нанесено, что показывает поворот всех точек созвездия, вызванный невязкой CFO, и расширение точек созвездия из-за SRO. Несмотря на скромный AWGN, добавленный к форме волны, нарушения вызывают битовые ошибки в декодированном PSDU.

ConstNoTrack = comm.ConstellationDiagram;
ConstNoTrack.Title = 'Equalized symbols with no pilot tracking';
ConstNoTrack.ReferenceConstellation = wlanReferenceSymbols(cfgVHT);
ConstNoTrack(eqSymNoTrack(:));

[~,berNoTrack] = biterr(rxPSDUNoTrack,psdu);
disp('Bit error rate:');
disp(['  Without tracking: ' num2str(berNoTrack)]);
Bit error rate:
  Without tracking: 0.091022

Восстановление с отслеживанием смещения частоты дискретизации и отслеживанием остаточных CFO

Теперь поле данных восстанавливается с помощью отслеживания времени и фазы управления для коррекции для SRO и остаточного CFO.

Алгоритм отслеживания, используемый в этом примере, оценивает абсолютные значения$\delta$ и$\omega$ на символ OFDM и применяет коррекцию фазы по поднесущей и символу к демодулированным символам, чтобы обратить вспять фазовые ошибки, вызванные SRO и CFO. Фазовая ошибка между каждой принятой поднесущей пилот-сигнала и ожидаемым значением вычисляется на символ и усредняется по PilotTrackingWindow Символы OFDM. Из этого наименьшие квадратные оценки$\delta$ и$\omega$ вычисляются на символ. Эти оценки используются для применения коррекции фазы к каждому символу и поднесущей [3, 4].

% Recovery configuration with pilot tracking enabled
cfgRec = trackingRecoveryConfig;
cfgRec.PilotTracking = 'Joint'; % Joint timing and phase tracking
cfgRec.PilotTrackingWindow = 9; % Averaging window in OFDM symbols

% Perform demodulation and decoding
[rxPSDU,~,eqSymTrack,cpe,peg] = trackingVHTDataRecover(data,chanEst,chanEstSSPilots,cfgVHT,cfgRec);

Выровненное созвездие построено, что показывает четкое 16-QAM созвездие без распространения или вращения. Битовые ошибки отсутствуют.

ConstTrack = comm.ConstellationDiagram;
ConstTrack.Title = 'Equalized symbols with joint pilot tracking';
ConstTrack.ReferenceConstellation = wlanReferenceSymbols(cfgVHT);
ConstTrack(eqSymTrack(:));

[~,berTrack] = biterr(rxPSDU,psdu);
disp(['  With tracking: ' num2str(berTrack)]);
  With tracking: 0

Функция trackingVHTDataRecover возвращает измерения, из которых могут быть оценены остаточные CFO и SRO:

  • cpe - Общая фазовая ошибка (радианы) на символ

  • peg - фаза градиент ошибки (радианы на поднесущую) на символ

SRO и остаточный CFO оцениваются по этим измерениям с помощью линейной наименьшей квадратной подгонки скорости изменения. Измерения строятся с помощью функции trackingPlotSROCFOEstimates.

[residualCFOEst,sroEst] = trackingPlotSROCFOEstimates(cpe,peg,cfgVHT);

% Display estimated SRO, residual CFO and total CFO
fprintf('Tracked impairments:\n');
fprintf('  Estimated residual CFO: %3.1f Hz (%.1f Hz error)\n', ...
    residualCFOEst,residualCFOEst-residualCFO);
fprintf('  Estimated SRO: %3.1f PPM (%.1f PPM error)\n',sroEst,sroEst-sro);
cfoEst = frontEndCFOEst+residualCFOEst; % Initial + tracked CFO estimate
fprintf('Estimated CFO (initial + tracked): %.1f Hz (%.1f Hz error)\n',cfoEst,cfoEst-cfo);

rng(s); % Restore the state of the random number generator
Tracked impairments:
  Estimated residual CFO: -260.5 Hz (27.8 Hz error)
  Estimated SRO: -101.2 PPM (-1.2 PPM error)
Estimated CFO (initial + tracked): -525024.8 Hz (27.8 Hz error)

Заключение

В этом примере показано, как можно отслеживать и корректировать частоту дискретизации и смещения частоты несущей при восстановлении поля данных формы волны WLAN.

Функции восстановления поля данных с совместным отслеживанием пилот-сигналов для форматов VHT, HT-MF и не-HT предусмотрены в этом примере, наряду с объектом, чтобы сконфигурировать алгоритмы восстановления:

Чтобы увидеть пример отслеживания пилот-сигналов для пакетов формата HE, смотрите Процедуру восстановления для пакета 802.11ax.

Приложение

В этом примере используются следующие вспомогательные функции:

Избранная библиография

  1. Спет, Майкл и др. Оптимальный проект приемника для беспроводных широкополосных систем, использующих OFDM. Транзакции IEEE по сообщениям 47.11 (1999): 1668-1677.

  2. Стандарт IEEE Std 802.11™-2016 IEEE на информационные технологии - Телекоммуникации и обмен информацией между системами - Локальные и столичные сети - Особые требования - Часть 11: Беспроводное управление доступом к среде локальной сети (MAC) и физический слой (PHY) Спецификации.

  3. Чиуех, Ци-Дар, Пэй-Юн Цай, и И-Вэй Лай. Проект приемника основной полосы для беспроводной связи MIMO-OFDM. John Wiley & Sons, 2012.

  4. Horlin, P.F. and Bourdoux, A. Цифровая компенсация для аналоговых фронтэндов: новый подход к проекту беспроводных приемопередатчиков. Уайли, 2008.