В этом примере показано, как выполнить эти измерения передатчика на форме волны IEEE® 802.11ac™:
Точность модуляции
Маска эмиссии спектра
Плоскость спектра
Синфазный и квадратура (IQ) усиление и разбаланс фазы
Точность модуляции передатчика, требуемая маска спектра и требуемая спектральная плоскость для данной настройки заданы в [Раздел 21.3.17 из 1]. В этом примере показано, как выполнить эти измерения на форме волны. Этот пример также модели, меры, и корректирует усиление IQ и разбаланс фазы. Сгенерируйте форму волны с WLAN Toolbox™ или используйте полученную форму волны со спектром анализатор.
Пример генерирует 20 пакетов VHT с пропускной способностью канала на 80 МГц и разрывом с 10 микросекундами между пакетами. Каждый пакет содержит случайные данные и использует 256-QAM модуляцию. Чтобы сократить внеполосные выбросы и удовлетворить спектральное требование маски, сверхдискретизируйте и отфильтруйте основополосную форму волны. Добавьте усиление IQ и разбаланс фазы к отфильтрованной форме волны. Используйте модель мощного усилителя (HPA), чтобы ввести внутриполосное искажение и спектральный перерост. Выполните спектральное измерение маски эмиссии на сверхдискретизированной форме волны после мощного моделирования усилителя. Downsample и правильный форма волны с предполагаемым усилением IQ и разбалансом фазы. Измерьте величину вектора ошибок (EVM) Поля данных VHT, чтобы определить точность модуляции. Кроме того, измерьте спектральную плоскость. Эта схема показывает рабочий процесс, содержавшийся в примере.

Этот пример генерирует форму волны IEEE 802.11ac, состоящую из нескольких пакетов формата VHT. Используйте объект настройки формата VHT, wlanVHTConfig, сконфигурировать свойства передачи пакета VHT. Этот пример конфигурирует форму волны VHT для пропускной способности на 80 МГц. Поскольку этот пример не использует пространственно-временное блочное кодирование, он может измерить точность модуляции на пространственный поток.
cfgVHT = wlanVHTConfig; % Create packet configuration cfgVHT.ChannelBandwidth = 'CBW80'; % 80 MHz cfgVHT.NumTransmitAntennas = 1; % One transmit antenna cfgVHT.NumSpaceTimeStreams = 1; % One space-time stream cfgVHT.STBC = false; % No STBC so one spatial stream cfgVHT.MCS = 8; % Modulation: 256-QAM cfgVHT.APEPLength = 3000; % A-MPDU length pre-EOF padding in bytes
Сгенерируйте форму волны VHT для заданных битов и настройки при помощи wlanWaveformGenerator функция, задавая желаемый фактор сверхдискретизации, количество пакетов, и время простоя между каждым пакетом.
numPackets = 20; % Generate 20 packets idleTime = 10e-6; % 10 microseconds idle time between packets
Создайте случайные биты для всех пакетов, data, и передайте в качестве аргумента wlanWaveformGenerator наряду с пакетным объектом cfgVHT настройки VHT. Это конфигурирует генератор формы волны, чтобы синтезировать 802.11ac форма волны VHT. Кроме того, сконфигурируйте генератор формы волны при помощи пар "имя-значение", чтобы сгенерировать несколько пакетов с заданным временем простоя между каждым пакетом.
% Create random data; PSDULength is in bytes savedState = rng(0); % Set random state data = randi([0 1],cfgVHT.PSDULength*8*numPackets,1); % Generate a multi-packet waveform txWaveform = wlanWaveformGenerator(data,cfgVHT, ... 'NumPackets',numPackets,'IdleTime',idleTime); % Get the sampling rate of the waveform fs = wlanSampleRate(cfgVHT); disp(['Baseband sampling rate: ' num2str(fs/1e6) ' Msps']);
Baseband sampling rate: 80 Msps
Используйте спектральную фильтрацию, чтобы сократить внеполосные спектральные выбросы вследствие неявного формирования меандра в модуляции OFDM и спектральном переросте, вызванном мощной моделью усилителя. Сверхдискретизируйте форму волны, чтобы смоделировать эффект мощного усилителя и просмотреть внеполосную спектральную эмиссию. Сверхдискретизация требует, чтобы фильтр интерполяции удалил спектральные изображения, вызванные путем повышающей дискретизации. Этот пример сверхдискретизировал форму волны с фильтром интерполяции, который действует как спектральный фильтр и позволяет форме волны удовлетворять спектральные требования маски. Сверхдискретизируйте и отфильтруйте форму волны при помощи dsp.FIRInterpolator System object(TM).
% Oversample the waveform osf = 3; % Oversampling factor filterLen = 120; % Filter length beta = 0.5; % Design parameter for Kaiser window % Generate filter coefficients coeffs = osf.*firnyquist(filterLen,osf,kaiser(filterLen+1,beta)); coeffs = coeffs(1:end-1); % Remove trailing zero interpolationFilter = dsp.FIRInterpolator(osf,'Numerator',coeffs); txWaveform = interpolationFilter(txWaveform); % Plot the magnitude and phase response of the filter applied after % oversampling h = fvtool(interpolationFilter); h.Analysis = 'freq'; % Plot magnitude and phase responses h.FS = osf*fs; % Set sampling rate h.NormalizedFrequency = 'off'; % Plot responses against frequency

