802.11be 4096-QAM 320 МГц Генерации сигналов и анализ

Этот пример показывает, как сгенерировать IEEE ® 802.11be™ однопользовательскую форму волны с квадратурной амплитудной модуляцией с 4096 точками (4096-QAM) и пропускной способностью канала 320 МГц. Пример демонстрирует, как измерить точность модуляции передатчика, спектральную маску и спектральную плоскостность.

Введение

В этом примере показано, как параметризовать и сгенерировать IEEE 802.11be чрезвычайно высокую пропускную способность (EHT) однопользовательской формы волны, указанной в черновике P802.11be 0.1 [1]. Этот пример выполняет точность модуляции передатчика, необходимую спектральную маску и необходимые спектральные измерения плоскостности на форме волны для строения, указанной в разделе 36.3.18 [1].

Пример генерирует 20 однопользовательских пакетов EHT с пропускной способностью канала 320 МГц и 10 микросекундными погрешностями между пакетами. Каждый пакет содержит случайные данные и использует 4096-QAM. Пример переизбирает форму волны, используя больший ОБПФ, чем требуется для номинальной скорости полосы модулирующих частот, и не выполняет спектральную фильтрацию. В примере используется модель усилителя высокой мощности (HPA), которая вводит внутриполосное искажение и спектральное возрождение. Пример выполняет измерение спектральной эмиссионной маски на усиленной форме волны после моделирования усилителя высокой мощности. Пример декодирует поле данных EHT и измеряет величину вектора ошибок (EVM), чтобы определить точность модуляции после понижающей дискретизации формы волны до частоты дискретизации основной полосы частот. Кроме того, пример измеряет спектральную плоскостность восстановленной формы волны. Эта схема показывает рабочий процесс, содержащийся в примере.

Область Setup

Сконфигурируйте пример, чтобы generate 20 однопользовательских пакетов EHT с периодом простоя 10 микросекунд между каждым пакетом.

numPackets = 20;
idleTime = 10; % In microseconds

802.11be Строение и генерация формы волны

Физический слой 802.11be, определенный в P802.11be Draft 0.1 [1], основан на 802.11ax [2] с этими добавленными возможностями и модификациями.

  1. Увеличение максимальной пропускной способности канала 320 МГц

  2. 4096-QAM в опциях 12 и 13 индекса MCS

  3. Назначение нескольких ресурсных модулей (MRU) одной станции (STA) с опциональной прокалыванием однопользовательских пакетов

  4. Увеличенное максимальное количество пространственных потоков для восходящего MU-MIMO (16 пространственных потоков для 8 пользователей)

  5. Измененный план тональных сигналов для пропускной способности 80 и 160 МГц

  6. Большой полином генератора для скремблера поля данных и дескремблера

Этот пример моделирует эти ключевые функции 802.11be.

  1. Пропускная способность канала 320 МГц

  2. 4096-QAM модуляция

  3. Измененный план тональных сигналов для пропускной способности 80 и 160 МГц

  4. Большой полином генератора для скремблера поля данных и дескремблера

Черновой стандарт определяет формат EHT многопользовательского (EHT MU) для передачи как однопользовательских, так и многопользовательских пакетов. Этот пример поддерживает генерацию только однопользовательских пакетов. Используйте объект строения EHT MU, ehtMUConfig, для конфигурирования свойств передачи пакета EHT MU. Этот пример использует случайные биты, чтобы сгенерировать поля сигнализации U-SIG и EHT-SIG. Можно задать случайное начальное значение или битовые значения поля путем изменения соответствующих свойств ehtMUConfig объект. Значение U-SIG и EHT-SIG бит влияет на отношение пика к средней степени (PAPR) пакета. Поскольку этот пример не использует пространственно-временное блочное кодирование, он может измерить точность модуляции для пространственного потока.

