Тест минимальной входной чувствительности приемника 802.11ac

Этот пример показывает, как моделировать тест, чтобы измерить получатель минимальная входная чувствительность, как задано в Разделе 22.3.19.1 из стандарта IEEE® 802.11ac™ [1].

Введение

Тест чувствительности минимума получателя гарантирует, что устройство под тестом (DUT) может получить данные с заданным максимальным пакетным коэффициентом ошибок (PER) 10% в заданной минимальной степени сигнала. Минимальная степень сигнала зависит от пропускной способности канала и схемы модуляции и кодирования (MCS), как задано в Таблице 22-25 стандарта IEEE 802.11ac [1]:

Когда тест выполняется с оборудованием, каждый входной порт антенны на DUT соединяется через кабель с одним выходным портом антенны передатчика. Следующие параметры передачи заданы для тестовой формы волны:

  • Количество пространственных потоков равно количеству передачи портов антенны

  • Длина PSDU 4 096 байтов

  • Никакое пространственно-временное блочное кодирование (STBC)

  • Защитный интервал на 800 нс

  • Бинарное сверточное кодирование

Этот пример показывает, как вышеупомянутый тест может быть создан со сквозной симуляцией с помощью WLAN Toolbox™. В этом примере получатель стимулирован с поступлением пакетов VHT в области значений уровней на входе ниже минимального уровня уязвимости и измеренного PER.

Поскольку каждый уровень уязвимости протестировал пакеты, генерируются и масштабируются к желаемому уровню сигнала. Белый Гауссов шум добавляется, чтобы создать уровень шума в получателе. Шумные пакеты затем демодулируются и восстановленный PSDUs. PSDUs сравниваются с переданными, чтобы определить количество пакетных ошибок и следовательно пакетного коэффициента ошибок. Автоматическое управление усилением (AGC), пакетное обнаружение, синхронизируя синхронизацию, несущая частота сместила исправление, шумовая оценка и отслеживание фазы выполняются получателем. Обработка для каждого пакета получена в итоге в следующей схеме:

Протестируйте параметры

Настройка передачи для теста задана с объектом настройки VHT. В этом примере минимальная чувствительность измеряется для передачи на 160 МГц с 64-QAM уровнем 5/6 модуляция и кодирование. Моделируемый DUT имеет 2, получают антенны. Эти параметры могут быть изменены, чтобы протестировать различные настройки.

cfgVHT = wlanVHTConfig;             % Create VHT transmission configuration
cfgVHT.ChannelBandwidth = 'CBW160'; % Bandwidth
cfgVHT.MCS = 7;                     % 64-QAM, rate 5/6
NumReceiveAntennas = 2;             % Number of receive antennas

Фиксированные параметры передачи, требуемые тестом, устанавливаются ниже.

cfgVHT.APEPLength = 4096; % Bytes
cfgVHT.STBC = false;
cfgVHT.NumTransmitAntennas = NumReceiveAntennas;
cfgVHT.NumSpaceTimeStreams = NumReceiveAntennas;
cfgVHT.SpatialMapping = 'Direct';
cfgVHT.GuardInterval = 'Long';

Параметры симуляции

В этом примере получатель стимулирован с пакетами VHT в области значений уровней на входе ниже минимального входного уровня уязвимости. Область значений протестированных смещений задана в векторном testInputLevelOffsets.

testInputLevelOffsets = [-10 -9 -8 -7]; % dB

Количеством пакетов, протестированных в каждой чувствительности, управляют два параметра:

  1. maxNumErrors является максимальным количеством пакетных ошибок, моделируемых на каждом уровне на входе. Когда количество пакетных ошибок достигает этого предела, симуляция на этом уровне уязвимости завершена.

  2. maxNumPackets является максимальным количеством пакетов, моделируемых на каждом уровне на входе, и ограничивает продолжительность симуляции, если пакетный предел погрешности не достигнут.

Числа, выбранные в этом примере, приведут к очень короткой симуляции. Для значимых результатов мы рекомендуем увеличить числа.