Неустойчивость IQ возникает, когда компонент фронтенда не уважает баланс сил или ортогональность между ветвями Q и мной. Этот пример добавляет усиление IQ и разбаланс фазы к переданной форме волны на основе флага modelIQImbalance. В приемнике оцените усиление IQ и разбаланс фазы и откорректируйте форму волны согласно схеме компенсации, заданной в [5].
modelIQImbalance = true; % Set to true to add IQ gain and phase imbalance if modelIQImbalance iqGaindB = 1; % IQ gain imbalance in dB, specify from the range [-1 1] iqPhaseDeg = 1; % IQ phase imbalance in degrees, specify from the range [-2 2] iqGainLin = db2mag(iqGaindB); % Convert gain from dB to linear value txWaveform = real(txWaveform) + 1i*imag(txWaveform)*iqGainLin*exp(1j*iqPhaseDeg*pi/180); % As specified in Equation-1 of [5] end
Мощный усилитель вводит нелинейное поведение в форме внутриполосного искажения и спектрального перероста. Этот пример симулирует усилители мощности при помощи модели Rapp в 802.11ac [2], который вводит искажение AM.
Смоделируйте усилитель при помощи comm.MemorylessNonlinearity объект, и конфигурирует уменьшаемое искажение путем определения возврата, hpaBackoff, таким образом, что усилитель действует ниже его точки насыщения. Можно увеличить возврат, чтобы уменьшать EVM для более высоких значений MCS.
pSaturation = 25; % Saturation power of a power amplifier in dBm hpaBackoff = 13; % Power amplifier backoff in dB % Create and configure a memoryless nonlinearity to model the amplifier nonLinearity = comm.MemorylessNonlinearity; nonLinearity.Method = 'Rapp model'; nonLinearity.Smoothness = 3; % p parameter nonLinearity.LinearGain = -hpaBackoff; nonLinearity.OutputSaturationLevel = db2mag(pSaturation-30); % Apply the model to each transmit antenna for i=1:cfgVHT.NumTransmitAntennas txWaveform(:,i) = nonLinearity(txWaveform(:,i)); end
Добавьте тепловой шум в форму волны, задав фигуру [3] шума приемника на 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, спектральной плоскости и измерений неустойчивости IQ. Как часть передискретизации, примените фильтр сглаживания lowpass перед субдискретизацией. Удар фильтра lowpass отображается в спектральном измерении плоскости. Передискретизируйте форму волны к основной полосе с помощью dsp.FIRDecimator System object(TM) с теми же коэффициентами, coeffs, используемый для сверхдискретизации в разделе 'Oversampling and Filtering'.
% Resample the waveform to baseband decimationFilter = dsp.FIRDecimator(osf,'Numerator',coeffs); rxWaveform = decimationFilter(txWaveform);
Этот раздел обнаруживает, синхронизирует и извлекает каждый пакет в rxWaveform, затем измеряет EVM, спектральную плоскость и неустойчивость IQ. Для каждого пакета пример выполняет эти шаги:
Обнаружьте запуск пакета
Извлеките поля non-HT
Оцените и откорректируйте крупную несущую частоту возмещена (CFO)
Выполните прекрасную оценку синхронизации символа при помощи откорректированных частотой полей non-HT
Извлеките пакет из формы волны при помощи прекрасного смещения синхронизации символа
Откорректируйте извлеченный пакет крупной оценкой CFO
Извлеките L-LTF, затем оцените прекрасный CFO и правильный для целого пакета
Извлеките VHT-LTF и выполните оценку канала для каждого из потоков передачи
Измерьтесь неустойчивость IQ от канала оценивают и выполняют коррекцию на оценке канала
Измерьте спектральную плоскость при помощи оценки канала
Извлеките и OFDM демодулируют поле данных VHT
Выполните шумовую оценку при помощи демодулируемых пилотов поля данных и оценки канала единого потока в экспериментальных поднесущих
Правильный фазой и компенсируют поле данных VHT при помощи канала и шумовых оценок
Откорректируйте компенсируемые поднесущие данных оценкой неустойчивости IQ
Для каждой несущей данные поднесущей в каждом пространственном потоке найдите, что самое близкое созвездие указывает и измеряет EVM
Схема показывает цепь обработки:

