Этот пример демонстрирует совместное отслеживание частоты дискретизации и смещения несущей частоты в приемнике WLAN.
В радиоблоке WLAN один генератор обычно используется для получения синхросигналов для дискретизации и модуляции. Генераторы в радиостанциях передатчика и приемника работают не на одинаковой частоте. Из-за этого несоответствия моменты выборки в приемнике сдвигаются относительно передатчика. Поэтому между приемником и передатчиком существует смещение частоты дискретизации (SRO). Аналогично, между приемником и передатчиком существует смещение несущей частоты (CFO) из-за несовпадения несущих частот. Включение пилотных поднесущих в стандарт IEEE ® 802.11™ позволяет отслеживать и корректировать нарушения SRO и CFO.
В системах OFDM SRO проявляется как поднесущая и зависимый от символа поворот фазы и интерференция между несущими (ICI) [1]. Когда SRO велика и пакет длинный, поднесущие, находящиеся далеко от DC, будут испытывать существенное ухудшение. CFO проявляется как ICI и зависимый от символа поворот фазы, общий для всех поднесущих. Поворот фазы на поднесущих от одного символа OFDM к следующему из-за этих нарушений проиллюстрирован ниже.
- фазовая ошибка, -
индекс поднесущей, -
количество поднесущих. -
SRO, -
смещение несущей частоты, -
период символа, -
градиент фазовой ошибки (PEG) и -
общая фазовая ошибка (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);
Для синхронизации пакета при подготовке к восстановлению поля данных выполняются следующие этапы обработки.
Пакет обнаружен
Грубый сдвиг несущей частоты оценивается и корректируется
Синхронизация синхронизации символов установлена
Точный сдвиг несущей частоты оценивается и корректируется
L-LTF демодулируется OFDM и выполняется оценка шума.
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
![]()
Теперь поле данных восстанавливается с совместным отслеживанием времени и фазы пилота для коррекции СРО и остаточного финансового директора.
Алгоритм отслеживания, используемый в этом примере, оценивает абсолютные значения
и
на символ 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,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.
В этом примере используются следующие вспомогательные функции:
Спет, Майкл и др. «Оптимальная конструкция приемника для беспроводных широкополосных систем с использованием OFDM». IEEE Операции по сообщениям 47.11 (1999): 1668-1677.
Стандарт IEEE Std 802.11™-2016 IEEE для информационных технологий - Телекоммуникации и обмен информацией между системами - Локальные и городские сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY).
Чиуэх, Цзы-Дар, Пэй-Юн Цай и И-Вэй Лай. Конструкция приемника основной полосы частот для беспроводной связи MIMO-OFDM. Джон Уайли и сыновья, 2012.
Хорлин, П.Ф. и Бурду, А. Цифровая компенсация для аналоговых фронтэндов: новый подход к проектированию беспроводных приемопередатчиков. Уайли, 2008.