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

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

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

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

  1. Сгенерируйте форму волны VHT

  2. Передайте форму волны через канал

  3. Извлеките VHT-LTF и демодулируйте

  4. Оцените канал при помощи демодулируемого VHT-LTF

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

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

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

Создайте объект настройки формата VHT.

vht = wlanVHTConfig;

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

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

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

rxSig = awgn(txSig,10);

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

ind = wlanFieldIndices(vht);

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

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

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

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

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

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

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

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

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.

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

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

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

Создайте 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(vht);

Извлеките 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,vht);
chEst = wlanVHTLTFChannelEstimate(demodVHTLTF,vht);

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

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

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

numErr = biterr(txPSDU,rxPSDU)
numErr = 2