chanBW     = 'CBW320'; % Channel bandwidth
mcs = 12; % Modulation and coding scheme
numTx = 1; % Number of transmit antennas
apepLength = 8000; % A-MPDU length pre-EOF padding in bytes

savedState = rng (0 );% Set random state

cfgEHT = ehtMUConfig (chanBW );% EHT MU configuration object 
cfgEHT.NumTransmitAntennas = numTx;
cfgEHT.User {1} .MCS = mcs;
cfg EHT.U ser {1} .Num Space Time Streams = num Tx;
cfgEHT.User {1} .APEPLength = apepLength;
cfgEHT.RU {1}.SpatialMapping = 'Direct';

Чтобы смоделировать эффект усилителя высокой мощности на форме волны и просмотреть внеполосные спектральные выбросы, форма волны должна быть переизбрана. Этот пример генерирует форму волны, используя большую ОБПФ, чем требуется для номинальной скорости основной полосы частот, что приводит к избыточной дискретизации формы волны. Пример не выполняет спектральную фильтрацию.

osf = 4; % Oversampling factor

Создайте случайные биты для всех пакетов.

psduLength = cfgEHT.getPSDULength*8; % PSDU length in bits per packet
data = randi([0 1],psduLength*numPackets,1);

Сгенерируйте сигнал EHT MU для заданных бит и строения с помощью ehtWaveformGenerator функция, задающая требуемый коэффициент избыточной дискретизации, количество пакетов и время простоя между каждым пакетом.

txWaveform = ehtWaveformGenerator(data,cfgEHT,'NumPackets',numPackets,'IdleTime',idleTime*1e-6,'OversamplingFactor',osf);

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

fs = ehtSampleRate(cfgEHT);
disp(['Baseband sampling rate: ' num2str(fs/1e6) ' Msps']);
Baseband sampling rate: 320 Msps

Подготовьте нули к форме волны, чтобы обеспечить раннюю временную синхронизацию.

txWaveform = [zeros(round(idleTime*1e-6*fs),numTx); txWaveform];

Добавить обесценения

Моделирование усилителя высокой мощности

Усилитель высокой мощности вводит нелинейное поведение в виде внутриполосного искажения и спектрального восстановления. Этот пример моделирует усилители степени с помощью модели Rapp [3], которая представляет искажение AM/AM.

Моделируйте усилитель при помощи dsp.FIRInterpolator Объект и сконфигурируйте уменьшенные искажения путем определения отката, hpaBackoffтаким образом усилитель действует ниже своей точки насыщения. Можно увеличить откат, чтобы уменьшить EVM для более высоких значений MCS.

pSaturation = 25; % Saturation power of a power amplifier in dBm
hpaBackoff = 16;  % Power amplifier backoff in dB
nonLinearity = comm.MemorylessNonlinearity;
nonLinearity.Method = 'Rapp model';
nonLinearity.Smoothness = 3; % p parameter
nonLinearity.LinearGain = -hpaBackoff;
nonLinearity.OutputSaturationLevel = db2mag(pSaturation-30); 

Добавьте модель к каждой передающей антенне.

for i=1:cfgEHT.NumTransmitAntennas
    txWaveform(:,i) = nonLinearity(txWaveform(:,i));
end

Тепловой шум

Добавьте тепловой шум к форме волны, задавая 6 дБ шум приемника, рисунок [4].

NF = 6;         % Noise figure (dB)
BW = fs*osf;    % Bandwidth (Hz)
k = 1.3806e-23; % Boltzman constant (J/K)
T = 290;        % Ambient temperature (K)
noisePower = 10*log10(k*T*BW)+NF;

awgnChannel = comm.AWGNChannel('NoiseMethod','Variance','Variance',10^(noisePower/10));
txWaveform = awgnChannel(txWaveform);

Точность модуляции (EVM) и спектральные измерения плоскостности

Понижающая дискретизация и фильтрация

