Нисходящий канал NB-IoT генерация сигналов внутриполосной и защитной полосы и анализ

В этом примере показано, как сгенерировать узкополосный Интернет вещей форма волны нисходящего канала (NB-IoT) для режимов работы внутриполосной и защитной полосы на несущей LTE при помощи LTE Toolbox™. Пример также показывает анализ качества восстановленного NB-IoT физический нисходящий канал совместно использованный канал (NPDSCH) посредством измерений величины вектора ошибок (EVM).

Введение

Поддерживать максимальную гибкость развертывания NB-IoT, 3GPP задает эти три режима работы NB-IoT:

  • Автономный: несущая NB-IoT развертывается вне спектра LTE, e.g., спектр, используемый для GSM или спутниковой связи

  • Защитная полоса: несущая NB-IoT, развернутая в защитной полосе между двумя несущими LTE

  • Внутриполосный: несущая NB-IoT, развернутая в блоках ресурса несущей LTE

Этот пример фокусируется на режимах внутриполосной и защитной полосы. Для получения дополнительной информации о генерации автономной формы волны нисходящего канала NB-IoT смотрите пример Генерации сигналов Нисходящего канала NB-IoT. Этот рисунок показывает эскиз режимов внутриполосной и защитной полосы для несущей LTE на 5 МГц.

Внутриполосный режим может быть далее сгруппирован в зависимости от физической идентичности ячейки (PCI), используемой, Внутриполосной-SamePCI и Внутриполосной-DifferentPCI. Если Внутриполосный-SamePCI, идентичность ячейки физического уровня и PCI являются тем же самым, и оборудование пользователя (UE) может сделать предположения о портах и образовать канал от сигналов LTE. Ведущий блок информации NB-IoT (MIB-NB) указывает на режим работы. Сеть может использовать радио-информацию об управлении ресурсами, чтобы выделить несущую непривязки UE, действующему в несущей привязки, видеть Раздел 6.7.3.2 из TS 36.331, и разделяет 7.1.2.5 и 7.2.1.1 в [5].

Таблица 16.8-1 TS 36.213 ограничивает позволенные индексы физического блока ресурса (PRB) для внутриполосного режима несущей привязки NB-IoT к этим значениям. Внутриполосный режим NB-IoT не поддерживается на несущей LTE на 1,4 МГц. Для режима защитной полосы NB-IoT позволенные индексы PRB зависят от размера защитной полосы несущей LTE. Режим Guardband NB-IoT не поддерживается на несущей LTE на 3 МГц и на 1,4 МГц. Эта таблица показывает позволенные индексы PRB и для режимов внутриполосной и для защитной полосы.

prbTable = nbAllowedPRB()
prbTable=6×3 table
       LTE Bandwidth             Allowed PRB indices for NB-IoT in-band mode          Allowed PRB indices for NB-IoT guardband mode
    ___________________    _______________________________________________________    _____________________________________________

    "1.4 MHz (  6 RBs)"    {1x0 double                                           }       {1x0 double                          }    
    "  3 MHz ( 15 RBs)"    {[                                               2 12]}       {1x0 double                          }    
    "  5 MHz ( 25 RBs)"    {[                                          2 7 17 22]}       {[                             -1 25]}    
    " 10 MHz ( 50 RBs)"    {[                              4 9 14 19 30 35 40 45]}       {[                       -2 -1 50 51]}    
    " 15 MHz ( 75 RBs)"    {[            2 7 12 17 22 27 32 42 47 52 57 62 67 72]}       {[           -4 -3 -2 -1 75 76 77 78]}    
    " 20 MHz (100 RBs)"    {[4 9 14 19 24 29 34 39 44 55 60 65 70 75 80 85 90 95]}       {[-5 -4 -3 -2 -1 100 101 102 103 104]}    

