В этом примере показано, как сгенерировать 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), чтобы определить точность модуляции после субдискретизации формы волны к основополосной частоте дискретизации. Кроме того, пример измеряет спектральную плоскость восстановленной формы волны. Эта схема показывает рабочий процесс, содержавшийся в примере.
Сконфигурируйте пример к generate
20 однопользовательских пакетов EHT с периодом неактивности с 10 микросекундами между каждым пакетом.
numPackets = 20; idleTime = 10; % In microseconds
Физический уровень 802.11be, заданный в Проекте 0.1 [1] P802.11be, полагается 802.11ax [2] с этими добавленными возможностями и модификациями.
Увеличенная максимальная пропускная способность канала 320 МГц
4096-QAM в MCS индексируют опции 12 и 13
Присвоение нескольких снабжают модуль (MRU) к отдельной станции (STA), с дополнительным прокалыванием однопользовательских пакетов
Увеличенное максимальное число пространственных потоков для восходящего MU-MIMO (16 пространственных потоков максимум через 8 пользователей)
Модифицированный тональный план относительно пропускной способности на 80 и 160 МГц
Больший полином генератора для скремблера Поля данных и дескремблера
Этот пример демонстрирует эти ключевые 802.11be функции.
Пропускная способность канала на 320 МГц
4096-QAM модуляция
Модифицированный тональный план относительно пропускной способности на 80 и 160 МГц
Больший полином генератора для скремблера Поля данных и дескремблера
Черновой стандарт задает ЭХТ, многопользовательского (ЭХТ МУ) формат для передачи и однопользовательских и многопользовательских пакетов. Этот пример только поддерживает генерацию однопользовательских пакетов. Используйте объект настройки ЭХТ МУ, 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 и спектральных измерений плоскости, применяя фильтр сглаживания 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.
EVM RMS на пакет, который включает усреднение 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. Пример извлекает Поле данных 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
Этот пример меры и графики:
Спектральная плоскость
RMS EVM на поднесущую
Компенсируемое созвездие
Спектральная маска
Мощная модель усилителя вводит значительное внутриполосное искажение и спектральный перерост, который отображается в результатах EVM, шумном созвездии и внеполосной эмиссии в спектральном графике маски. Попытайтесь увеличить мощный возврат усилителя и наблюдайте улучшенный EVM, созвездие, и понизьте внеполосную эмиссию. Субдискретизация (чтобы принести форму волны к основной полосе для обработки) этап включает фильтрацию. Ответ фильтра влияет на спектральное измерение плоскости. Пульсация в спектральном измерении плоскости происходит из-за субдискретизации к основной полосе. Попытайтесь использовать различный фильтр или изменить затухание в полосе задерживания и наблюдайте удар на спектральную плоскость.
Черновой Стандарт IEEE P802.11be™/D0.1 для Информационных технологий — Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями — Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 8: Улучшения для чрезвычайно высокой пропускной способности (EHT).
Черновой Стандарт IEEE P802.11ax™/D7.0 для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 1: Улучшения для Высокой эффективности WLAN.
Loc и Cheong. IEEE P802.11 Беспроводная LAN. Функциональные требования TGac и версия методологии оценки. 16. 2011-01-19.
Perahia, E. и Р. Стейси. Беспроводная LAN Следующего поколения: 802.11n и 802.11ac. 2-й Выпуск. Соединенное Королевство: Издательство Кембриджского университета, 2013. Archambault, Джерри и Шрэвэн Суринени. "IEEE 802.11 спектральные измерения с помощью вектора сигнализирует об анализаторах". Проект 27.6 (2004) RF: 38-49.
Archambault, Джерри и Шрэвэн Суринени. "IEEE 802.11 спектральные измерения с помощью вектора сигнализирует об анализаторах". Проект 27.6 (2004) RF: 38-49.