maxNumErrors = 20;
maxNumPackets = 200;

Setup степени сигнала

Минимальный тест чувствительности указывает, что максимальный PER для измеренного уровня на входе на получает антенну. В этой симуляции получатель стимулирован с тестовым сигналом с заданным уровнем на входе в dBm. Тестовый сигнал сгенерирован с генератором формы волны, wlanWaveformGenerator. Вывод генератора формы волны нормирован внутренне таким образом, что степень для всех антенн суммирует к 0 dBm. Поэтому для этой симуляции вывод генератора формы волны должен масштабироваться, чтобы создать желаемый уровень на входе.

Сначала минимальная чувствительность для настройки передачи определяется из Таблицы 22-25 стандарта IEEE 802.11ac [1].

% Receiver minimum input level sensitivity for 20 MHz, Table 22-25. The
% sensitivity increases by 3dB for double the bandwidth.
rxMinSensitivityTable = [-82 -79 -77 -74 -70 -66 -65 -64 -59 -57]; % dBm

% Get minimum input sensitivity given MCS and bandwidth
fs = wlanSampleRate(cfgVHT);  % Baseband sampling rate (Hz)
B = floor(10*log10((fs/20e6))); % Scalar for bandwidth
rxMinSensitivity = rxMinSensitivityTable(cfgVHT.MCS+1)+B; % dBm
disp(['Minimum sensitivity for MCS' num2str(cfgVHT.MCS) ', ' ...
    num2str(fs/1e6) ' MHz: ' num2str(rxMinSensitivity,'%2.1f') ' dBm'])
Minimum sensitivity for MCS7, 160 MHz: -55.0 dBm

В этом примере область значений уровней на входе ниже минимального уровня тестируются. Эти уровни мощности заданы testInputLevels.

testInputLevels = rxMinSensitivity+testInputLevelOffsets; % dBm

Скаляр напряжения, A, вычисляется, чтобы масштабировать сгенерированную форму волны для каждого тестового уровня. Степень на получает порт антенны, измеряется во время симуляции, чтобы подтвердить, что уровень входного сигнала правилен.

A = 10.^((testInputLevels-30)/20);      % Voltage gain (attenuation)
A = A*sqrt(cfgVHT.NumTransmitAntennas); % Account for generator scaling

Шумовая настройка

Уровень шума получателя моделируется с тепловыми помехами. Высота уровня шума определяет ОСШ в получателе, когда уровень входного сигнала фиксируется для этого теста. Шумовая фигура получателя определяет уровень уровня шума.

NF = 6;         % Noise figure (dB)
T = 290;        % Ambient temperature (K)
BW = fs;        % Bandwidth (Hz)
k = 1.3806e-23; % Boltzmann constant (J/K)
noiseFloor = 10*log10(k*T*BW)+NF; % dB
disp(['Receiver noise floor: ' num2str(noiseFloor+30,'%2.1f') ' dBm'])
Receiver noise floor: -85.9 dBm

Канал AWGN, коммуникация. AWGNChannel, используется, чтобы добавить шум в форму волны.

awgnChannel = comm.AWGNChannel('NoiseMethod','Variance', ...
    'Variance',10^(noiseFloor/10));

Симуляция чувствительности уровня на входе

Для каждого уровня на входе много пакетов тестируются и пакетный вычисленный коэффициент ошибок.

Для каждого пакета происходят выполняющие шаги обработки:

  1. PSDU создается и кодируется, чтобы создать одну пакетную форму волны.

  2. Форма волны масштабируется, чтобы создать желаемый уровень на входе в dBm.

  3. Степень полученной формы волны измеряется.

  4. AWGN добавляется к полученной форме волны, чтобы создать уровень шума.

  5. Полученная форма волны передается посредством автоматического управления усилением, чтобы повысить сигнал до обработки получателя.

  6. Пакет обнаруживается.

  7. Крупное смещение несущей частоты оценивается и исправляется.

  8. Прекрасная синхронизация синхронизации устанавливается. L-STF, L-LTF и выборки L-SIG обеспечиваются для прекрасной синхронизации, чтобы допускать пакетное обнаружение в запуске или конце L-STF.

  9. Прекрасное смещение несущей частоты оценивается и исправляется.

  10. VHT-LTF извлечен от синхронизируемой полученной формы волны. VHT-LTF является демодулируемым OFDM, и оценка канала выполняется.

  11. Поле данных VHT извлечено от синхронизируемой полученной формы волны. PSDU восстанавливается с помощью извлеченного поля и оценки канала.

