exponenta event banner

Базовое моделирование каналов WLAN

В этом примере показано, как создать базовую модель линии связи WLAN с использованием Toolbox™ WLAN. Создается пакет VHT IEEE ® 802.11ac™ [1], передаваемый через канал TGac. Принятый сигнал выравнивается и декодируется для восстановления переданных битов.

Введение

В этом примере показано, как с помощью функций панели инструментов WLAN можно создать простое моделирование «передатчик-канал-приемник». Канал передачи и приема VHT реализован, как показано на рисунке ниже. Пакет VHT передают по каналу TGac, демодулируют и восстанавливают выровненные символы. Выровненные символы декодируются для восстановления переданных битов.

Генерация формы сигнала

В этом примере моделируется передача VHT 802.11ac. Параметры передачи для формата VHT стандарта 802.11™ конфигурируются с использованием объекта конфигурации VHT. wlanVHTConfig создает объект конфигурации VHT. В этом примере объект конфигурируется для полосы пропускания канала 20 МГц, MCS 5 и одиночной передающей антенны.

% Create a format configuration object for a SISO VHT transmission
cfgVHT = wlanVHTConfig;
cfgVHT.NumTransmitAntennas = 1;    % Transmit antennas
cfgVHT.NumSpaceTimeStreams = 1;    % Space-time streams
cfgVHT.APEPLength = 4096;          % APEP length in bytes
cfgVHT.MCS = 5;                    % Single spatial stream, 64-QAM
cfgVHT.ChannelBandwidth = 'CBW20'; % Transmitted signal bandwidth
Rs = wlanSampleRate(cfgVHT);       % Sampling rate

Генерируется один пакет VHT, состоящий из полей обучения, сигнала и данных:

  • Поле короткого обучения без HT (L-STF)

  • Поле длительного обучения без HT (L-LTF)

  • Поле сигнала без HT (L-SIG)

  • Поле VHT Signal A (VHT-SIG-A)

  • Краткое учебное поле VHT (VHT-STF)

  • Длинное учебное поле VHT (VHT-LTF)

  • Поле VHT Signal B (VHT-SIG-B)

  • Поле данных

Эти поля генерируются отдельно с использованием функций из WLAN Toolbox и объединяются для создания пакета передачи VHT.

Первым полем в PPDU является L-STF и используется для начала обнаружения пакетов и настройки автоматической регулировки усиления (AGC). Он также используется для оценки начального сдвига частоты и грубой синхронизации по времени. wlanLSTF функция генерирует поле L-STF во временной области с использованием некоторых параметров, включенных в объект конфигурации cfgVHT.

lstf = wlanLSTF(cfgVHT);

L-LTF используется для точной синхронизации времени, оценки канала и точной оценки сдвига частоты. wlanLLTF функция генерирует L-LTF во временной области.

lltf = wlanLLTF(cfgVHT);

Поле L-SIG содержит конфигурацию пакета, такую как скорость передачи данных, модуляция и кодовая скорость для формата, отличного от HT. wlanLSIG функция генерирует поле L-SIG во временной области.

lsig = wlanLSIG(cfgVHT);

На рисунке ниже показаны поля L-STF, L-LTF и L-SIG. Эти поля являются общими для форматов передачи VHT, HT-Mixed и не-HT OFDM.

nonHTfield = [lstf; lltf; lsig]; % Combine the non-HT preamble fields

Специфичные для VHT поля сигнала и обучающие поля генерируются после полей преамбулы не-HT. Целью поля VHT-SIG-A является предоставление информации, позволяющей приемнику декодировать полезную нагрузку данных. VHT-SIG-A состоит из двух символов VHT-SIG-A1 и VHT-SIG-A2. wlanVHTSIGA генерирует поле VHT-SIG-A во временной области.

vhtsiga = wlanVHTSIGA(cfgVHT);

Назначение VHT-STF состоит в том, чтобы улучшить оценку управления усилением в MIMO-передаче и помочь приемнику обнаружить повторяющийся шаблон, аналогичный полю L-STF. wlanVHTSTF генерирует поле VHT-STF во временной области.

