Включайте потерю на пути в симуляции NR уровня ссылки

В этом примере показано, как включать потерю на пути, передают степень, и получить шум в 5G симуляции уровня ссылки NR, чтобы изучить удар этих параметров в эффективности ссылки 5G.

Введение

Симуляции уровня ссылки измеряют частоту появления ошибочных блоков и пропускную способность через область значений средних значений отношения сигнал-шум (SNR) в получить стороне. В этом примере показано, как вычислить ОСШ от параметров, таких как потеря на пути, передайте степень, и входной шум приемника и шумовую фигуру. Можно использовать этот ОСШ в Пропускной способности NR PDSCH и примерах Пропускной способности NR PUSCH, чтобы изучить эффект тех параметров в ссылке 5G. В этом примере вы можете:

  1. Сконфигурируйте передатчик, приемник, несущую и канал распространения.

  2. Вычислите потерю на пути и шумовую мощность.

  3. Вычислите ОСШ в приемнике.

  4. Проверьте вычисление ОСШ.

Сконфигурируйте передатчик, приемник и несущую

Этот раздел конфигурирует несущую, передатчик и приемник с этими характеристиками:

  • Модель передатчика или базовой станции (BS) включает среднюю степень, поставленную всем антеннам и высоте антенны. Можно задать среднюю степень передачи полностью выделенной сетки ресурса, но эта степень не включает усиления антенного элемента. Поэтому фактическая средняя степень передала шкалы с выделением сетки ресурса и усилениями антенного элемента, но эта степень не масштабируется с количеством передающих антенн.

  • Модель приемника или оборудования пользователя (UE) включает свою шумовую фигуру и температуру антенны и высоту. Шумовая фигура моделирует приемник внутренний шум, и температура антенны моделирует входной шум. Этот приемник задает шум на антенный элемент.

  • Можно задать расстояние между BS и UE как вектор, чтобы вычислить значения ОСШ на заданных расстояниях.

% Configure the carrier.
simParameters.Carrier = nrCarrierConfig;
simParameters.Carrier.NSizeGrid = 51;            % Bandwidth in number of resource blocks (51 RBs at 30 kHz SCS for 20 MHz BW)
simParameters.Carrier.SubcarrierSpacing = 30;    % 15, 30, 60, 120, 240 (kHz)
simParameters.Carrier.CyclicPrefix = 'Normal';   % 'Normal' or 'Extended' (Extended CP is relevant for 60 kHz SCS only)

% Configure the carrier frequency, transmitter (BS), receiver (UE), and
% distance between the BS and UE. Specify this distance as a vector for
% multiple SNR points.
simParameters.CarrierFrequency = 3.5e9;   % Carrier frequency (Hz)
simParameters.TxHeight = 25;              % Height of the BS antenna (m)
simParameters.TxPower = 40;               % Power delivered to all antennas of the BS on a fully allocated grid (dBm)
simParameters.RxHeight = 1.5;             % Height of UE antenna (m)
simParameters.RxNoiseFigure = 6;          % Noise figure of the UE (dB)
simParameters.RxAntTemperature = 290;     % Antenna temperature of the UE (K)
simParameters.TxRxDistance = [5e2 9e2];   % Distance between the BS and UE (m)

Сконфигурируйте канал распространения

Модель канала распространения включает потерю на пути и небольшое исчезновение. Потеря на пути зависит от расстояния между BS и UE, несущей частотой и другими параметрами, которые характерны для каждого сценария. Исчезающие каналы могут быть каналы коснувшейся линии задержки (TDL) или кластеризованная линия задержки (CDL). В этом примере исчезающая настройка канала определяет существование угла обзора (LOS) между передатчиком (BS) и приемником (UE), который требуется для вычисления потери на пути. Задержите профили A, B, и C конфигурируют каналы не-LOS, и задержка профилирует D, и E конфигурируют каналы LOS.

Сконфигурируйте потерю на пути

Сконфигурируйте сценарий и другие параметры потери на пути модели потери на пути 5G, как задано в Разделе TR 38.901 7.4. В качестве альтернативы задайте модель потери на пути свободного пространства. Модель потери на пути определяет среднее затухание переданного сигнала.

