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

В этом примере показано, как выполнить основное восстановление данных VHT. Это также показывает, как восстановить данные VHT, когда полученному сигналу возмещали несущую частоту. Подобные процедуры могут использоваться, чтобы восстановить данные с HT и форматами non-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 что поддержки 2x2 передача MIMO.

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