Этот пример показывает, как сгенерировать 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), чтобы определить точность модуляции после понижающей дискретизации формы волны до частоты дискретизации основной полосы частот. Кроме того, пример измеряет спектральную плоскостность восстановленной формы волны. Эта схема показывает рабочий процесс, содержащийся в примере.
Сконфигурируйте пример, чтобы generate
20 однопользовательских пакетов EHT с периодом простоя 10 микросекунд между каждым пакетом.
numPackets = 20; idleTime = 10; % In microseconds
Физический слой 802.11be, определенный в P802.11be Draft 0.1 [1], основан на 802.11ax [2] с этими добавленными возможностями и модификациями.
Увеличение максимальной пропускной способности канала 320 МГц
4096-QAM в опциях 12 и 13 индекса MCS
Назначение нескольких ресурсных модулей (MRU) одной станции (STA) с опциональной прокалыванием однопользовательских пакетов
Увеличенное максимальное количество пространственных потоков для восходящего MU-MIMO (16 пространственных потоков для 8 пользователей)
Измененный план тональных сигналов для пропускной способности 80 и 160 МГц
Большой полином генератора для скремблера поля данных и дескремблера
Этот пример моделирует эти ключевые функции 802.11be.
Пропускная способность канала 320 МГц
4096-QAM модуляция
Измененный план тональных сигналов для пропускной способности 80 и 160 МГц
Большой полином генератора для скремблера поля данных и дескремблера
Черновой стандарт определяет формат 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 и спектральной плоскостности, применяя фильтр сглаживания 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.
RMS EVM на пакет, который содержит усреднение EVM по поднесущим, символы OFDM и пространственные потоки.
RMS EVM на поднесущую по пространственному потоку для пакета. Поскольку эта конфигурация отображает пространственные потоки непосредственно на антенны, это измерение может помочь обнаружить частотно-зависимые нарушения, которые могут по-разному влиять на отдельные RF-цепи. Это измерение усредняет EVM только по символам OFDM.
Setup измерений EVM.
[EVMPerPkt,EVMPerSC] = evmSetup(cfgEHT);
Получите индексы для доступа к каждому полю в пакете временной области.
ind = ehtFieldIndices(cfgEHT);
Определите минимальную обнаруживаемую длину данных в выборках.
minPktLen = double(ind.LSTF(2)-ind.LSTF(1))+1;
Обнаружение и обработка пакетов в пределах принятой формы волны с помощью while
цикл, который выполняет эти шаги.
Обнаружение пакета путем индексации в rxWaveform
со смещением выборки, searchOffset
Обнаружите и обработайте первый пакет в rxWaveform
Обнаружите и обработайте следующий пакет путем увеличения смещения индекса выборки
Повторяйте, пока не будут обнаружены дальнейшие пакеты
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
Spectral flatness passed
RMS EVM: 0.41%, -47.66dB
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
Этот пример измеряет и строит графики:
Спектральная плоскостность
RMS EVM на поднесущую
Уравненное созвездие
Спектральная маска
Модель усилителя высокой мощности вводит значительные внутриполосные искажения и спектральное возрождение, которое видно в результатах EVM, шумном созвездии и внеполосных выбросах на графике спектральной маски. Попробуйте увеличить откат усилителя высокой мощности и наблюдайте улучшенные EVM, созвездия и более низкие внеполосные выбросы. Стадия понижающей дискретизации (для приведения формы волны к основной полосе частот для обработки) включает в себя фильтрацию. Реакция фильтра влияет на измерение спектральной плоскостности. Пульсация в спектральном измерении плоскостности происходит из-за понижающей дискретизации в полосу модулирующих частот. Попробуйте использовать другой фильтр или изменить затухание в полосе задерживания и наблюдайте влияние на спектральную плоскостность.
IEEE P802.11be™/D0.1 Проект стандарта на информационные технологии - Телекоммуникации и обмен информацией между системами Локальные и столичные сети - Особые требования - Часть 11: Спецификации к беспроводному управлению доступом к локальной сети (MAC) и физическому слою (PHY) - Поправка 8: Улучшения для чрезвычайно высокой пропускной способности (EHT).
IEEE P802.11ax™/D7.0 Проект стандарта на информационные технологии - Телекоммуникации и обмен информацией между системами - Локальные и столичные сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной LAN (MAC) и физического Слоя (PHY) - Поправка 1: Усовершенствования для высокой Эффективности WLAN.
Лок и Чхон. Беспроводные локальные сети P802.11 IEEE. TGac Функциональные требования и методология оценки Rev. 16. 2011-01-19.
Перахия, Э. и Р. Стейси. Беспроводные LAN следующей генерации: 802.11n и 802.11ac. 2-е издание. Великобритания: Cambridge University Press, 2013. Аршамбо, Джерри и Шраван Суринени. «Спектральные измерения IEEE 802.11 с использованием анализаторов векторных сигналов». Проект РФ 27.6 (2004): 38-49.
Аршамбо, Джерри и Шраван Суринени. «Спектральные измерения IEEE 802.11 с использованием анализаторов векторных сигналов». Проект РФ 27.6 (2004): 38-49.