Символы VHT-LTF включают экспериментальные символы, чтобы позволить, чтобы фаза отследила, но этот пример не выполняет отслеживание фазы.
Протестируйте спектральную плоскость на каждый пакет путем измерения отклонения в величине отдельных поднесущих в оценке канала против среднего значения [1]. Постройте эти отклонения для каждого пакета с помощью функции помощника vhtTxSpectralFlatnessMeasurement. Постройте средний EVM на несущую данные поднесущую и компенсируемые символы для каждого пакета.
Демодулируйте, компенсируйте и декодируйте символы Данных VHT при помощи wlanVHTDataRecover функция. Параметрируйте эту функцию, чтобы выполнить отслеживание экспериментального этапа и обеспечивающую нуль эквализацию как требуется по стандарту. Этот пример измеряет точность модуляции от компенсируемых символов.
Этот пример делает два различных измерения EVM с помощью двух экземпляров comm.EVM.
EVM RMS на пакет, который включает усреднение EVM по поднесущим, символам OFDM и пространственным потокам.
RMS EVM на поднесущую на пространственный поток для пакета. Поскольку эта настройка сопоставляет пространственные потоки непосредственно с антеннами, это измерение может помочь обнаружить зависимые частотой нарушения, которые могут влиять на отдельные цепи RF по-другому. Это измерение составляет в среднем EVM по символам OFDM только.
% Setup EVM measurements
[EVMPerPkt,EVMPerSC] = vhtEVMSetup(cfgVHT);
Этот код конфигурирует объекты и переменные для обработки.
% Get indices for accessing each field within the time-domain packet ind = wlanFieldIndices(cfgVHT); rxWaveformLength = size(rxWaveform,1); pktLength = double(ind.VHTData(2)); % Define the minimum length of data we can detect; length of the L-STF in % samples minPktLen = double(ind.LSTF(2)-ind.LSTF(1))+1; % Setup the measurement plots [hSF,hCon,hEVM] = vhtTxSetupPlots(cfgVHT); rmsEVM = zeros(numPackets,1); pktOffsetStore = zeros(numPackets,1); rng(savedState); % Restore random state
Обнаружьте и пакеты процесса в полученной форме волны, rxWaveform при помощи некоторое время цикла, который выполняет эти шаги.
Обнаружьте пакет путем индексации в rxWaveform с демонстрационным смещением, searchOffset
Обнаружьте и обработайте первый пакет в rxWaveform
Обнаружьте и обработайте следующий пакет путем постепенного увеличения демонстрационного смещения индекса, searchOffset
Повторитесь, пока никакие дальнейшие пакеты не будут обнаружены
pktNum = 0; searchOffset = 0; % Start at first sample (no offset) while (searchOffset+minPktLen)<=rxWaveformLength % Packet detect pktOffset = wlanPacketDetect(rxWaveform,cfgVHT.ChannelBandwidth); % Packet offset from start of waveform pktOffset = searchOffset+pktOffset; % If no packet detected or offset outwith bounds of waveform then stop if isempty(pktOffset) || (pktOffset<0) || ... ((pktOffset+ind.LSIG(2))>rxWaveformLength) break; end % Extract non-HT fields and perform coarse frequency offset correction % to allow for reliable symbol timing nonht = rxWaveform(pktOffset+(ind.LSTF(1):ind.LSIG(2)),:); coarsefreqOff = wlanCoarseCFOEstimate(nonht,cfgVHT.ChannelBandwidth); nonht = helperFrequencyOffset(nonht,fs,-coarsefreqOff); % Determine offset between the expected start of L-LTF and actual start % of L-LTF lltfOffset = wlanSymbolTimingEstimate(nonht,cfgVHT.ChannelBandwidth); % Determine packet offset pktOffset = pktOffset+lltfOffset; % If offset is without bounds of waveform 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 = wlanFineCFOEstimate(lltf,cfgVHT.ChannelBandwidth); rxPacket = helperFrequencyOffset(rxPacket,fs,-fineFreqOff); % Extract VHT-LTF samples, demodulate and perform channel estimation vhtltf = rxPacket(ind.VHTLTF(1):ind.VHTLTF(2),:); vhtltfDemod = wlanVHTLTFDemodulate(vhtltf,cfgVHT); % Get single stream channel estimate chanEstSSPilots = vhtSingleStreamChannelEstimate(vhtltfDemod,cfgVHT); % Channel estimate chanEst = wlanVHTLTFChannelEstimate(vhtltfDemod,cfgVHT); % Perform IQ gain and phase imbalance estimation [gainEst,phaseEst,alphaEst,betaEst,gamma,dataRot] = ... helperIQImbalanceEstimate(chanEst,cfgVHT); fprintf(' Measured IQ gain & phase imbalance: %2.2f dB, %2.2f deg\n',gainEst,phaseEst); % Perform IQ gain and phase imbalance correction on channel % estimates chanEst = chanEst./(alphaEst + betaEst.*gamma); % As specified in Equation-29 of [5] % Spectral flatness measurement vhtTxSpectralFlatnessMeasurement(chanEst,cfgVHT,pktNum,hSF); % Extract VHT Data samples from the waveform vhtdata = rxPacket(ind.VHTData(1):ind.VHTData(2),:); % Estimate the noise power in VHT data field noiseVarVHT = vhtNoiseEstimate(vhtdata,chanEstSSPilots,cfgVHT); % Extract VHT Data samples and perform OFDM demodulation, equalization % and phase tracking [~,~,eqSym] = wlanVHTDataRecover(vhtdata,chanEst,noiseVarVHT,cfgVHT,... 'EqualizationMethod','ZF','PilotPhaseTracking','PreEQ'); % Use zero forcing algorithm for equalization % Perform IQ gain and phase imbalance correction on VHT data eqSym = eqSym.*dataRot; % Carrier rotation on data subcarriers eqSym = ((conj(alphaEst)*eqSym)-(betaEst*conj(eqSym(end:-1:1,:,:))))/((abs(alphaEst)^2)-(abs(betaEst)^2)); % As specified in Equation-30 of [5] % Compute RMS EVM over all spatial streams for 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 vhtTxEVMConstellationPlots(eqSym,evmPerSC,cfgVHT,pktNum,hCon,hEVM); % 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 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
Packet 1 at index: 41
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.38%, -29.43dB
Packet 2 at index: 9801
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.14%, -30.05dB
Packet 3 at index: 19561
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 2.96%, -30.56dB
Packet 4 at index: 29321
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.09%, -30.20dB
Packet 5 at index: 39081
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.03%, -30.36dB
Packet 6 at index: 48841
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 2.73%, -31.27dB
Packet 7 at index: 58601
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.00%, -30.46dB
Packet 8 at index: 68361
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 2.89%, -30.79dB
Packet 9 at index: 78121
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.02%, -30.39dB
Packet 10 at index: 87881
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 2.79%, -31.09dB
Packet 11 at index: 97641
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 2.98%, -30.52dB
Packet 12 at index: 107401
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.00%, -30.47dB
Packet 13 at index: 117161
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 2.88%, -30.80dB
Packet 14 at index: 126921
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 2.96%, -30.59dB
Packet 15 at index: 136681
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.17%, -29.98dB
Packet 16 at index: 146441
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 2.69%, -31.42dB
Packet 17 at index: 156201
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.03%, -30.36dB
Packet 18 at index: 165961
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.26%, -29.75dB
Packet 19 at index: 175721
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.29%, -29.65dB
Packet 20 at index: 185481
Measured IQ gain & phase imbalance: 0.98 dB, 0.96 deg
Spectral flatness passed
RMS EVM: 3.27%, -29.72dB
Average EVM for 20 packets: 3.03%, -30.38dB



