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

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

Введение

Этот пример показывает, как простая симуляция канала-передатчика-приемника может быть создано с использованием функций из WLAN Toolbox. Передающая и приемная ссылка VHT реализована, как показано на рисунке ниже. Пакет VHT передается через канал TGac, демодулируется, и выравниваемые символы восстанавливаются. Уравненные символы декодируются, чтобы восстановить переданные биты.

Генерация сигналов

В этом примере моделируется передача VHT 802.11ac. Параметры передачи для формата VHT стандарта 802.11™ конфигурируются с помощью объекта строения VHT. The 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-сигнала A (VHT-SIG-A)

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

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

  • Поле сигнала VHT B (VHT-SIG-B)

  • Поле данных

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

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

lstf = wlanLSTF(cfgVHT);

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

lltf = wlanLLTF(cfgVHT);

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

lsig = wlanLSIG(cfgVHT);

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

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

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

vhtsiga = wlanVHTSIGA(cfgVHT);

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

vhtstf = wlanVHTSTF(cfgVHT);

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

vhtltf = wlanVHTLTF(cfgVHT);

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

vhtsigb = wlanVHTSIGB(cfgVHT);

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

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

The wlanVHTData функция генерирует поле VHT данных временной области. Формат VHT строения cfgVHT задает параметры для генерации поля данных из бит PSDU. The 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 Линии -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,:);

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

Оценка канала включает в себя эффект приложенного пространственного отображения и циклических сдвигов в передатчике для строения с несколькими антеннами. The 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: Улучшения для очень высокой пропускной способности

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