В этом примере показано, как создать базовую модель линии связи 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';

В этом примере используется эта вспомогательная функция.
Стандарт IEEE Std 802.11ac™-2013 IEEE для информационных технологий - Связь и обмен информацией между системами - Локальные и городские сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY) - Поправка 4: Улучшения для очень высокой пропускной способности для работы в диапазонах ниже 6 GY
Breit, G., H. Sampath, S. Vermani и др. Дополнение к модели канала TGac. Версия 12. IEEE 802.11-09/0308r12, март 2010 г.