exponenta event banner

Генерация и анализ сигналов 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. В примере избыточная выборка формы сигнала с использованием большего IFFT, чем требуется для номинальной скорости основной полосы частот, и не выполняется спектральная фильтрация. В примере используется модель усилителя высокой мощности (HPA), которая вводит внутриполосные искажения и повторный рост спектра. В примере после моделирования усилителя высокой мощности выполняется измерение маски спектрального излучения по сигналу с повышенной дискретизацией. Пример декодирует поле данных EHT и измеряет величину вектора ошибок (EVM) для определения точности модуляции после понижающей дискретизации формы сигнала до частоты дискретизации основной полосы частот. Кроме того, в примере измеряют спектральную плоскостность восстановленного сигнала. На этой схеме показан рабочий процесс, содержащийся в примере.

Настройка моделирования

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

numPackets = 20;
idleTime   = 10; % In microseconds

Конфигурирование и генерация формы сигнала 802.11be

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

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

  2. 4096-QAM в вариантах индекса MCS 12 и 13

  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;
cfgEHT.User{1}.NumSpaceTimeStreams = numTx;
cfgEHT.User{1}.APEPLength = apepLength;
cfgEHT.RU{1}.SpatialMapping = 'Direct';

Для моделирования влияния усилителя высокой мощности на форму сигнала и просмотра внеполосных спектральных излучений, форма сигнала должна быть избыточно дискретизирована. Этот пример генерирует сигнал, используя больший IFFT, чем требуется для номинальной скорости основной полосы частот, что приводит к избыточной дискретизации сигнала. В примере не выполняется спектральная фильтрация.

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 и спектра, применяя фильтр сглаживания нижних частот перед понижающей дискретизацией. Воздействие фильтра нижних частот видно при измерении спектральной плоскостности. Фильтр сглаживания выполнен таким образом, что все активные поднесущие находятся в пределах полосы пропускания фильтра.

Проектирование фильтра повторной выборки.

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)

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

  • Извлечение пакета из формы сигнала с использованием точного временного сдвига символа

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

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

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

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

  • Извлечение и демодуляция OFDM поля данных EHT

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

  • Коррекция фазы и выравнивание поля данных EHT с использованием оценок канала и шума

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

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

На этой схеме показана цепочка обработки.

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

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

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

Настройка измерений 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. Пример извлекает поле данных EHT каждого пакета из избыточно дискретизированной формы сигнала с использованием начальных индексов каждого пакета в пределах формы сигнала основной полосы частот. Любая задержка, введенная в цепочку обработки основной полосы частот, используемую для определения индексов пакетов, должна учитываться при стробировании поля данных EHT в пределах txWaveform. Объедините извлеченные поля данных EHT при подготовке к измерениям.

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: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY) - Поправка 1: Усовершенствования для высокой эффективности WLAN.

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

  4. Перахия, Э. и Р. Стейси. Беспроводные локальные сети следующего поколения: 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.