vhtstf = wlanVHTSTF(cfgVHT);

VHT-LTF обеспечивает среднее значение для приемника для оценки канала между передатчиком и приемником. В зависимости от количества пространственных временных потоков он состоит из 1,2,4,6 или 8 символов VHT-LTF. wlanVHTLTF функция генерирует VHT-LTF во временной области.

vhtltf = wlanVHTLTF(cfgVHT);

Поле VHT-SIG-B используется для установки скорости передачи данных и длины полезной нагрузки поля данных передаваемого пакета. wlanVHTSIGB генерирует поле VHT-SIG-B во временной области.

vhtsigb = wlanVHTSIGB(cfgVHT);

Создайте преамбулу с сгенерированными полями сигнала и обучения для формата VHT.

preamble = [lstf;lltf;lsig;vhtsiga;vhtstf;vhtltf;vhtsigb];

wlanVHTData генерирует поле данных VHT временной области. Конфигурация формата VHT cfgVHT определяет параметры для генерации поля данных из битов PSDU. cfgVHT.PSDULength свойство дает число байтов, передаваемых в поле данных VHT. Это свойство используется для генерации случайных битов PSDU txPSDU.

rng(0) % Initialize the random number generator
txPSDU = randi([0 1],cfgVHT.PSDULength*8,1); % Generate PSDU data in bits
data = wlanVHTData(txPSDU,cfgVHT);

% A VHT waveform is constructed by prepending the non-HT and VHT
% preamble fields with data
txWaveform = [preamble;data]; % Transmit VHT PPDU

Альтернативно, форма сигнала для данной конфигурации формата также может быть сгенерирована с использованием одного вызова функции. wlanWaveformGenerator функция. Эта функция может создавать один или несколько пакетов VHT. По умолчанию окно OFDM применяется к сгенерированной форме сигнала. Для получения дополнительной информации по окну OFDM см. справочную страницу для wlanWaveformGenerator функция.

Ухудшение канала

В этом разделе моделируются эффекты передачи по воздуху. Передаваемый сигнал ослабляется каналом и AWGN. Уровень AWGN приведен в дБ. В этом примере модель канала TGac [2] используется с профилем задержки Model-B. Для этого профиля задержки, когда расстояние между передатчиком и приемником больше или равно 5 метрам, модель имеет конфигурацию Non-Line-of-Sight (N-LOS). Это описано далее в справке для wlanTGacChannel.

% Parameterize the channel
tgacChannel = wlanTGacChannel;
tgacChannel.DelayProfile = 'Model-B';
tgacChannel.NumTransmitAntennas = cfgVHT.NumTransmitAntennas;
tgacChannel.NumReceiveAntennas = 1;
tgacChannel.LargeScaleFadingEffect = 'None';
tgacChannel.ChannelBandwidth = 'CBW20';
tgacChannel.TransmitReceiveDistance = 5;
tgacChannel.SampleRate = Rs;
tgacChannel.RandomStream = 'mt19937ar with seed';
tgacChannel.Seed = 10;

% Pass signal through the channel. Append zeroes to compensate for channel
% filter delay
txWaveform = [txWaveform;zeros(10,1)];
chanOut = tgacChannel(txWaveform);

snr = 40; % In dBs
rxWaveform = awgn(chanOut,snr,0);

% Display the spectrum of the transmitted and received signals. The
% received signal spectrum is affected by the channel
spectrumAnalyzer  = dsp.SpectrumAnalyzer('SampleRate',Rs, ...
            'AveragingMethod','Exponential','ForgettingFactor',0.99, ...
            'YLimits',[-30 10],'ShowLegend',true, ...
            'ChannelNames',{'Transmitted waveform','Received waveform'});
spectrumAnalyzer([txWaveform rxWaveform]);

Оценка и выравнивание канала

