В этом примере показано, как симуляции уровня ссылки 5G Toolbox™ задают отношение сигнал-шум (SNR).
Примеры ссылки 5G Toolbox™ (Пропускная способность NR PDSCH и Пропускная способность NR PUSCH) вводят AWGN полученному сигналу во временном интервале после исчезающего канала и перед демодуляцией OFDM.
Примеры задают ОСШ, когда средний ОСШ на элемент ресурса (RE) на получает антенну. REs заданы в сетке ресурса (то есть, в частотном диапазоне). Чтобы достигнуть желаемого ОСШ, примеры вводят эквивалентный уровень шума во временном интервале.
ОСШ задан как
.
и средняя степень сигнала на RE на, получают антенну, и средняя шумовая мощность на RE на получают антенну, соответственно. моделирует AWGN, который добавляется к сигналу.
Для сигнала с дискретным преобразованием Фурье (ДПФ) , Состояния теоремы Парсевэла
.
длина БПФ. Разделите уравнение на получить среднюю степень сигнала
.
В 5G сигнал интереса не использует все интервалы БПФ (или REs) из-за защитных полос или нулевого дополнения. Кроме того, выделение сигнала может занять только часть доступной сетки. Если сигнал использует только интервалы (или REs) БПФ, степень сигнала
.
количество ненулевой степени REs на символ OFDM.
Степень сигнала на RE
.
Шумовая мощность на RE
.
Поскольку шум добавляется во временном интервале, шум занимает все интервалы, не только выделенный REs. Поэтому шумовая мощность, , разделен на и нет .
Рассматривая эти определения, ОСШ становится
.
Примеры ссылки 5G Toolbox принимают это , где количество, получают антенны. Это предположение означает, что полная мощность приемника по всем антеннам является той.
Шумовая мощность во входе демодулятора OFDM
.
Сгенерировать шум со степенью , масштабируйте комплексные случайные выборки .
Фактор 2 в этом уравнении составляет сложный характер шумовых выборок.
Большинство примеров 5G Toolbox, которые моделируют ссылку, использует этот масштабный коэффициент. Этот масштабный коэффициент принимает, что корень, среднеквадратический из значений RE сигнала, . Это предположение не всегда применяется при использовании канала распространения.
Канал распространения вводит много эффектов, таких как корреляция, поляризация антенны и усиление антенного элемента. Эти эффекты канала могут повлиять на степень сигнала в приемнике. Эти эффекты делают оценку ОСШ в приемнике и подготовке симуляцией, чтобы смоделировать определенный трудный ОСШ. Чтобы преодолеть эту трудность, определение ОСШ в примерах ссылки не рассматривает ни одного из эффектов канала. Определение ОСШ совпадает с ОСШ, который измеряется без исчезающего канала и когда .
Когда вы используете канал распространения (nrTDLChannel
или nrCDLChannel
объект), учтите эти факторы.
Установка NormalizeChannelOutputs
свойство канала возражает против true
нормирует канал, выходные параметры количеством получают антенны, таким образом что , как принято в деривации.
Установка NormalizePathGains
свойство канала возражает против true
устанавливает общую степень средних усилений пути к 0 дБ.
Определение ОСШ не рассматривает ни одного из эффектов канала.
Этот раздел проверяет уравнение, которое выведено в предыдущем разделе. Поскольку введенное определение ОСШ не учитывает ни одного из эффектов канала, эта верификация не включает канал распространения.
Этот рисунок показывает настройку, чтобы измерить ОСШ на RE на антенну.
Эта настройка реализует эти шаги.
Сгенерируйте сетку ресурса с физическим нисходящим каналом совместно использованный канал (PDSCH) символы.
OFDM-модулируйте сетку.
Сгенерируйте AWGN.
OFDM-демодулируйте полученный сигнал и шум отдельно.
Измерьте степень сигнала и шума на RE на антенну.
Вычислите и отобразите ОСШ.
Задайте желаемый ОСШ в дБ.
SNRdB = 0; rng("default") % Set default random number generator for repeatability
Определите номер передающих и приемных антенн. Поскольку никакой канал не существует, примите, что количество передающих и приемных антенн является тем же самым.
nTxAnts = 2; nRxAnts = nTxAnts;
Задайте параметры несущей.
carrier = nrCarrierConfig; carrier.NSizeGrid = 52; % Grid size in resource blocks carrier.SubcarrierSpacing = 15; % Subcarrier spacing waveformInfo = nrOFDMInfo(carrier); % Waveform information pdsch = nrPDSCHConfig; pdsch.Modulation = "16QAM"; pdsch.PRBSet = 0:(carrier.NSizeGrid-1); % PDSCH allocation
Создайте норму один вектор перед кодированием, который нормирован на количество слоев.
w = (1/sqrt(pdsch.NumLayers))*ones(pdsch.NumLayers,nTxAnts);
Чтобы достигнуть желаемого ОСШ, вычислите шумовой масштабный коэффициент: .
SNR = 10^(SNRdB/10); N0 = 1/sqrt(2.0*nRxAnts*double(waveformInfo.Nfft)*SNR);
Сгенерируйте предварительно закодированные символы PDSCH.
[pdschIndices,pdschInfo] = nrPDSCHIndices(carrier,pdsch); pdschBits = randi([0 1],pdschInfo.G,1); pdschSymbols = nrPDSCH(carrier,pdsch,pdschBits); pdschSymbolsPrecoded = pdschSymbols*w;
Создайте сетку ресурса и сопоставьте предварительно закодированные символы PDSCH с сеткой ресурса.
pdschGrid = nrResourceGrid(carrier,nTxAnts); [~,pdschAntIndices] = nrExtractResources(pdschIndices,pdschGrid); pdschGrid(pdschAntIndices) = pdschSymbolsPrecoded;
OFDM-модулировать.
txWaveform = nrOFDMModulate(carrier,pdschGrid);
Примите, что никакой канал не существует. Поскольку определение ОСШ принимает это , нормируйте полученный сигнал на количество, получают антенны.
rxWaveform = txWaveform/sqrt(nRxAnts);
Сгенерируйте AWGN.
rxNoise = N0*complex(randn(size(rxWaveform)),randn(size(rxWaveform)));
OFDM-демодулируйте шум и предупредите отдельно, чтобы измерить степень полученного сигнала и шума независимо. Извлеките символы PDSCH из полученной сетки.
% OFDM demodulation rxSignalGrid = nrOFDMDemodulate(carrier,rxWaveform); rxNoiseGrid = nrOFDMDemodulate(carrier,rxNoise); % PDSCH symbols extraction rxPDSCHSymbols = rxSignalGrid(pdschAntIndices);
Измерьте принимаемую мощность сигнала на RE, , и шумовая мощность на RE, .
Проверьте, что измеренные значения ОСШ аппроксимируют заданный параметр ОСШ.
Sre = (1/waveformInfo.Nfft.^2)*rms(rxPDSCHSymbols).^2; Nre = (1/waveformInfo.Nfft)*rms(rxNoise).^2; for n=1:nRxAnts disp("Received signal power per RE antenna " + string(n) + " = " + string(pow2db(Sre(n))+30) + " dBm"); disp("Received noise power per RE antenna " + string(n) + " = " + string(pow2db(Nre(n))+30) + " dBm"); disp("SNR (antenna " + string(n) + ") = " + string(pow2db(Sre(n)/Nre(n))) + " dB"); end
Received signal power per RE antenna 1 = -33.186 dBm
Received noise power per RE antenna 1 = -33.2432 dBm
SNR (antenna 1) = 0.057195 dB
Received signal power per RE antenna 2 = -33.186 dBm
Received noise power per RE antenna 2 = -33.2371 dBm
SNR (antenna 2) = 0.051146 dB