Пример показывает как:

  • Сгенерируйте форму волны для NB-IoT внутриполосный режим работы

  • Получите исходную форму волны NB-IoT из полученной объединенной формы волны, содержащей и NB-IoT и формы волны LTE

  • Измерьте NPDSCH EVM, чтобы проверить качество восстановленной формы волны NB-IoT

Эти рисунки показывают шаги, чтобы сгенерировать форму волны и шаги обработки в приемнике, чтобы вычислить NPDSCH EVM. Коррекция частоты в приемнике вводит смещение фазы к каждому символу OFDM. Поэтому пример применяет компенсацию фазы символа сетке ресурса NB-IoT прежде, чем объединить его с сеткой LTE.

Настройка симуляции

Пример задает внутриполосный режим работы несущей привязки NB-IoT на несущей LTE на 5 МГц. Можно использовать nbPRB параметр, чтобы изменить индекс LTE PRB для выделения NB-IoT. Чтобы изучить эффект интерференции LTE на NPDSCH EVM, запустите пример снова без интерференции LTE установкой lteDisabled к true.

operationMode = "Inband-SamePCI"; % NB-IoT operation mode
ltecfg = struct (); % LTE configuration
ltecfg.TotSubframes = 10; % Number of subframes
ltecfg.NDLRB = 25; % Number of downlink resource blocks
nbPRB = 7; % PRB in which the NB-IoT is deployed (0-based)
lteDisabled = false; % Set to true to disable the LTE component
nbPowerBoost = 6; % NB-IoT power boost in dB

% Verify that the PRB chosen for the NB-IoT operation mode in the LTE carrier is allowed.
verifyNBPRB (nbPRB, ltecfg.NDLRB, operationMode);

Настройка нисходящего канала NB-IoT и генерация сетки ресурса

Сконфигурируйте генератор формы волны нисходящего канала NB-IoT. Пример использует NBIoTDownlinkWaveformGenerator класс, чтобы сгенерировать сетку ресурса NB-IoT. Смотрите пример Генерации сигналов Нисходящего канала NB-IoT для получения дополнительной информации о NBIoTDownlinkWaveformGenerator.

ngen = NBIoTDownlinkWaveformGenerator;
ngen.Config.CellRefP = 1;
ngen.Config.NNCellID = 0;
ngen.Config.NFrame = 0;
ngen.Config.TotSubframes = ltecfg.TotSubframes;
ngen.Config.OperationMode = operationMode;
ngen.Config.NPDSCH.StartSubframe = 2;
ngen.Config.NPDSCH.NRep = 1;
ngen.Config.Windowing = 3; % Set Windowing to 3, as shown in Table E.5.1-1a of TS 36.104

Отобразите сетку ресурса.

figure;
displayResourceGrid(ngen);

Figure contains an axes object. The axes object with title NB-IoT Downlink RE Grid (Anchor / Inband-SamePCI / Port 2000) contains 8 objects of type line, surface. These objects represent NRS, NPSS, NSSS, NPBCH, SIB1-NB, NPDCCH, NPDSCH.

Сгенерируйте форму волны нисходящего канала NB-IoT и сетку ресурса.

[nbWaveform,nbGrid,nbInfo] = generateWaveform(ngen);
nbInfo
nbInfo = struct with fields:
            SamplingRate: 1920000
                    Nfft: 128
               Windowing: 3
     CyclicPrefixLengths: [10 9 9 9 9 9 9 10 9 9 9 9 9 9]
    SubframeChannelTypes: ["NPBCH"    "NPDCCH"    "NPDSCH"    ...    ]

Настройка нисходящего канала LTE и генерация сетки ресурса

Сконфигурируйте несущую LTE. Если вы выбрали внутриполосный режим работы, пример оставляет nbPRB Индекс PRB, пустой в настройке LTE.

nbPRB = double(nbPRB);
ltecfg.PDSCH.PRBSet = (0:ltecfg.NDLRB-1)'; % Full PRB allocation for LTE
if contains(ngen.Config.OperationMode,'Inband')
    ltecfg.PDSCH.PRBSet(nbPRB+1) = []; % Leave nbPRB empty for in-band NB-IoT
