802.11ah пакетная симуляция коэффициента ошибок для 2x2 канал TGah

Этот пример показывает, как измерить пакетный коэффициент ошибок IEEE® 802.11ah™ S1G короткая ссылка преамбулы с помощью сквозной симуляции с исчезновением TGah внутренняя модель канала и аддитивный белый Гауссов шум.

Введение

В этом примере сквозная симуляция используется, чтобы определить пакетный коэффициент ошибок для 802.11ah [1] короткая ссылка преамбулы S1G с исчезающим каналом по выбору точек ОСШ. Поскольку каждый ОСШ указывает, что несколько пакетов передаются через канал, демодулируемый и восстановленный PSDUs. PSDUs сравниваются с переданными, чтобы определить количество пакетных ошибок и следовательно пакетного коэффициента ошибок. Обработка для каждого пакета получена в итоге в следующей схеме.

Этот пример моделирует S1G-формат-short без исправления нарушения кроме оценки канала и коррекции. Полученный сигнал синхронизируется с запуском пакета путем компенсации известной задержки и смещения выборки символа демодуляции OFDM по умолчанию. Никакая синхронизация частоты не выполняется. Для получения информации о том, как автоматически обнаружить и синхронизироваться с полученным сигналом, видит следующие примеры для 802.11n™ и 802.11ac™:

Этот пример также демонстрирует, как цикл parfor может использоваться вместо цикла for, когда симуляция каждого ОСШ указывает, чтобы ускорить симуляцию. parfor как часть Parallel Computing Toolbox™, выполняет обработку для каждого ОСШ параллельно, чтобы уменьшать общее время симуляции.

Настройка формы волны

Однопользовательское 802.11ah S1G короткая передача преамбулы моделируется в этом примере. Объект настройки формата S1G содержит формат определенная настройка передачи. Объект создается с помощью функции wlanS1GConfig. Свойства объекта содержат настройку. В этом примере объект сконфигурирован для пропускной способности канала на 2 МГц, короткой преамбулы, 2 антенн передачи, 2 пространственно-временных потоков, 256-байтовой полезной нагрузки, и 64-QAM rate-5/6 (MCS 7).

% Create S1G configuration object for single user S1G short preamble
% transmission with 2 transmit antennas and 2 space-time streams
cfgS1G = wlanS1GConfig;
cfgS1G.ChannelBandwidth = 'CBW2'; % 2 MHz channel bandwidth
cfgS1G.Preamble = 'Short';        % Short preamble
cfgS1G.NumTransmitAntennas = 2;   % 2 transmit antennas
cfgS1G.NumSpaceTimeStreams = 2;   % 2 space-time streams
cfgS1G.APEPLength = 256;          % APEP length in bytes
cfgS1G.MCS = 7;                   % 64-QAM rate-5/6

Настройка канала

В этом примере N-LOS TGah внутренняя модель канала используется с Моделью-B профиля задержки. Для Модели-B, когда расстояние между передатчиком и получателем больше, чем или равно 5 метрам, модель является NLOS. Это описано далее в wlanTGahChannel. 2x2 канал MIMO моделируется в этом примере поэтому 2, получают антенны, заданы.

% Create and configure the TGah channel
tgahChannel = wlanTGahChannel;
tgahChannel.DelayProfile = 'Model-B';
tgahChannel.NumTransmitAntennas = cfgS1G.NumTransmitAntennas;
tgahChannel.NumReceiveAntennas = 2;
tgahChannel.TransmitReceiveDistance = 5; % Distance in meters for NLOS
tgahChannel.ChannelBandwidth = cfgS1G.ChannelBandwidth;
tgahChannel.LargeScaleFadingEffect = 'None';

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

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

snr = 25:10:45;

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

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

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

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

maxNumErrors = 1e2;  % The maximum number of packet errors at an SNR point
maxNumPackets = 1e3; % Maximum number of packets at an SNR point

Установите остающиеся переменные для симуляции.

% Indices for accessing each field within the time-domain packet
fieldInd = wlanFieldIndices(cfgS1G);

% OFDM information
ofdmInfo = wlanS1GOFDMInfo('S1G-Data',cfgS1G);

% Set the sampling rate of the channel
tgahChannel.SampleRate = wlanSampleRate(cfgS1G);

if ~strcmp(packetFormat(cfgS1G),'S1G-Short')
    error('This example only supports the S1G-Short packet format');
end

Обработка точек ОСШ

Поскольку каждый ОСШ указывает, что много пакетов тестируются и пакетный вычисленный коэффициент ошибок. В каждой точке ОСШ:

  1. Несколько пакетов данных передаются через 2x2 канал TGah с AWGN.

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

  3. Поля S1G-LTF1 и S1G-LTF2N демодулируются и образовывают канал, оценка выполняется.

  4. S1G-поле-данных извлечено от синхронизируемой полученной формы волны и демодулируемого OFDM.

  5. Поднесущие переноса данных компенсируются с помощью оценок канала.

  6. PSDU восстанавливается с помощью компенсируемых поднесущих данных, шумовой оценки отклонения и информации о состоянии канала (CSI).

  7. Восстановленный PSDU каждого пакета сравнивается с переданными, чтобы определить количество пакетных ошибок и следовательно пакетного коэффициента ошибок.

Цикл parfor может использоваться, чтобы параллелизировать обработку точек ОСШ, поэтому для каждой точки ОСШ, что канал AWGN создается и конфигурируется с comm.AWGNChannel.