simParameters.PathLossModel = '5G-NR';        % '5G-NR' or 'fspl'
simParameters.PathLoss = nrPathLossConfig;
simParameters.PathLoss.Scenario = 'UMa';      % Urban macrocell
simParameters.PathLoss.EnvironmentHeight = 1; % Average height of the environment in UMa/UMi

Сконфигурируйте исчезающий канал и LOS

Сконфигурируйте CDL или TDL, исчезающий канал, как задано в TR 38.901. Исчезающие модели канала краткосрочные изменения ответа канала в зависимости от времени и частоты.

simParameters.DelayProfile = 'TDL-A'; % A, B, and C profiles are NLOS channels. D and E profiles are LOS channels.

if contains(simParameters.DelayProfile,'CDL','IgnoreCase',true)
    channel = nrCDLChannel;
    channel.DelayProfile = simParameters.DelayProfile;
    chInfo = info(channel);
    kFactor = chInfo.KFactorFirstCluster; % dB
else % TDL
    channel = nrTDLChannel;
    channel.DelayProfile = simParameters.DelayProfile;
    chInfo = info(channel);
    kFactor = chInfo.KFactorFirstTap; % dB
end

% Determine LOS between Tx and Rx based on Rician factor K.
simParameters.LOS = kFactor>-Inf;

% Determine the sample rate and FFT size that are required for this carrier.
waveformInfo = nrOFDMInfo(simParameters.Carrier);

% Calculate the maximum delay of the fading channel.
channel.SampleRate = waveformInfo.SampleRate;
chInfo = info(channel);
maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate)) + chInfo.ChannelFilterDelay;

Вычислите потерю на пути распространения

Этот раздел вычисляет потерю на пути между передатчиком (BS) и приемником (UE).

% Calculate the path loss.
if contains(simParameters.PathLossModel,'5G','IgnoreCase',true)
    txPosition = [0;0; simParameters.TxHeight];
    dtr = simParameters.TxRxDistance;
    rxPosition = [dtr; zeros(size(dtr)); simParameters.RxHeight*ones(size(dtr))];
    pathLoss = nrPathLoss(simParameters.PathLoss,simParameters.CarrierFrequency,simParameters.LOS,txPosition,rxPosition);
else % Free-space path loss
    lambda = physconst('LightSpeed')/simParameters.CarrierFrequency;
    pathLoss = fspl(simParameters.TxRxDistance,lambda);
end

Вычислите шум антенны и приемника

Этот раздел вычисляет эквивалентную шумовую температуру, и амплитуда на получают антенный элемент от входной температуры шума и приемника внутренний шум. Шумовая амплитуда на получает антенну,

N0=12kBTe

где k Постоянная Больцмана (1.3807×10-23JK-1). B полоса пропускания, которая равна частота дискретизации формы волны. Эквивалентная шумовая температура Te

Te=TAnt+290(NF-1),

TAnt входная температура шума и NF фигура шума приемника в линейных модулях.

kBoltz = physconst('Boltzmann');
NF = 10^(simParameters.RxNoiseFigure/10);
Teq = simParameters.RxAntTemperature + 290*(NF-1); % K
N0 = sqrt(kBoltz*waveformInfo.SampleRate*Teq/2.0);

Вычислите отношение сигнал-шум (SNR)

Этот раздел использует параметры конфигурации, чтобы вычислить ОСШ на элемент ресурса (RE), следующий из степени передачи, получить шум, полосу пропускания и потерю на пути. Среднее значение получает сигнал на RE, и получить антенна и шумовая мощность на RE

SPRES=PTxL×NFFT212Ngridsize и

NPREN=2N02NFFT.

PTx общая переданная степень во входе передающей антенны массивов. NFFT количество точек быстрого преобразования Фурье (FFT), используемых для модуляции OFDM. Ngridsize размер сетки OFDM в блоках ресурса. L потеря на пути. 2N0 среднеквадратичное (RMS) значение шума на, получают антенну. Средний ОСШ на RE и получает антенну,