ind = wlanFieldIndices(cfgVHT); % For accessing fields within the packet
chanBW = cfgVHT.ChannelBandwidth;
rng(0);  % Set random state for repeatability

agc = comm.AGC; % Automatic gain control

S = numel(testInputLevels);
packetErrorRate = zeros(S,1);
rxAntennaPower = zeros(S,1);
for i=1:S
    disp(['Simulating ' num2str(testInputLevels(i),'%2.1f') ...
        ' dBm input level...']);

    % Loop to simulate multiple packets
    numPacketErrors = 0;
    measuredPower = zeros(maxNumPackets,1); % Average power per antenna
    numPkt = 1; % Index of packet transmitted
    while numPacketErrors<=maxNumErrors && numPkt<=maxNumPackets
        % Generate a packet waveform
        txPSDU = randi([0 1],cfgVHT.PSDULength*8,1); % PSDULength in bytes
        tx = wlanWaveformGenerator(txPSDU,cfgVHT);

        % Scale input signal to desired level
        rx = tx.*A(i);

        % Measure the average power at the antenna connector in Watts
        measuredPower(numPkt) = mean(mean(rx.*conj(rx)));

        % Add noise floor at receiver
        rx = awgnChannel(rx);

        % Pass each channel through AGC
        for ic = 1:size(rx,2)
            rx(:,ic) = agc(rx(:,ic));
            reset(agc);
        end

        % Packet detect and determine coarse packet offset
        coarsePktOffset = wlanPacketDetect(rx,chanBW);
        if isempty(coarsePktOffset) % If empty no L-STF detected; packet error
            numPacketErrors = numPacketErrors+1;
            numPkt = numPkt+1;
            continue; % Go to next loop iteration
        end

        % Extract L-STF and perform coarse frequency offset correction
        lstf = rx(coarsePktOffset+(ind.LSTF(1):ind.LSTF(2)),:);
        coarseFreqOff = wlanCoarseCFOEstimate(lstf,chanBW);
        rx = helperFrequencyOffset(rx,fs,-coarseFreqOff);

        % Extract the non-HT fields and determine fine packet offset
        nonhtfields = rx(coarsePktOffset+(ind.LSTF(1):ind.LSIG(2)),:);
        finePktOffset = wlanSymbolTimingEstimate(nonhtfields,chanBW);

        % Determine final packet offset
        pktOffset = coarsePktOffset+finePktOffset;
        % if packet detected out of a reasonable range (>50 samples);
        % packet error
        if pktOffset>50
            numPacketErrors = numPacketErrors+1;
            numPkt = numPkt+1;
            continue; % Go to next loop iteration
        end

        % Extract L-LTF and perform fine frequency offset correction
        lltf = rx(pktOffset+(ind.LLTF(1):ind.LLTF(2)),:);
        fineFreqOff = wlanFineCFOEstimate(lltf,chanBW);
        rx = helperFrequencyOffset(rx,fs,-fineFreqOff);

        % Extract VHT-LTF samples from the waveform, demodulate and perform
        % channel estimation
        vhtltf = rx(pktOffset+(ind.VHTLTF(1):ind.VHTLTF(2)),:);
        vhtltfDemod = wlanVHTLTFDemodulate(vhtltf,cfgVHT);
        chanEst = wlanVHTLTFChannelEstimate(vhtltfDemod,cfgVHT);

        % Get single stream channel estimate
        chanEstSSPilots = vhtSingleStreamChannelEstimate(vhtltfDemod,cfgVHT);

        % Extract VHT Data samples from the waveform
        vhtdata = rx(pktOffset+(ind.VHTData(1):ind.VHTData(2)),:);

        % Estimate the noise power in VHT data field
        nEstVHT = vhtNoiseEstimate(vhtdata,chanEstSSPilots,cfgVHT);

        % Recover the transmitted PSDU in VHT Data
        rxPSDU = wlanVHTDataRecover(vhtdata,chanEst,nEstVHT,cfgVHT);

        % Determine if any bits are in error, i.e. a packet error
        packetError = any(biterr(txPSDU,rxPSDU));
        numPacketErrors = numPacketErrors+packetError;
        numPkt = numPkt+1;
    end

    % Calculate packet error rate (PER) at input level point
    packetErrorRate(i) = numPacketErrors/(numPkt-1);
    disp(['  Completed after ' ...
        num2str(numPkt-1) ' packets, PER: ' ...
        num2str(packetErrorRate(i))]);

    % Calculate average input power per antenna
    rxAntennaPower(i) = 10*log10(mean(measuredPower(1:(numPkt-1))))+30;
    disp(['  Measured antenna connector power: ' ...
        num2str(rxAntennaPower(i),'%2.1f') ' dBm']);