Этот раздел измеряет спектральную маску отфильтрованной и формы волны, которой повреждают, после мощного моделирования усилителя.
Передатчик спектральный тест маски [4] использование пропущенное временем спектральное измерение Поля данных VHT. Пример извлекает Поле данных VHT каждого пакета от сверхдискретизированной формы волны, txWaveform, при помощи индексов запуска каждого пакета в основополосной форме волны. Любая задержка, введенная в основополосной цепи обработки, используемой, чтобы определить пакетные индексы, должна составляться при пропускании поля данных VHT в txWaveform. Конкатенация извлеченных Полей данных VHT при подготовке к измерению.
startIdx = osf*(ind.VHTData(1)-1)+1; % Upsampled start of VHT Data endIdx = osf*ind.VHTData(2); % Upsampled end of VHT Data delay = grpdelay(decimationFilter,1); % Group delay of downsampling filter idx = zeros(endIdx-startIdx+1,pktNum); for i = 1:pktNum % Start of packet in txWaveform pktOffset = osf*pktOffsetStore(i)-delay; % Indices of VHT Data in txWaveform idx(:,i) = (pktOffset+(startIdx:endIdx)); end gatedVHTData = txWaveform(idx(:),:);
Стандарт 802.11ac задает спектральную маску относительно пиковой мощности спектральная плотность. Функция помощника helperSpectralMaskTest генерирует график, который накладывает необходимую маску с измеренным PSD.
if pktNum>0 helperSpectralMaskTest(gatedVHTData,fs,osf); end
Spectrum mask passed

