В этом примере показано, как создать базовую модель ссылки 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';
Этот пример использует эту вспомогательную функцию.
Стандарт IEEE Std 802.11ac™-2013 IEEE на информационные технологии - Телекоммуникации и обмен информацией между системами - Локальные и столичные сети - Особые требования - Часть 11: Беспроводное управление доступом к локальной сети (MAC) и физический уровень (PHY) Спецификации - Поправка 4: Улучшения для очень высокой пропускной способности
Breit, G., H. Sampath, S. Vermani, et al. Дополнение к модели канала TGac. Версия 12. IEEE 802.11-09/0308r12, март 2010.