exponenta event banner

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

Этот пример демонстрирует совместное отслеживание частоты дискретизации и смещения несущей частоты в приемнике 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 и остаточного финансового директора.

В этом примере генерируется сигнал 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);

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

Смещение частоты дискретизации между передатчиком и приемником моделируется путем повторной дискретизации передаваемого сигнала. 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);

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

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

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 и финансового директора. Отслеживание пилотов контролируется с помощью объекта trackingRecovureConfig.

Поле данных сначала восстанавливается без отслеживания пилот-сигнала. Поле данных извлекают из формы сигнала, используя индексы начальной и конечной выборки поля на скорости основной полосы частот. Если частота дискретизации приемника выше, чем частота дискретизации передатчика, приемнику требуется больше выборок, чем выдает передатчик. Чтобы разрешить это, 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);

Выравниваемое созвездие строится на графике, который показывает вращение всех точек созвездия, вызванное остаточным финансовым директором, и распространение точек созвездия из-за 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

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

Теперь поле данных восстанавливается с совместным отслеживанием времени и фазы пилота для коррекции СРО и остаточного финансового директора.

Алгоритм отслеживания, используемый в этом примере, оценивает абсолютные значения$\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 возвращает измерения, по которым можно оценить остаточный финансовый директор и СРО:

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

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

СРО и остаточный финансовый директор оцениваются по этим измерениям с использованием линейной наименьшей квадратной подгонки скорости изменения. Измерения строятся с использованием функции trackingPlotSROCFOEats.

[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. Джон Уайли и сыновья, 2012.

  4. Хорлин, П.Ф. и Бурду, А. Цифровая компенсация для аналоговых фронтэндов: новый подход к проектированию беспроводных приемопередатчиков. Уайли, 2008.