exponenta event banner

Базовое восстановление данных VHT

В этом примере показано, как выполнить базовое восстановление данных VHT. Он также показывает, как восстанавливать данные VHT, когда принятый сигнал имеет смещение несущей частоты. Аналогичные процедуры могут использоваться для восстановления данных с форматами HT и не-HT.

Восстановление основных данных

WLAN Toolbox™ предоставляет функции для генерации и восстановления форм сигналов, совместимых со стандартами IEEE ® 802.11ac™. Процесс восстановления данных включает в себя следующие этапы.

  1. Формирование сигнала VHT

  2. Прохождение сигнала через канал

  3. Извлечение VHT-LTF и демодуляция

  4. Оценка канала с использованием демодулированного VHT-LTF

  5. Извлеките поле данных

  6. Восстановление данных с использованием оценок дисперсии канала и шума

На блок-схеме показаны эти шаги вместе с соответствующими командами.

Создание объекта конфигурации VHT.

cfg = wlanVHTConfig;

Создайте сигнал передачи VHT с помощью объекта конфигурации VHT. Установите последовательность данных в значение [1;0;1;1]. Функция генератора формы сигнала повторяет последовательность данных для генерации заданного количества пакетов.

txSig = wlanWaveformGenerator([1;0;1;1],cfg);

Передача принятого сигнала через канал AWGN.

rxSig = awgn(txSig,10);

Определите индексы поля формы сигнала.

ind = wlanFieldIndices(cfg);

Извлеките VHT-LTF из принятого сигнала.

rxVHTLTF = rxSig(ind.VHTLTF(1):ind.VHTLTF(2),:);

Демодулируйте VHT-LTF. Оцените отклик канала, используя демодулированный сигнал.

demodVHTLTF = wlanVHTLTFDemodulate(rxVHTLTF,cfg);
chEst = wlanVHTLTFChannelEstimate(demodVHTLTF,cfg);

Извлеките поле данных VHT.

rxData = rxSig(ind.VHTData(1):ind.VHTData(2),:);

Восстановите информационные биты, используя оценки дисперсии канала и шума. Убедитесь, что первые 8 битов соответствуют двум повторениям последовательности входных данных [1;0;1;1].

rxBits = wlanVHTDataRecover(rxData,chEst,0.1,cfg);

rxBits(1:8)
ans = 8x1 int8 column vector

   1
   0
   1
   1
   1
   0
   1
   1

Восстановление данных с коррекцией частоты

Восстановление данных, когда присутствует смещение несущей частоты, осуществляется с помощью этих этапов.

  1. Формирование сигнала VHT

  2. Прохождение сигнала через канал

  3. Извлеките L-STF и выполните оценку грубого сдвига частоты

  4. Исправить смещение с помощью грубой оценки

  5. Извлеките L-LTF и выполните точную оценку сдвига частоты

  6. Исправить смещение с помощью точной оценки

  7. Извлечение VHT-LTF и демодуляция

  8. Оценка канала с использованием демодулированного VHT-LTF

  9. Извлеките поле данных

  10. Восстановление данных с использованием оценок дисперсии канала и шума

На блок-схеме показаны эти шаги вместе с соответствующими командами.

Установите полосу пропускания канала и частоту дискретизации.

cbw = 'CBW160';
fs = 160e6;

Создайте объект конфигурации VHT, поддерживающий передачу MIMO 2x2.

cfg = wlanVHTConfig('ChannelBandwidth',cbw, ...
    'NumTransmitAntennas',2,'NumSpaceTimeStreams',2);

Формирование сигнала VHT, содержащего случайный PSDU.

txPSDU = randi([0 1],cfg.PSDULength*8,1);
txSig = wlanWaveformGenerator(txPSDU,cfg);

Создайте канал 2x2 TGac.

tgacChan = wlanTGacChannel('SampleRate',fs,'ChannelBandwidth',cbw, ...
    'NumTransmitAntennas',2,'NumReceiveAntennas',2);

Создайте объект сдвига фазы и частоты.

pfOffset = comm.PhaseFrequencyOffset('SampleRate',fs,'FrequencyOffsetSource','Input port');

Пропускают передаваемый сигнал через шумный канал TGac.

rxSigNoNoise = tgacChan(txSig);
rxSig = awgn(rxSigNoNoise,15);

Ввести сдвиг частоты 500 Гц в принятый сигнал.

rxSigFreqOffset = pfOffset(rxSig,500);

Найдите индексы запуска и остановки для всех полей компонентов PPDU.

ind = wlanFieldIndices(cfg);

Извлеките L-STF. Оцените и исправьте смещение несущей частоты.

rxLSTF = rxSigFreqOffset(ind.LSTF(1):ind.LSTF(2),:);

foffset1 = wlanCoarseCFOEstimate(rxLSTF,cbw);
rxSig1 = pfOffset(rxSigFreqOffset,-foffset1);

Извлеките L-LTF из скорректированного сигнала. Оцените и исправьте смещение остаточной частоты.

rxLLTF = rxSig1(ind.LLTF(1):ind.LLTF(2),:);

foffset2 = wlanFineCFOEstimate(rxLLTF,cbw);
rxSig2 = pfOffset(rxSig1,-foffset2);

Извлеките и демодулируйте VHT-LTF. Оцените коэффициенты канала.

rxVHTLTF = rxSig2(ind.VHTLTF(1):ind.VHTLTF(2),:);
demodVHTLTF = wlanVHTLTFDemodulate(rxVHTLTF,cfg);
chEst = wlanVHTLTFChannelEstimate(demodVHTLTF,cfg);

Извлеките поле данных VHT из принятого и скорректированного по частоте PPDU. Восстановите поле данных.

rxData = rxSig2(ind.VHTData(1):ind.VHTData(2),:);
rxPSDU = wlanVHTDataRecover(rxData,chEst,0.03,cfg);

Вычислите количество битовых ошибок в полученном пакете.

numErr = biterr(txPSDU,rxPSDU)
numErr = 2