Этот пример показывает, как создать основную модель ссылки WLAN с помощью WLAN Toolbox™. Пакет IEEE® 802.11ac™ [1] VHT создан, проходится канал TGac. Полученный сигнал компенсируется и декодируется в порядке восстановить переданные биты.
Этот пример показывает, как простая симуляция получателя канала передатчика может быть создана с помощью функций из WLAN Toolbox. VHT передает и получает ссылку, реализован как показано в фигуре ниже. Пакет VHT передается через канал TGac, демодулируемый, и компенсируемые символы восстанавливаются. Компенсируемые символы декодируются, чтобы восстановить переданные биты.
802.11ac передача VHT моделируется в этом примере. Параметры передачи для формата 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 сгенерирован состоящий из обучения, и полей данных сигнала:
Non-HT короткое учебное поле (L-STF)
Поле обучения Нон-ХТа Лонга (L-LTF)
Поле Non-HT Signal (L-SIG)
Поле VHT Signal (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 несет пакетную настройку, такую как скорость передачи данных, модуляция и уровень кода для формата non-HT. Функция wlanLSIG генерирует поле L-SIG во временном интервале.
lsig = wlanLSIG(cfgVHT);
Фигура ниже показов L-STF, поля L-LTF и L-SIG. Эти поля характерны для VHT, HT-Mixed и non-HT OFDM форматы передачи.
nonHTfield = [lstf;lltf;lsig]; % Combine the non-HT preamble fields
Определенные и учебные поля сигнала VHT сгенерированы после полей преамбулы non-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 дан в dBs. В этом примере модель [2] канала TGac используется с Моделью-B профиля задержки. Поскольку эта задержка профилирует, когда расстояние между передатчиком и получателем больше, чем или равно 5 метрам, модель находится в Не Угол обзора (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, ... 'ShowLegend',true, ... 'Window', 'Rectangular', ... 'SpectralAverages',10, ... 'YLimits',[-30 10], ... '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 802.11ac™-2013 Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации - Поправка 4: Улучшения для Очень Высокой Пропускной способности для Операции в Полосах ниже 6 ГГц.
Breit, G., Х. Сэмпэт, С. Вермани, и др. Приложение Модели Канала TGac. Версия 12. IEEE 802.11-09/0308r12, март 2010.