(SN)dB=10log10(PTx)-10log10(L)+10log10(NFFT12Ngridsize)-10log10(2N02).

Это значения ОСШ, которые необходимо использовать в Пропускной способности NR PDSCH и примерах Пропускной способности NR PUSCH.

fftOccupancy = 12*simParameters.Carrier.NSizeGrid/waveformInfo.Nfft;
simParameters.SNRIn = (simParameters.TxPower-30) - pathLoss - 10*log10(fftOccupancy) - 10*log10(2*N0^2);
disp(simParameters.SNRIn)
    5.4206   -4.5425

Составьте таблицу, чтобы отобразить ОСШ на каждом расстоянии Tx-Rx

SNRInc = mat2cell(simParameters.SNRIn(:),length(pathLoss),1);
tSNRIn = table(simParameters.TxRxDistance(:),SNRInc{:},'VariableNames',{'Distance Tx-Rx (m)','SNR (dB)'});
disp(tSNRIn)
    Distance Tx-Rx (m)    SNR (dB)
    __________________    ________

           500             5.4206 
           900            -4.5425 

Для получения дополнительной информации о том, как симуляции уровня ссылки 5G Toolbox™ задают отношение сигнал-шум (SNR), видят Определение ОСШ, Используемое в Симуляциях Ссылки.

Приложение: проверьте значения ОСШ

Этот раздел помогает вам проверить полученные значения ОСШ и рассмотреть дополнительные детали отношения между потерей на пути, передать степень и получить шум и получившийся ОСШ. С этой целью этот раздел симулирует передачу сигнала CP-OFDM с заданной степенью передачи через канал распространения, и измерьте получившийся ОСШ в приемнике. Вы не должны реализовывать эту передачу в примерах 5G Toolbox. Вместо этого можно использовать выражение ОСШ или значения, полученные в предыдущем разделе этого примера.

Для измерения ОСШ приемник имеет знание канала и шума. Это измерение ОСШ использует независимую реализацию канала (исчезновение блока), чтобы получить значимые результаты с минимальным количеством требуемых пазов передачи.

Установите продолжительность симуляции в терминах количества систем координат на 10 мс.

NFrames = 20;
NSlots = NFrames*simParameters.Carrier.SlotsPerFrame;
nSNRPoints = length(pathLoss);                          % Number of SNR points

% Initialize measurements and create auxiliary variables.
nTxAnt = chInfo.NumTransmitAntennas;
nRxAnt = chInfo.NumReceiveAntennas;
[powSignalRE,powSignal,powNoiseRE,powNoise] = deal(zeros(nSNRPoints,nRxAnt,NSlots));
pgains = zeros(length(chInfo.PathDelays),nTxAnt,nRxAnt,nSNRPoints,NSlots);
scs = simParameters.Carrier.SubcarrierSpacing;
nSizeGrid = simParameters.Carrier.NSizeGrid;
nfft = waveformInfo.Nfft;

% Reset the random generator for reproducibility.
rng('default');