В этом разделе VHT-LTF временной области извлекается из принятого сигнала. Предполагается, что форма сигнала синхронизируется с началом пакета, принимая во внимание задержку канального фильтра. VHT-LTF демодулируется и используется для оценки канала. Затем принимаемый сигнал выравнивается с использованием оценки канала, полученной из VHT-LTF.

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

chInfo = info(tgacChannel); % Get characteristic information
% Channel filter delay, measured in samples
chDelay  = chInfo.ChannelFilterDelay;
rxWaveform = rxWaveform(chDelay+1:end,:);

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

indField = wlanFieldIndices(cfgVHT);

Оценка мощности шума после демодуляции OFDM требуется для выполнения коррекции MMSE для принятых символов OFDM. В этом примере мощность шума в полях VHT оценивается с использованием демодулированных символов L-LTF. L-LTF извлекается из принятого сигнала и демодулируется с использованием wlanLLTFDemodulate функция.

indLLTF = indField.LLTF(1):indField.LLTF(2);
demodLLTF = wlanLLTFDemodulate(rxWaveform(indLLTF),cfgVHT);
% Estimate noise power in VHT fields
nVar = helperNoiseEstimate(demodLLTF,cfgVHT.ChannelBandwidth,cfgVHT.NumSpaceTimeStreams);

Для извлечения VHT-LTF из принятого сигнала используются начальный и конечный индексы для формирования вектора индексов.

indVHTLTF = indField.VHTLTF(1):indField.VHTLTF(2);

VHT-LTF используется для оценки канала между всеми пространственно-временными потоками и приемными антеннами. VHT-LTF извлекается из принятого сигнала и демодулируется с использованием wlanVHTLTFDemodulate функция.

demodVHTLTF = wlanVHTLTFDemodulate(rxWaveform(indVHTLTF,:),cfgVHT);

Оценка канала включает в себя эффект примененного пространственного отображения и циклических сдвигов в передатчике для конфигурации с множеством антенн. wlanVHTLTFChannelEstimate функция возвращает оцененный канал между всеми пространственно-временными потоками и приемными антеннами.

chanEstVHTLTF = wlanVHTLTFChannelEstimate(demodVHTLTF,cfgVHT);

Передающий сигнал сталкивается с глубоким замиранием, как показано на частотной характеристике канала на рисунке ниже. Эффект замирания канала также можно увидеть на графике спектра, показанном ранее.

figure
plot(20*log10(abs(chanEstVHTLTF)));
grid on;
title('Estimated Channel Response');
xlabel('Subcarrier index');
ylabel('Power (dB)');

Для извлечения поля данных из принятого сигнала используются начальный и конечный индексы поля данных для формирования вектора индексов.

indData = indField.VHTData(1):indField.VHTData(2);

% Recover the bits and equalized symbols in the VHT Data field using the
% channel estimates from VHT-LTF
[rxPSDU,~,eqSym] = wlanVHTDataRecover(rxWaveform(indData,:),chanEstVHTLTF,nVar,cfgVHT);

% Compare transmit and receive PSDU bits
numErr = biterr(txPSDU,rxPSDU);

Следующий график показывает совокупность выровненных символов на выходе wlanVHTDataRecover функция сравнивается с опорной совокупностью. Увеличение шума канала должно начать распространять отдельные точки созвездия.

% Plot equalized symbols
constellationDiagram = comm.ConstellationDiagram;
constellationDiagram.ReferenceConstellation = wlanReferenceSymbols(cfgVHT);
% Compare received and reference constellation
constellationDiagram(reshape(eqSym,[],1));
constellationDiagram.Title = 'Equalized Data Symbols';

Приложение

В этом примере используется эта вспомогательная функция.

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

  1. Стандарт IEEE Std 802.11ac™-2013 IEEE для информационных технологий - Связь и обмен информацией между системами - Локальные и городские сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY) - Поправка 4: Улучшения для очень высокой пропускной способности для работы в диапазонах ниже 6 GY

  2. Breit, G., H. Sampath, S. Vermani и др. Дополнение к модели канала TGac. Версия 12. IEEE 802.11-09/0308r12, март 2010 г.