802.11 OFDM приемник-маяк с захваченными данными

Этот пример показывает проект приемника, которая способна восстановить 802.11™ пакеты-маяки OFDM в формате, отличном от HT, переданные по воздуху от коммерческого оборудования 802.11. Пакеты-маяки обычно передаются в формате, отличном от HT, даже для оборудования с поддержкой HT [1], VHT [1] и/или HE [2]. Информация о пакете, такой как SSID, печатается в командной строке во время восстановления.

Введение

Этот пример иллюстрирует использование WLAN Toolbox™ для восстановления реальных сигналов. Он демонстрирует проект приемника, включающую синхронизацию, восстановление строения передачи и декодирование полезной нагрузки для пакетов, не являющихся HT. Пример восстанавливает пакеты-маяки из файла, содержащего захваченную форму волны основной полосы частот.

Восстановление пакета-маяка

Для восстановления одного пакета, отличного от HT, последовательно выполняются следующие шаги:

  • Обнаружение пакетов: Сначала пакет должен быть обнаружен до начала обработки. Это достигается путем автоматической корреляции входных символов. Поскольку передняя сторона каждого пакета OFDM 802.11 содержит повторяющуюся структуру, называемую L-STF, peaks будет происходить в корреляции, когда этот пакет присутствует. Поле L-STF затем извлекается и используется для оценки грубой частоты.

  • Синхронизация символа: После обнаружения пакета будущие символы будут собраны и перекрестно коррелированы для определения местоположения L-LTF. Получившийся peaks корреляции обеспечивают точную оценку времени. Когда полный L-LTF расположен, он извлекается и используется для оценки канала и тонкой оценки частоты.

  • Декодирование L-SIG: Первый символ OFDM после L-LTF является полем L-SIG. Это поле должно быть восстановлено и декодировано, чтобы определить модуляцию, скорость кода и длину следующей полезной нагрузки. Информация используется для захвата правильного объема данных после L-SIG для полной полезной нагрузки и для декодирования этой информации.

  • Декодирование полезной нагрузки: Все символы OFDM после L-SIG буферизуются до длины, определенной полем L-SIG. После того, как все символы были захвачены, они демодулируются и декодируются в свои исходные биты. Затем оцениваются исходные биты. Эта оценка включает валидацию последовательности проверки системы координат (FCS) и экстракцию заголовка и тела. Если пакет имеет маяк подтипа, итоговая информация, такая как SSID, будет распечатана для восстановленного пакета.

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

Потоковый процесс на захваченных данных

В этом примере беспроводной захват обрабатывается, чтобы восстановить системы координат. Сигнал Wi-Fi ® был получен с помощью радиочастотного интерфейса с одной приемной антенной со частотой дискретизации 20 Msps. Захваченная форма волны сохранена в двоичном файле основной полосы частот. Файл был создан с помощью comm.BasebandFileWriter.

Захваченная форма волны обрабатывается потоковым способом. Блок выборок втягивается для обработки в каждой итерации. Извлекается как можно больше действительных пакетов. comm.BasebandFileReader используется для чтения блоков выборок из двоичного файла основной полосы.

% Create an object to stream the data from the file
basebandReader = comm.BasebandFileReader( ...
    'Filename',       'nonHTBeaconRxData.bb', ...
    'SamplesPerFrame', 80); % Number of samples in 1 OFDM symbol at 20 MHz

Центральная частота, частота дискретизации и количество каналов в захваченной форме волны обеспечиваются объектом comm.BasebandFileReader.

disp(['Center frequency: ' num2str(basebandReader.CenterFrequency/1e6) ' MHz'])
disp(['Sample rate: ' num2str(basebandReader.SampleRate/1e6) ' Msps'])
disp(['Number of receive antennas: ' num2str(basebandReader.NumChannels) newline])
Center frequency: 5785 MHz
Sample rate: 20 Msps
Number of receive antennas: 1