end

Сгенерируйте сетку ресурса LTE. Пример использует lteRMCDLTool сгенерировать широкополосную сетку ресурса.

[~,lteGrid,lteInfo] = lteRMCDLTool(ltecfg,[1 0 0 1]);

Генерация сигналов

Пример комбинирует LTE и сетки ресурса NB-IoT прежде, чем сгенерировать форму волны. hNBInbandGuardbandCombineGrid функция применяет pre-OFDM компенсацию фазы символа сетке NB-IoT, чтобы иметь дело с искажением, которое приемник вводит при сдвиге принятой формы волны, чтобы принести NB-IoT в основной полосе.

Сгенерируйте объединенную сетку ресурса и возместите частоту NB-IoT.

% Create the parameter structure needed to generate the combined grid
combGridParams = struct();
combGridParams.OperationMode = ngen.Config.OperationMode;
combGridParams.NBPRB = nbPRB;
combGridParams.OFDMInfo = nbInfo;
combGridParams.LTEDisabled = lteDisabled;
[combGrid,offset] = hNBInbandGuardbandCombinedGrid(combGridParams,lteGrid,nbGrid*db2mag(nbPowerBoost));

Сгенерируйте форму волны.

OSR = lteInfo.SamplingRate/nbInfo.SamplingRate; % Oversampling ratio for NB-IoT
wavecfg.Windowing = ngen.Config.Windowing*OSR; % Use the same windowing as the NB-IoT waveform
txWaveform = lteOFDMModulate(wavecfg,combGrid);

Постройте спектр мощности переданной формы волны.

txPlot = hPlotSpectrum(txWaveform,lteInfo.SamplingRate,...
    'Transmitted Waveform Power Spectrum',...
    {'Transmitted waveform'});

Figure Spectrum Analyzer contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object with title Transmitted Waveform Power Spectrum contains an object of type line. This object represents Transmitted waveform.

Синхронизация NB-IoT и фильтрация

Этот раздел выполняет эти шаги:

  • Коррекция частоты. Переключите принятую форму волны в частоте, чтобы принести спектр NB-IoT к основной полосе (0 Гц).

  • Отфильтруйте компонент LTE и проредите. Downsample форма волны к частоте дискретизации NB-IoT и отфильтровывает частоты вне полосы NB-IoT.

  • Синхронизация времени. Удалите любую потенциальную задержку, добавленную фильтром.

Постройте спектрограмму принятой формы волны. Этот график показывает частоту, занятую компонентом NB-IoT в полученной широкополосной форме волны.

rxWaveform = txWaveform;
figure;
spectrogram(rxWaveform(:,1),ones(lteInfo.Nfft,1),0,lteInfo.Nfft,'centered',lteInfo.SamplingRate,'MinThreshold',-130);

Figure contains an axes object. The axes object contains an object of type image.

Коррекция частоты

Переключите принятую форму волны, чтобы принести компонент NB-IoT к основной полосе. График показывает спектр мощности принятой формы волны после коррекции частоты.

rxWaveformB = lteFrequencyCorrect(ltecfg,rxWaveform,offset); % Received waveform with NB-IoT in baseband
combinedSpecPlotB = hPlotSpectrum(rxWaveformB,lteInfo.SamplingRate,...
    'Received Waveform Power Spectrum with NB-IoT in Baseband',...
    {'Received waveform'});

Figure Spectrum Analyzer contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object with title Received Waveform Power Spectrum with NB-IoT in Baseband contains an object of type line. This object represents Received waveform.

Фильтрация и субдискретизация формы волны NB-IoT

Этот пример использует resample функция, чтобы проредить широкополосную форму волны к номинальной частоте дискретизации NB-IoT 1,92 МГц. Кроме того, КИХ по умолчанию, сглаживающий фильтр lowpass, реализован в resample функция отфильтровывает нежелательную форму волны LTE без потребности дополнительного фильтра lowpass.

