Уровень выборки соединения и отслеживание смещения несущей частоты

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

Введение

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

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

Нарушения модели

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

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

% Noise power estimation
lltf = rx(tOff+(ind.LLTF(1):ind.LLTF(2)),:);
lltfDemod = wlanLLTFDemodulate(lltf,cfgVHT);
noiseEst = helperNoiseEstimate(lltfDemod,cfgVHT.ChannelBandwidth,cfgVHT.NumSpaceTimeStreams);

% Channel estimation
vhtltf = rx(tOff+(ind.VHTLTF(1):ind.VHTLTF(2)),:);
vhtltfDemod = wlanVHTLTFDemodulate(vhtltf,cfgVHT);
chanEst = wlanVHTLTFChannelEstimate(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,noiseEst,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.086558

Восстановление с отслеживанием смещения частоты дискретизации и невязкой отслеживание 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,noiseEst,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 и форматов non-HT обеспечиваются, наряду с объектом сконфигурировать алгоритмы восстановления:

Приложение

Этот пример использует следующие функции помощника:

Выбранная библиография

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

  2. Станд. IEEE 802.11ac™-2013 Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 4: Улучшения для Очень Высокой Пропускной способности для Операции в Полосах ниже 6 ГГц.

  3. Chiueh, Tzi-Dar, Пэй-Юнь Тсай и И-Вэй Лай. Основополосный проект получателя для беспроводных коммуникаций MIMO-OFDM. John Wiley & Sons, 2012.

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