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

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

Введение

В этом примере показано, как параметрировать и сгенерировать чрезвычайно высокую пропускную способность (EHT) IEEE 802.11be однопользовательская форма волны, заданная в Проекте 0.1 [1] P802.11be. Этот пример выполняет точность модуляции передатчика, необходимую спектральную маску, и потребовал спектральных измерений плоскости на форме волны для настройки, заданной в Разделе 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, заданный в Проекте 0.1 [1] P802.11be, полагается 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. Больший полином генератора для скремблера Поля данных и дескремблера

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

chanBW     = 'CBW320'; % Channel bandwidth
мГц = 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 = мГц;
cfgEHT.User {1}.NumSpaceTimeStreams = numTx;
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);

Сгенерируйте форму волны ЭХТ МУ для заданных битов и настройки при помощи 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];

Добавьте нарушения

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

Мощный усилитель вводит нелинейное поведение в форме внутриполосного искажения и спектрального перероста. Этот пример симулирует усилители мощности при помощи модели [3] Rapp, которая вводит искажение 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

Тепловой шум

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

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

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

  • Правильный фазой и компенсируют Поле данных EHT при помощи канала и шумовых оценок

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

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

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

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

  1. EVM RMS на пакет, который включает усреднение 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. Пример извлекает Поле данных 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) LAN и Физический уровень (PHY) Технические требования - Поправка 8: Улучшения для чрезвычайно высокой пропускной способности (EHT).

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

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

  4. Perahia, E. и Р. Стейси. Беспроводная LAN Следующего поколения: 802.11n и 802.11ac. 2-й Выпуск. Соединенное Королевство: Издательство Кембриджского университета, 2013. Archambault, Джерри и Шрэвэн Суринени. "IEEE 802.11 спектральные измерения с помощью вектора сигнализирует об анализаторах". Проект 27.6 (2004) RF: 38-49.

  5. Archambault, Джерри и Шрэвэн Суринени. "IEEE 802.11 спектральные измерения с помощью вектора сигнализирует об анализаторах". Проект 27.6 (2004) RF: 38-49.