Повторно отобразите избыточную дискретизацию волны в полосу частот для обработки физического слоя и измерения EVM и спектральной плоскостности, применяя фильтр сглаживания lowpass перед понижением дискретизации. Влияние lowpass фильтра видно при измерении спектральной плоскостности. Сглаживающий фильтр выполнен так, что все активные поднесущие находятся внутри полосы пропускания фильтра.

Проектируйте фильтр повторной дискретизации.

aStop = 40; % Stopband attenuation
ofdmInfo = ehtOFDMInfo('EHT-Data',cfgEHT); % OFDM parameters
SCS = fs/ofdmInfo.FFTLength; % Subcarrier spacing
txbw = max(abs(ofdmInfo.ActiveFrequencyIndices))*2*SCS; % Occupied bandwidth
[L,M] = rat(osf);
maxLM = max([L M]);
R = (fs-txbw)/fs;
TW = 2*R/maxLM; % Transition width
b = designMultirateFIR(L,M,TW,aStop);

Повторно отобразите форму волны в основной полосе частот.

firinterp = dsp.FIRRateConverter(M,L,b);
rxWaveform = firinterp(txWaveform);

Обработка приемника

Этот раздел обнаруживает, синхронизирует и извлекает каждый пакет в rxWaveform, затем измеряет EVM и спектральную плоскостность. Для каждого пакета пример выполняет эти шаги.

  • Обнаружение начала пакета

  • Извлечение устаревших полей

  • Оцените и исправьте крупное смещение частоты несущей (CFO)

  • Выполните оценку точного символа времени при помощи частотно-корректируемых устаревших полей

  • Извлеките пакет из формы волны с помощью смещения синхронизации тонкого символа

  • Исправьте извлеченный пакет с помощью грубой оценки CFO

  • Извлеките L-LTF, затем оцените и исправьте мелкий CFO

  • Извлеките EHT-LTF и выполните оценку канала для каждого из потоков передачи

  • Измерьте спектральную плоскостность при помощи оценки канала

  • Извлечение и OFDM демодулируют поле EHT Data

  • Выполните оценку шума путем использования пилотных сигналов демодулированного поля данных и оценки канала с одним потоком на поднесущих пилот-сигнала

  • Фазовая коррекция и выравнивание поля Данные при помощи оценок канала и шума

  • Для каждой несущей данные поднесущей в каждом пространственном потоке найдите ближайшую точку созвездия и измерьте EVM

  • Восстановите PSDU путем декодирования уравненных символов

Эта схема показывает цепь обработки.

Этот пример делает два различных измерения EVM.

  1. RMS EVM на пакет, который содержит усреднение EVM по поднесущим, символы OFDM и пространственные потоки.

  2. RMS EVM на поднесущую по пространственному потоку для пакета. Поскольку эта конфигурация отображает пространственные потоки непосредственно на антенны, это измерение может помочь обнаружить частотно-зависимые нарушения, которые могут по-разному влиять на отдельные RF-цепи. Это измерение усредняет EVM только по символам OFDM.

Setup измерений EVM.

[EVMPerPkt,EVMPerSC] = evmSetup(cfgEHT);

Получите индексы для доступа к каждому полю в пакете временной области.

ind = ehtFieldIndices(cfgEHT);

Определите минимальную обнаруживаемую длину данных в выборках.

minPktLen = double(ind.LSTF(2)-ind.LSTF(1))+1;

Обнаружение и обработка пакетов в пределах принятой формы волны с помощью while цикл, который выполняет эти шаги.

  1. Обнаружение пакета путем индексации в rxWaveform со смещением выборки, searchOffset

  2. Обнаружите и обработайте первый пакет в rxWaveform

  3. Обнаружите и обработайте следующий пакет путем увеличения смещения индекса выборки

  4. Повторяйте, пока не будут обнаружены дальнейшие пакеты