% Transmit a CP-OFDM waveform through the channel and measure the SNR for
% each distance between Tx and Rx (path loss values).
for pl = 1:length(pathLoss)
    carrier = simParameters.Carrier;
    for slot = 0:NSlots-1
        slotIdx = slot+1;
        carrier.NSlot = slot;

        % Change random seed to generate an independent realization of the
        % channel in every time slot (block fading).
        release(channel);
        channel.Seed = slot; 
        
        % Create the OFDM resource grid and allocate random QPSK symbols.
        txgrid = nrResourceGrid(carrier,nTxAnt);
        txgrid(:) = nrSymbolModulate(randi([0 1],numel(txgrid)*2,1),'QPSK');
        
        % Perform CP-OFDM modulation.
        txWaveform = nrOFDMModulate(txgrid,scs,slot);

        % Calculate the amplitude of the transmitted signal. The FFT and
        % resource grid size scaling normalize the signal power. The
        % transmitter distributes the power across all antennas equally,
        % simulating the effect of unit norm beamformer.
        signalAmp = db2mag(simParameters.TxPower-30)*sqrt(nfft^2/(nSizeGrid*12*nTxAnt));
        txWaveform = signalAmp*txWaveform;
        
        % Pad the signal with zeros to ensure that a full slot is available
        % to the receiver after synchronization.
        txWaveform = [txWaveform; zeros(maxChDelay, size(txWaveform,2))]; %#ok<AGROW>
        
        % Pass the signal through fading channel.
        [rxWaveform,pathGains,sampleTimes] = channel(txWaveform);
        pgains(:,:,:,pl,slotIdx) = pathGains(1,:,:,:);

        % Apply path loss to the signal.
        rxWaveform = rxWaveform*db2mag(-pathLoss(pl));
        
        % Generate AWGN.
        noise = N0*complex(randn(size(rxWaveform)),randn(size(rxWaveform)));
        
        % Perform perfect synchronization.
        pathFilters = getPathFilters(channel); % Path filters for perfect timing estimation
        offset = nrPerfectTimingEstimate(pathGains,pathFilters);
        rxWaveform = rxWaveform(1+offset:end,:);
        noise = noise(1+offset:end,:);

        % Perform CP-OFDM demodulation of the received signal and noise.
        ngrid = nrOFDMDemodulate(carrier,noise);
        rxgrid = nrOFDMDemodulate(carrier,rxWaveform);

        % Measure the RE and overall power of the received signal and noise.
        powSignalRE(pl,:,slotIdx) = rms(rxgrid,[1 2]).^2/nfft^2;
        powSignal(pl,:,slotIdx) = powSignalRE(pl,:,slotIdx)*nSizeGrid*12;
        
        powNoiseRE(pl,:,slotIdx) = rms(ngrid,[1 2]).^2/nfft^2;
        powNoise(pl,:,slotIdx) = powNoiseRE(pl,:,slotIdx)*nfft;
    end
end

Можно вычислить полный ОСШ и ОСШ на RE при помощи полученной полученной и шумовой мощности сигнала. Различие между полным ОСШ и ОСШ на RE равно отношению заполнения спектра БПФ 12Ngridsize/NFFT, который следует из распространения шумовой энергии через все интервалы БПФ, включая те интервалы вне промежутка частоты сетки ресурса.

fprintf('The resource grid uses %.1f %% of the FFT size, introducing a %.1f dB SNR gain.\n', fftOccupancy*100, -10*log10(fftOccupancy))
The resource grid uses 59.8 % of the FFT size, introducing a 2.2 dB SNR gain.
% Correct CDL/TDL average gain.
Gf = permute(mean(sum(rms(pgains,5).^2,1),2),[4 3 1 2]); % Correction factor

% Calculate overall SNR and SNR per RE.
SNRo  = 10*log10(mean(powSignal,3)./mean(powNoise,3)) - 10*log10(Gf); 
SNRre = 10*log10(mean(powSignalRE,3)./mean(powNoiseRE,3)) - 10*log10(Gf);

% Create a table to display the results.
SNRrec = mat2cell(SNRre,nSNRPoints,ones(nRxAnt,1));
tSNRre = table(simParameters.TxRxDistance(:),SNRrec{:},'VariableNames',["Distance (m)", "SNR RxAnt"+(1:nRxAnt)]);
disp(tSNRre)
    Distance (m)    SNR RxAnt1    SNR RxAnt2
    ____________    __________    __________

        500           5.4398        5.4816  
        900          -4.5262       -4.4795  

В дополнение к небольшому исчезновению CDL и каналы TDL моделируют другие аспекты, такие как поляризация антенны, усиление антенны, корреляция антенны и нормализация количеством полученных антенн, которые влияют на среднюю потерю распространения. Поправочный коэффициент Gf обратился к ОСШ, компенсирует эту среднюю потерю распространения, введенную CDL или каналом TDL, и совпадает с измерением определению ОСШ в симуляциях уровня ссылки 5G Toolbox.

Смотрите также

Функции

Объекты

Похожие темы