Этот пример строит четыре результата: спектральная плоскость, RMS EVM на поднесущую, компенсировала созвездие и спектральную маску.
Мощная модель усилителя вводит значительное внутриполосное искажение и спектральный перерост, который отображается в результатах EVM, шумном созвездии и внеполосной эмиссии в спектральном графике маски. Попытайтесь увеличить мощный возврат усилителя и отметьте улучшенный EVM, созвездие и понизьте внеполосную эмиссию.
Попытайтесь использовать различные значения для iqGaindB и iqPhaseDeg и отметьте удар на EVM и созвездие.
Спектральная фильтрация и субдискретизация (чтобы принести форму волны к основной полосе для обработки) этапы включают фильтрацию. Эти ответы фильтра влияют на спектральное измерение плоскости. Пульсация в спектральном измерении плоскости происходит в основном из-за субдискретизации к основной полосе. Попытайтесь использовать различные фильтры или отфильтруйте длины и отметьте удар на спектральную плоскость.
Станд. IEEE 802.11™-2016 Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования.
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.
М. Джейнэсвами, Н. К. Чавали и С. Бэйтабьял, "Измерение передатчика параметры IQ в HT и беспроводных системах LAN VHT", 2 016 Международных конференций по вопросам Обработки сигналов и Коммуникаций (SPCOM), Бангалора.