rxWaveformLength = size(rxWaveform,1);
pktLength = double(ind.EHTData(2));
rmsEVM = zeros(numPackets,1);
pktOffsetStore = zeros(numPackets,1);
rng(savedState); % Restore random state
pktNum = 0;
searchOffset = 0; % Start at first sample (no offset)
while (searchOffset+minPktLen)<=rxWaveformLength
    
    % Detect packet and determine coarse packet offset
    pktOffset = ehtPacketDetect(rxWaveform,cfgEHT.ChannelBandwidth,searchOffset);
    % Packet offset from start of the waveform
    pktOffset = searchOffset+pktOffset; 
    % Skip packet if L-STF is empty
    if isempty(pktOffset) || (pktOffset<0) || ...
            ((pktOffset+ind.LSIG(2))>rxWaveformLength)
        break;
    end
    
    % Extract L-STF and perform coarse frequency offset correction
    nonht = rxWaveform(pktOffset+(ind.LSTF(1):ind.LSIG(2)),:);  
    coarsefreqOff = ehtCoarseCFOEstimate(nonht,cfgEHT.ChannelBandwidth);
    nonht = helperFrequencyOffset(nonht,fs,-coarsefreqOff);
    
    % Extract the legacy fields and determine fine packet offset
    lltfOffset = ehtSymbolTimingEstimate(nonht,cfgEHT.ChannelBandwidth);
    pktOffset = pktOffset+lltfOffset; % Determine packet offset

    % If offset is outwith bounds of the waveform, then skip samples and
    % continue searching within remainder of the waveform
    if (pktOffset<0) || ((pktOffset+pktLength)>rxWaveformLength)
        searchOffset = pktOffset+double(ind.LSTF(2))+1;
        continue;
    end  
    
    % Timing synchronization complete; extract the detected packet
    rxPacket = rxWaveform(pktOffset+(1:pktLength),:);
    pktNum = pktNum+1;
    disp(['  Packet ' num2str(pktNum) ' at index: ' num2str(pktOffset+1)]);
    
    % Apply coarse frequency correction to the extracted packet
    rxPacket = helperFrequencyOffset(rxPacket,fs,-coarsefreqOff);
    
    % Perform fine frequency offset correction on the extracted packet
    lltf = rxPacket(ind.LLTF(1):ind.LLTF(2),:); % Extract L-LTF
    fineFreqOff = ehtFineCFOEstimate(lltf,cfgEHT.ChannelBandwidth);
    rxPacket = helperFrequencyOffset(rxPacket,fs,-fineFreqOff);
    
    % Extract EHT-LTF samples, demodulate, and perform channel estimation
    ehtLTF = rxPacket(ind.EHTLTF(1):ind.EHTLTF(2),:);
    ehtLTFDemod = ehtDemodulate(ehtLTF,'EHT-LTF',cfgEHT);

    % Channel estimate
    [chanEst,pilotEst] = ehtLTFChannelEstimate(ehtLTFDemod,cfgEHT);
    
    % Spectral flatness measurement
    ehtTxSpectralFlatnessMeasurement(chanEst,cfgEHT,pktNum);
    
    % Data demodulate
    rxData = rxPacket(ind.EHTData(1):ind.EHTData(2),:);
    demodSym = ehtDemodulate(rxData,'EHT-Data',cfgEHT);
    
    % Pilot phase tracking
    demodSym = ehtCommonPhaseErrorTracking(demodSym,chanEst,cfgEHT);
    
    % Estimate noise power in EHT fields
    nVarEst = ehtNoiseEstimate(demodSym(ofdmInfo.PilotIndices,:,:),pilotEst,cfgEHT);

    % Extract data subcarriers from demodulated symbols and channel
    % estimate
    demodDataSym = demodSym(ofdmInfo.DataIndices,:,:);
    chanEstData = chanEst(ofdmInfo.DataIndices,:,:);

    % Equalization and STBC combining
    [eqSym,csi] = ehtEqualizeCombine(demodDataSym,chanEstData,nVarEst,cfgEHT);
 
    % Compute RMS EVM over all spatial streams for a packet
    rmsEVM(pktNum) = EVMPerPkt(eqSym);
    fprintf('    RMS EVM: %2.2f%%, %2.2fdB\n',rmsEVM(pktNum),20*log10(rmsEVM(pktNum)/100));

    % Compute RMS EVM per subcarrier and spatial stream for the packet
    evmPerSC = EVMPerSC(eqSym); % Nst-by-1-by-Nss

    % Plot RMS EVM per subcarrier and equalized constellation
    ehtTxEVMConstellationPlots(eqSym,evmPerSC,cfgEHT,pktNum);

    % Recover data field bits
    rxPSDU = ehtDataBitRecover(eqSym,nVarEst,csi,cfgEHT);

    if isequal(rxPSDU,data((1:psduLength)+(pktNum-1)*psduLength))
        fprintf('    Decode success\n');
    else
        fprintf('    Decode failure\n');
    end

    % Store the offset of each packet within the waveform
    pktOffsetStore(pktNum) = pktOffset;
    
    % Increment waveform offset and search remaining waveform for a packet
    searchOffset = pktOffset+pktLength+minPktLen;