rxwave = resample(rxWaveformB,1,OSR);

Постройте спектр мощности восстановленной формы волны NB-IoT против спектра мощности исходной формы волны NB-IoT, сгенерированной генератором формы волны NB-IoT NBIoTDownlinkWaveformGenerator. Поскольку степень сгенерированной формы волны зависит от размера БПФ, разделите исходную форму волны на уровень сверхдискретизации так, чтобы обе формы волны имели сопоставимую силу.

filteredSpecPlot = ...
    hPlotSpectrum([nbWaveform/OSR*db2mag(nbPowerBoost),rxwave],nbInfo.SamplingRate,...
    'Original and Recovered NB-IoT Waveform Power Spectrum',...
    {'Original NB-IoT waveform','Recovered NB-IoT waveform'});

Figure Spectrum Analyzer contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object with title Original and Recovered NB-IoT Waveform Power Spectrum contains 2 objects of type line. These objects represent Original NB-IoT waveform, Recovered NB-IoT waveform.

Постройте спектрограмму восстановленной формы волны NB-IoT. Этот график показывает основополосную узкополосную форму волны после извлечения его от полученной широкополосной формы волны.

figure;
spectrogram(rxwave(:,1),ones(nbInfo.Nfft,1),0,nbInfo.Nfft,'centered',nbInfo.SamplingRate,'MinThreshold',-130);

Figure contains an axes object. The axes object contains an object of type image.

Синхронизация времени

Извлеките параметры конфигурации NB-IoT для синхронизации времени и измерений EVM.

enb = ngen.Config;
enb.NSubframe = lteInfo.NSubframe;

Примените синхронизацию времени к получившейся форме волны.

timeOffset = lteNBDLFrameOffset(enb,rxwave); % Time delay in samples
rxwave = rxwave(1+timeOffset:end,:);

Измерения EVM

Настройка Средства оценки канала для измерений EVM

Параметрируйте средство оценки канала в конце приемника с помощью структуры cec.

cec = struct;                        % Channel estimation config structure
cec.PilotAverage = 'UserDefined';    % Type of pilot symbol averaging
cec.FreqWindow = 13;                 % Frequency window size
cec.TimeWindow = 9;                  % Time window size
cec.InterpType = 'Cubic';            % 2D interpolation type
cec.InterpWindow = 'Centered';       % Interpolation window type
cec.InterpWinSize = 1;               % Interpolation window size
cec.Reference = 'NRS';               % Reference signal for channel estimation

Процесс EVM

hNPDSCHEVM функция обеспечивает на подкадр и средние измерения EVM. Пример также отображает графики с EVM по сравнению со временем и поднесущими.

[evmmeas,plots] = hNPDSCHEVM(enb,cec,rxwave,nbInfo);
EVM subframe 2: 0.210%
EVM subframe 3: 0.176%
EVM subframe 6: 0.207%
EVM subframe 7: 0.192%

Figure EVM (%) contains an axes object. The axes object contains an object of type surface.

Averaged EVM frame 0: 0.197%
Averaged overall EVM: 0.197%

Ссылки

  1. 3GPP TS 36.101. “Развитый Универсальный наземный радио-доступ (к E-UTRA); передача радио оборудования пользователя (UE) и прием”. Проект партнерства третьего поколения; сеть радиодоступа Technical Specification Group.

  2. 3GPP TS 36.104. "Развитый Универсальный наземный радио-доступ (к E-UTRA); передача радио базовой станции (BS) и прием". Проект партнерства третьего поколения; сеть радиодоступа Technical Specification Group.

  3. 3GPP TS 36.213. "Развитый Универсальный наземный радио-доступ (к E-UTRA); процедуры физического уровня". Проект партнерства третьего поколения; сеть радиодоступа Technical Specification Group.

  4. 3GPP TS 36.331. "Развитый Универсальный Наземный Радио-доступ (к E-UTRA); Радио-управление ресурсами (RRC); спецификация Протокола". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

  5. О. Либерг, М. Зундберг, Y.-P. Ван, Дж. Бергман, Дж. Сакс и Г. Викстром, сотовый Интернет вещей: от массовых развертываний до критических приложений 5G, Elsevier, 2020.

