802.11 приемника маяка OFDM с собранными данными

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

Введение

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

Пакетное восстановление маяка

Следующие шаги, оказывается, последовательно восстанавливают один пакет non-HT:

  • Пакетное Обнаружение: Сначала пакет должен быть обнаружен, прежде чем любая обработка начинается. Это выполняется путем автокорреляции вводимых символов. Поскольку передняя сторона каждых 802.11 пакетов OFDM содержит повторяющуюся структуру, названную 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® был получен с помощью интерфейса RF с, каждый получает антенну на частоте дискретизации 20 членов Шотландского парламента. Полученная форма волны хранится в бинарном основополосном файле. Файл был создан с помощью 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 object.

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

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

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

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

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

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

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

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

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

  • mpduCfg объект типа wlanMACFrameConfig содержание восстановленного MAC структурирует параметры от кадра "неисправность".

  • status перечисление состояния типа, которое возвращено как 'Успех', когда 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

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

См. 802.11 Приемника Маяка OFDM с Оборудованием USRP® для примера обработки живых сигналов с USRP.

Приложение

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

Выбранная библиография

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

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