packetErrorRate = zeros(numel(snr),1);
%parfor i = 1:numel(snr) % Use 'parfor' to speed up the simulation
for i = 1:numel(snr) % Use 'for' to debug the simulation
    % Set random substream index per iteration to ensure that each
    % iteration uses a repeatable set of random numbers
    stream = RandStream('combRecursive','Seed',0);
    stream.Substream = i;
    RandStream.setGlobalStream(stream);

    % Create an instance of the AWGN channel per SNR point simulated
    awgnChannel = comm.AWGNChannel;
    awgnChannel.NoiseMethod = 'Signal to noise ratio (SNR)';
    % Normalization
    awgnChannel.SignalPower = 1/tgahChannel.NumReceiveAntennas;
    % Account for energy in nulls
    awgnChannel.SNR = snr(i)-10*log10(ofdmInfo.FFTLength/ofdmInfo.NumTones);

    % Loop to simulate multiple packets
    numPacketErrors = 0;
    numPkt = 1; % Index of packet transmitted
    while numPacketErrors<=maxNumErrors && numPkt<=maxNumPackets
        % Generate a packet for 802.11ah short preamble
        txPSDU = randi([0 1],cfgS1G.PSDULength*8,1);
        txWaveform = wlanWaveformGenerator(txPSDU,cfgS1G);

        % Add trailing zeros to allow for channel delay
        tx = [txWaveform; zeros(50,cfgS1G.NumTransmitAntennas)];

        % Pass through fading indoor TGah channel
        reset(tgahChannel); % Reset channel for different realization
        rx = tgahChannel(tx);

        % Add noise
        rx = awgnChannel(rx);

        % Synchronize
        % The received signal is synchronized to the start of the packet by
        % compensating for a known delay and the default OFDM demodulation
        % symbol sampling offset.
        delay = 4;
        rxSync = rx(delay+1:end,:);

        % LTF demodulation and channel estimation
        % Demodulate S1G-LTF1
        rxLTF1 = rxSync(fieldInd.S1GLTF1(1):fieldInd.S1GLTF1(2),:);
        demodLTF1 = wlanS1GDemodulate(rxLTF1,'S1G-LTF1',cfgS1G);

        % If required, demodulate S1G-LTF2N, and perform channel estimation
        if cfgS1G.NumSpaceTimeStreams>1
            % Use S1G-LTF1 and S1G-LTF2N for channel estimation
            rxLTF2N = rxSync(fieldInd.S1GLTF2N(1):fieldInd.S1GLTF2N(2),:);
            demodLTF2N = wlanS1GDemodulate(rxLTF2N,'S1G-LTF2N',cfgS1G);
            chanEst = s1gLTFChannelEstimate([demodLTF1 demodLTF2N],cfgS1G);
        else
            % Use only S1G-LTF1 for channel estimation
            chanEst = s1gLTFChannelEstimate(demodLTF1,cfgS1G);
        end

        % Noise variance estimate from S1G-LTF1 demodulated symbols
        noiseVarEst = helperNoiseEstimate(demodLTF1);

        % Extract S1G-Data field
        rxData = rxSync(fieldInd.S1GData(1):fieldInd.S1GData(2),:);

        % OFDM demodulation
        demodSym = wlanS1GDemodulate(rxData,'S1G-Data',cfgS1G);

        % Extract data subcarriers from demodulated symbols and channel
        % estimate
        demodDataSym = demodSym(ofdmInfo.DataIndices,:,:);
        chanEstData = chanEst(ofdmInfo.DataIndices,:,:);

        % MMSE frequency domain equalization
        [eqDataSym,csi] = helperSymbolEqualize(demodDataSym,chanEstData,noiseVarEst);

        % Recover PSDU bits
        rxPSDU = s1gDataBitRecover(eqDataSym,noiseVarEst,csi,cfgS1G);

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

    % Compute PER for this SNR point
    packetErrorRate(i) = numPacketErrors/(numPkt-1);
    disp(['SNR ' num2str(snr(i))...
          ' completed after ' num2str(numPkt-1) ' packets,'...
          ' PER: ' num2str(packetErrorRate(i))]);
end
SNR 25 completed after 123 packets, PER: 0.82114
SNR 35 completed after 922 packets, PER: 0.10954
SNR 45 completed after 1000 packets, PER: 0.013

Постройте пакетный коэффициент ошибок по сравнению с результатами ОСШ

figure;
semilogy(snr,packetErrorRate,'-ob');
grid on;
xlabel('SNR (dB)');
ylabel('PER');
title(['802.11ah ' cfgS1G.Preamble ', ' num2str(cfgS1G.ChannelBandwidth(4:end)) ...
    'MHz, MCS' num2str(cfgS1G.MCS) ', ' ...
    num2str(tgahChannel.NumTransmitAntennas) 'x' num2str(tgahChannel.NumReceiveAntennas) ...
    ' TGah Channel ' num2str(tgahChannel.DelayProfile)]);

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

Количеством пакетов, протестированных в каждой точке ОСШ, управляют два параметра: maxNumErrors и maxNumPackets. Для значимых результатов эти значения должны быть больше, чем представленные в этом примере. Как пример, фигура ниже была создана путем выполнения более длительной симуляции с maxNumErrors = 1e3 и maxNumPackets = 1e4 и областью значений ОСШ snr = 20:8:60.

Приложение

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

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

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

Для просмотра документации необходимо авторизоваться на сайте