Локальные функции

function prbTable = nbAllowedPRB()
    % Generate a table showing the PRB indices allowed for NB-IoT in-band
    % and guardband operation mode for each LTE bandwidth.

    NDLRBList = [6 15 25 50 75 100];
    bwMHz = [1.4 3 5 10 15 20]; % Bandwidth in MHz
    bw = (pad(string(bwMHz),'left') + repmat(" MHz (",size(bwMHz)) + pad(string(NDLRBList),'left') + repmat(" RBs)",size(bwMHz)))';

    % In-band mode
    % The allowed PRB indices for in-band mode of NB-IoT anchor
    % carrier are derived from Table 16.8-1 of TS 36.213.
    prbIndexOdd = [-35:5:-5 5:5:35]; % DC (i.e., PRB 0) is excluded
    prbIndexEven = [-46:5:-6 5:5:45]; % DC (i.e., PRB 0) is excluded
    PRBInband = cell(length(NDLRBList),1);
    for ibw = 1:length(NDLRBList)
        if mod(NDLRBList(ibw),2) % Odd
            prbTemp = prbIndexOdd + floor(NDLRBList(ibw)/2);
        else % Even
            prbTemp = prbIndexEven + floor(NDLRBList(ibw)/2);
        end
        prbTemp(prbTemp<0 | prbTemp>=NDLRBList(ibw)) = [];
        PRBInband{ibw} = prbTemp;
    end
    PRBVariableNameInband = "Allowed PRB indices for NB-IoT in-band mode";

    % Guardband mode
    % The allowed PRB indices for NB-IoT guardband mode are derived
    % here for all channel bandwidths.
    totalGuardHz = bwMHz*1e6 - NDLRBList*12*15e3; % Total guardband in Hz
    NRBGuard = floor((totalGuardHz/2) / (12*15e3)); % Number of RBs allowed on each side of the guardband for all BWs
    PRBGuard = cellfun(@(x,y)([-x:-1, y+(0:(x-1))]),num2cell(NRBGuard(:)),num2cell(NDLRBList(:)),'UniformOutput',false); % Allowed PRB indices for guardband (0-based)
    PRBVariableNameGuard = "Allowed PRB indices for NB-IoT guardband mode";

    prbTable = table(bw,PRBInband,PRBGuard);
    prbTable.Properties.VariableNames = ["LTE Bandwidth" PRBVariableNameInband PRBVariableNameGuard];
end

function verifyNBPRB(nbPRB,NDLRB,operationMode)
    % Check whether the PRB chosen for the NB-IoT operation mode in the LTE
    % carrier is allowed.
    prbTable = nbAllowedPRB();

    r = contains(prbTable{:,1},string(NDLRB)+" RBs"); % prbTable row associated to the given bandwidth
    c = 1+contains(operationMode,'Inband')*1+contains(operationMode,'Guard')*2; % prbTable column associated to the given operation mode

    errorFlag = ismember(nbPRB,prbTable{r,c}{1}); % If true, the selected nbPRB is allowed
    tmp = extract(prbTable{r,1},digitsPattern);
    msg = "The chosen PRB index ("+string(nbPRB)+") is invalid for "+operationMode+" operation mode on a "+string(tmp(1))+...
        " MHz LTE carrier. See 'prbTable' for the allowed PRB indices for all combinations of LTE bandwidth and operation mode.";
    assert(errorFlag,msg); % Throws an error if the chosen nbPRB is invalid for the given combination of NDLRB and operation mode
end