end
Simulating -65.0 dBm input level...
  Completed after 21 packets, PER: 1
  Measured antenna connector power: -65.0 dBm
Simulating -64.0 dBm input level...
  Completed after 26 packets, PER: 0.80769
  Measured antenna connector power: -64.0 dBm
Simulating -63.0 dBm input level...
  Completed after 130 packets, PER: 0.16154
  Measured antenna connector power: -63.0 dBm
Simulating -62.0 dBm input level...
  Completed after 200 packets, PER: 0.02
  Measured antenna connector power: -62.0 dBm

Анализ и дальнейшее исследование

PER для протестированных уровней входного сигнала построен с максимальным PER в минимальной чувствительности.

figure
semilogy(rxAntennaPower,packetErrorRate,'o-')
hold on
semilogy(rxMinSensitivity,0.1,'rx')
currentxlim = xlim(gca);
xlim([currentxlim(1) currentxlim(2)+1])
grid on
xlabel('Measured power per antenna connector (dBm)');
ylabel('PER');
legend('Simulated PER performance','Maximum PER at minimum sensitivity');
title(sprintf(['Minimum Input Sensitivity Test: MCS%d, %d MHz, ' ...
    '%d Antennas'],cfgVHT.MCS,fs/1e6,cfgVHT.NumTransmitAntennas))

Осмотр графика показывает, что моделируемые 10% PER только находятся под на 8 дБ ниже, чем минимальная чувствительность, заданная тестом. Это различие происходит из-за поля реализации, позволенного тестом. Поле реализации допускает алгоритмические ухудшения из-за нарушений и фигуры шума получателя когда по сравнению с идеальной производительностью AWGN [2]. В этом примере только AWGN добавляется как нарушение. Поэтому только алгоритмическая производительность синхронизации фронтенда, оценки канала и отслеживания фазы в присутствии AWGN использует поле реализации. Если больше нарушений будет включено в симуляцию, то водопад PER в графике переместит вправо к минимальной чувствительности, и поле уменьшится.

Количеством пакетов, протестированных в каждой точке ОСШ, управляют два параметра; maxNumErrors и maxNumPackets. Для значимых результатов это, рекомендуют, чтобы эти значения были больше, чем представленные в этом примере.

Приложение

Этот пример использует следующие функции помощника:

Выбранная библиография

  1. Станд. IEEE 802.11ac™-2013 Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации - Поправка 4: Улучшения для Очень Высокой Пропускной способности для Операции в Полосах ниже 6 ГГц.

  2. Perahia, Элдэд и Роберт Стейси. Беспроводная связь следующего поколения LANS: 802.11n и 802.11ac. Издательство Кембриджского университета, 2013.