Этот пример показывает проект приемника, который может восстановиться 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.
Этот пример использует следующие функции помощника и объекты:
Стандарт IEEE® Std 802.11™-2016 IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования.
Черновой Стандарт IEEE P802.11ax™/D4.1 для Информационных технологий - Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями - Часть 11 Конкретных требований: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 6: Улучшения для Высокой эффективности WLAN.