exponenta event banner

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

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

Введение

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

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

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

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

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

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

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

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

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

В этом примере захват вне эфира обрабатывается для восстановления кадров маяка. Сигнал Wi-Fi ® был захвачен с помощью радиочастотного интерфейса с одной приемной антенной с частотой дискретизации 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.

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

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

Пример обработки сигналов в реальном времени с помощью протокола USRP см. в документе 802.11 Приемник радиомаяков OFDM с аппаратным обеспечением USRP ®.

Приложение

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

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

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

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