end
  Packet 1 at index: 992
    Spectral flatness passed
    RMS EVM: 0.41%, -47.69dB
    Decode success
  Packet 2 at index: 32352
    Spectral flatness passed
    RMS EVM: 0.43%, -47.33dB
    Decode success
  Packet 3 at index: 63712
    Spectral flatness passed
    RMS EVM: 0.43%, -47.26dB
    Decode success
  Packet 4 at index: 95072
    Spectral flatness passed
    RMS EVM: 0.47%, -46.62dB
    Decode success
  Packet 5 at index: 126432
    Spectral flatness passed
    RMS EVM: 0.46%, -46.79dB
    Decode success
  Packet 6 at index: 157792
    Spectral flatness passed
    RMS EVM: 0.45%, -46.91dB
    Decode success
  Packet 7 at index: 189152
    Spectral flatness passed
    RMS EVM: 0.43%, -47.27dB
    Decode success
  Packet 8 at index: 220512
    Spectral flatness passed
    RMS EVM: 0.37%, -48.68dB
    Decode success
  Packet 9 at index: 251872
    Spectral flatness passed
    RMS EVM: 0.48%, -46.45dB
    Decode success
  Packet 10 at index: 283232
    Spectral flatness passed
    RMS EVM: 0.42%, -47.49dB
    Decode success
  Packet 11 at index: 314592
    Spectral flatness passed
    RMS EVM: 0.37%, -48.69dB
    Decode success
  Packet 12 at index: 345952
    Spectral flatness passed
    RMS EVM: 0.42%, -47.53dB
    Decode success
  Packet 13 at index: 377312
    Spectral flatness passed
    RMS EVM: 0.43%, -47.27dB
    Decode success
  Packet 14 at index: 408672
    Spectral flatness passed
    RMS EVM: 0.45%, -46.90dB
    Decode success
  Packet 15 at index: 440032
    Spectral flatness passed
    RMS EVM: 0.47%, -46.58dB
    Decode success
  Packet 16 at index: 471392
    Spectral flatness passed
    RMS EVM: 0.45%, -46.99dB
    Decode success
  Packet 17 at index: 502752
    Spectral flatness passed
    RMS EVM: 0.41%, -47.84dB
    Decode success
  Packet 18 at index: 534112
    Spectral flatness passed
    RMS EVM: 0.41%, -47.69dB
    Decode success
  Packet 19 at index: 565472
    Spectral flatness passed
    RMS EVM: 0.54%, -45.29dB
    Decode success
  Packet 20 at index: 596832

Figure contains an axes. The axes with title Spectral Flatness, Packet:20 contains 3 objects of type line. These objects represent Antenna 1, Deviation limit.

    Spectral flatness passed
    RMS EVM: 0.41%, -47.66dB

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Equalized Data Symbols, Packet:20 contains 2 objects of type line. This object represents Spatial stream 1.

    Decode success
