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

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

Введение

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

В системах OFDM SRO проявляется как поднесущая и зависимое вращение фазы символа и интерференция межпоставщика услуг (ICI) [1]. Когда SRO является большим, и пакет длинен, поднесущие далеко от DC испытают существенное нарушение. CFO проявляется как ICI и зависимое вращение фазы символа, характерное для всех поднесущих. Вращение фазы на поднесущих от одного символа OFDM до следующего должного к этим нарушениям проиллюстрировано ниже. ошибка фазы, индекс поднесущей, количество поднесущих. SRO, смещение несущей частоты, период символа, ошибочный градиент фазы (PEG) и общая ошибка фазы (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.

Алгоритм отслеживания, используемый в этом примере, оценивает абсолютные значения и на символ OFDM и применяется на поднесущую и исправление фазы символа к демодулируемым символам, чтобы исправить ошибки фазы, вызванные SRO и CFO. Ошибка фазы между каждой полученной экспериментальной поднесущей и ожидаемым значением вычислена на символ и усреднена по PilotTrackingWindow символы OFDM. От этого, оценок наименьшего квадрата и вычисляются на символ. Эти оценки используются, чтобы применить исправление фазы к каждому символу и поднесущей [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.