Объект, не являющийся HTFrontEnd, выполняет обработку фронтэнда и декодирование L-SIG. Объект сконфигурирован с пропускной способностью канала 20 МГц для обработки пакетов, отличных от HT. Поддерживается только одна приемная антенна.

rxFrontEnd = nonHTFrontEnd('ChannelBandwidth', 'CBW20');

Цикл while используется для обработки блоков выборок и восстановления пакетов-маяков, пока больше нет доступных данных в файле основной полосы частот. В каждой итерации цикла блок выборок считывается из файла основной полосы частот и обрабатывается rxFrontEnd. rxFrontEnd выполняет обработку переднего плана и буферизует выборки до тех пор, пока не будет обнаружен пакет и не будет получена полезная нагрузка. Когда payloadFull true, полная полезная нагрузка была буферизирована и rxFrontEnd возвращает переменные, чтобы разрешить восстановление данных в пакете:

  • cfgNonHT содержит восстановленные параметры пакета из L-SIG.

  • rxNonHTData - сигнал поля данных без HT во временной области.

  • chanEst содержит оценки канала, полученные из L-LTF.

  • noiseVar - фиксированное значение отклонения шума.

Биты полезной нагрузки пакета восстанавливаются из выборок поля данных, не являющихся HT, используя wlanNonHTDataRecover. Затем биты проверяются и декодируются wlanMPDUDecode для восстановления параметров MAC- системы координат. wlanMPDUDecode возвращает следующие выходы, которые определяют, прошел ли полученный пакет проверку FCS и является ли полученный пакет системой координат.

  • mpduCfg является объектом типа wlanMACFrameConfig содержит восстановленные параметры MAC-фрейма из кадра-маяка.

  • status - перечисление состояния типа, возвращаемое к значению 'Success', когда MPDU проходит проверку FCS и возвращается к значению 'FCSFailed', когда MPDU не проверяет FCS.

Если обнаружен действительный маяк, отображается декодированный SSID.

% Symbol-by-symbol streaming process
numValidPackets = 0;
while ~isDone(basebandReader)
    % Pull in one OFDM symbol, i.e. 80 samples
    data = basebandReader();

    % Perform front-end processing and payload buffering
    [payloadFull, cfgNonHT, rxNonHTData, chanEst, noiseVar] = ...
        rxFrontEnd(data);

    if payloadFull
        % Recover payload bits with zero-forcing equalization
        recBits = wlanNonHTDataRecover(rxNonHTData, chanEst, ...
            noiseVar, cfgNonHT, 'EqualizationMethod', 'ZF');

        % Decode and evaluate recovered bits
        [mpduCfg, ~, status] = wlanMPDUDecode(recBits, cfgNonHT);
        if strcmp(status, 'Success') && strcmp(mpduCfg.FrameType, 'Beacon')
            frameBody = mpduCfg.ManagementConfig; % Display SSID
            disp(['SSID: ', frameBody.SSID])
            numValidPackets = numValidPackets + 1;
        end
    end
end

disp([num2str(numValidPackets), ' Valid Beacon Packets Found'])

release(basebandReader);
release(rxFrontEnd);
SSID: MathWorks-SDR
SSID: MathWorks-SDR
SSID: MathWorks-SDR
3 Valid Beacon Packets Found

Дальнейшие исследования

Пример обработки live-сигналов с USRP см. в 802.11 OFDM Beacon Receiver with USRP ® Hardware.

Приложение

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

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

  1. Стандарт IEEE ® Std 802.11™-2016 IEEE на информационные технологии - Телекоммуникации и обмен информацией между системами - Локальные и столичные сети - Особые требования - Часть 11. Спецификации беспроводного управления доступом к среде локальной сети (MAC) и физического слоя (PHY).

  2. IEEE P802.11ax™/D4.1 Проект стандарта на информационные технологии - Телекоммуникации и обмен информацией между системами Локальные и столичные сети - Особые требования. Часть 11. Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического Слоя (PHY). Поправка 6. Усовершенствования для высокой Эффективности БЛС.