if pktNum>0
    fprintf('Average EVM for %d packets: %2.2f%%, %2.2fdB\n', ...
        pktNum,mean(rmsEVM(1:pktNum)),20*log10(mean(rmsEVM(1:pktNum))/100));
else
    disp('No complete packet detected');
end
Average EVM for 20 packets: 0.44%, -47.21dB

Измерение спектральной маски

Этот раздел измеряет спектральную маску отфильтрованной и ослабленной формы волны после моделирования усилителя высокой мощности. Тест спектральной маски передатчика [5] использует частотно-зависимое спектральное измерение поля EHT Data. Пример извлекает поле EHT Data каждого пакета из формы волны с избыточной дискретизацией при помощи начальных индексов каждого пакета в форме волны основной полосы частот. Любая задержка, введенная в цепь обработки основной полосы частот, используемую для определения индексов пакетов, должна учитываться при стробировании поля данных EHT в txWaveform. Конкатенируйте извлеченные поля Данные при подготовке к измерению.

startIdx = osf*(ind.EHTData(1)-1)+1; % Upsampled start of EHT Data
endIdx = osf*ind.EHTData(2);         % Upsampled end of EHT Data
delay = grpdelay(firinterp,1); % Group delay of downsampling filter
idx = zeros(endIdx-startIdx+1,pktNum);
for i = 1:pktNum
    % Start of packet in txWaveform
    pktOffset = round(osf*pktOffsetStore(i))-delay;
    % Indices of EHT-Data in txWaveform
    idx(:,i) = (pktOffset+(startIdx:endIdx));
end
gatedEHTTData = txWaveform(idx(:),:);

Стандарт 802.11be задает спектральную маску относительно спектральной плотности пиковой степени. Этот сгенерированный график накладывает необходимую маску на измеренный PSD.

if pktNum>0
    ehtSpectralMaskTest(gatedEHTTData,fs,osf);
end
   Spectral mask passed

Figure Spectrum Analyzer, Transmit Antenna 1 contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type patch, line. These objects represent Lower Mask, Upper Mask, Transmit Antenna 1.

Заключение и дальнейшие исследования

Этот пример измеряет и строит графики:

  • Спектральная плоскостность

  • RMS EVM на поднесущую

  • Уравненное созвездие

  • Спектральная маска

Модель усилителя высокой мощности вводит значительные внутриполосные искажения и спектральное возрождение, которое видно в результатах EVM, шумном созвездии и внеполосных выбросах на графике спектральной маски. Попробуйте увеличить откат усилителя высокой мощности и наблюдайте улучшенные EVM, созвездия и более низкие внеполосные выбросы. Стадия понижающей дискретизации (для приведения формы волны к основной полосе частот для обработки) включает в себя фильтрацию. Реакция фильтра влияет на измерение спектральной плоскостности. Пульсация в спектральном измерении плоскостности происходит из-за понижающей дискретизации в полосу модулирующих частот. Попробуйте использовать другой фильтр или изменить затухание в полосе задерживания и наблюдайте влияние на спектральную плоскостность.

Ссылки

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

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

  3. Лок и Чхон. Беспроводные локальные сети P802.11 IEEE. TGac Функциональные требования и методология оценки Rev. 16. 2011-01-19.

  4. Перахия, Э. и Р. Стейси. Беспроводные LAN следующей генерации: 802.11n и 802.11ac. 2-е издание. Великобритания: Cambridge University Press, 2013. Аршамбо, Джерри и Шраван Суринени. «Спектральные измерения IEEE 802.11 с использованием анализаторов векторных сигналов». Проект РФ 27.6 (2004): 38-49.

  5. Аршамбо, Джерри и Шраван Суринени. «Спектральные измерения IEEE 802.11 с использованием анализаторов векторных сигналов». Проект РФ 27.6 (2004): 38-49.