Поиск ячейки NB-IoT и восстановление MIB

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

Введение

Когда NB-IoT является расширением инфраструктуры LTE, форма волны NB-IoT имеет некоторые общие черты тому из LTE. Общие черты между этими двумя включают:

  • Расстояние между поднесущими (15 кГц)

  • Структурируйте структуру (10 подкадров с 2 пазами каждый)

  • Структурируйте длительность (10 мс)

  • Физические каналы

Однако количество поднесущих в NB-IoT фиксируется к 12 (один блок ресурса), в отличие от этого, в LTE, где количество поднесущих меняется в зависимости от полосы пропускания. Кроме того, физическое отображение канала на сетке ресурса NB-IoT отличается от того из LTE. Для получения дополнительной информации смотрите Генерацию сигналов Нисходящего канала NB-IoT.

Для того, чтобы связаться с сетью, UE должен получить некоторую информацию о базовой системе. Это несут MIB и РОДСТВЕННИКИ. MIB несет самую существенную информацию о системе:

  • Системный номер системы координат (SFN)

  • Планирование информации SIB1-NB

  • Информация о режиме работы для LTE-NB

  • Доступ к запрету

MIB несут на канале телевизионного вещания (BCH), сопоставленный в узкополосный физический канал телевизионного вещания (NPBCH) [1]. Это передается с фиксированной схемой кодирования и модуляции и может декодироваться после процедуры поиска первичной клетки. MIB соответствует одному транспортному блоку BCH. Временной интервал передачи (TTI) BCH, или время должен был передать один транспортный блок, 640 мс или 64 системы координат [3]. BCH передается в 64 частях, каждая часть, сопоставленная с первым подкадром (подкадр 0) системы координат, и возможно, что каждая передача независимо decodable, в зависимости от условий сигнала. Чтобы гарантировать, что подкадр 0 получен, получение должно быть по крайней мере 11 подкадрами долго, с учетом возможности, что получение запускается во время подкадра 0. Для условий недостаточного сигнала все 64 части TTI могут требоваться, в этом случае получение должно быть по крайней мере 641 подкадром долго. Для получения дополнительной информации о генерации символов NPBCH смотрите Генерацию сигналов Нисходящего канала NB-IoT.

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

Сгенерируйте форму волны временного интервала ссылочного канала измерения (RMC) для узкополосного физического нисходящего канала совместно использованный канал (NPDSCH) требования к производительности в соответствии с приложением A.3.12 [2] TS 36.101. Форма волны сгенерирована с помощью generateWaveform метода в классе NBIoTDownlinkWaveformGenerator. Вызывать метод, объект ngen создается и метод называется при помощи generateWaveform(ngen).

% Initialize NBIoTDownlinkWaveformGenerator object
%
% Use the 'rc' values of 'R.NB.5' and 'R.NB.6' for MIB decoding. Note that
% RMCs 'R.NB.5-1', 'R.NB.6-1' and 'R.NB.7' correspond to Non-Anchor type
% carriers which do not contain the required NPSS, NSSS and NPBCH.
rc = 'R.NB.5';
ngen = NBIoTDownlinkWaveformGenerator(rc);
ngen.Config.NNCellID = 120;
ngen.Config.NBRefP = 1;
ngen.Config.NFrame = 640;
ngen.Config.TotSubframes = 50;
ngen.Config.NPBCH.DataSource = 'MIB';

% Generate time domain NB-IoT waveform
[eNodeBOutput,grid,ofdmInfo] = generateWaveform(ngen);
sr = ofdmInfo.SamplingRate;

% Introduce a delay to simulate the unknown timing alignment associated
% with an arbitrary signal capture. This is compensated at the receiver
% while synchronizing the received signal.
delay = 50;
waveform = circshift(eNodeBOutput, delay);

% Initialize plots
if (~exist('channelFigure','var') || ~isvalid(channelFigure))
    channelFigure = figure('Visible','off');
end
[spectrumAnalyzer,synchCorrPlot,pdcchConstDiagram] = ...
    hSIB1RecoveryExamplePlots(channelFigure,sr);

% Display received signal spectrum
fprintf('\nPlotting received signal spectrum...\n');
spectrumAnalyzer(awgn(waveform, 100.0));
Plotting received signal spectrum...

Поиск ячейки и временная синхронизация

Вызовите функцию hNBCellSearch, чтобы получить идентичность ячейки и синхронизацию смещения offset первой голове системы координат. График корреляции между полученным сигналом и узкополосным первичным сигналом синхронизации (NPSS) / узкополосный вторичный сигнал синхронизации (NSSS) для обнаруженной идентичности ячейки производится. NPSS обнаруживается с помощью корреляции временного интервала, и NSSS обнаруживается с помощью корреляции частотного диапазона. До обнаружения NSSS выполняется оценка/коррекция смещения частоты с помощью циклической префиксной корреляции. Обнаружение NPSS временного интервала устойчиво к маленьким смещениям частоты, но большие смещения могут ухудшить корреляцию NPSS.

% Cell search
fprintf('\nPerforming cell search...\n');
alg.SSSDetection = 'PostFFT';
alg.MaxCellCount = 1;
[NNCellID, offset, peak] = hNBCellSearch(waveform, alg);
nbenb = struct;
nbenb.NNCellID = NNCellID;

[~,corr] = lteNBDLFrameOffset(setfield(nbenb,'OperationMode','Standalone'),waveform); %#ok<SFLD>

% As NB-IoT has similar waveform structure as LTE waveform, use functions
% pertaining to LTE to work with NB-IoT. For this purpose, create a
% cell-wide settings structure enb.
enb = nbenb;

% Plot NPSS/NSSS correlation and threshold
synchCorrPlot.YLimits = [0 max(corr(:))*1.1];
synchCorrPlot(corr);

% Perform timing synchronization
fprintf('Timing offset to frame start: %d samples\n',offset);
timesynced = waveform(1+offset:end,:);

% Show cell-wide settings
fprintf('Cell-wide settings after cell search:\n');
disp(nbenb);
Performing cell search...
Timing offset to frame start: 50 samples
Cell-wide settings after cell search:
    NNCellID: 120

Оценка смещения частоты и коррекция

До демодуляции OFDM должно быть удалено любое значительное смещение частоты. Смещение частоты в форме волны I/Q оценивается и откорректировало использование lteFrequencyOffset и lteFrequencyCorrect. Смещение частоты оценивается посредством корреляции циклического префикса и поэтому может оценить смещения до +/-половина расстояния между поднесущими i.e. +/-7.5 кГц. Генерация сигналов нисходящего канала NB-IoT похожа на генерацию сигналов восходящего канала LTE как оба, которые формы волны имеют половину сдвига поднесущей. Следовательно, используйте функции восходящего канала LTE, чтобы оценить смещение частоты и демодулировать принятые формы волны нисходящего канала NB-IoT OFDM.

% Frequency offset estimation
fprintf('\nPerforming frequency offset estimation...\n');
enb.NULRB = 6; % For frequency offset computation
enb.DuplexMode = 'FDD';
foffset = lteFrequencyOffset(enb,timesynced,0);
fprintf('Frequency offset: %0.3fHz\n',foffset);

% Compensating for frequency offset
freqsynced = lteFrequencyCorrect(enb,timesynced,foffset);
Performing frequency offset estimation...
Frequency offset: -0.031Hz

Демодуляция OFDM и оценка канала

Прореженная форма волны OFDM I/Q демодулируется, чтобы произвести сетку ресурса rxgrid. Это используется, чтобы выполнить оценку канала. hest оценка канала, nest оценка шума (для эквализации MMSE), и cec настройка средства оценки канала.

Для оценки канала пример принимает четыре ячейки определенные опорные сигналы и два узкополосных опорных сигнала. Это означает, что оценки канала к каждой антенне приемника от всех возможных специфичных для ячейки портов опорного сигнала доступны. Истинное количество специфичных для ячейки портов опорного сигнала еще не известно. Оценка канала только выполняется на первом подкадре, т.е. использовании первого L Символы OFDM в rxgrid.

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

% Channel estimator configuration
cec.PilotAverage = 'UserDefined';     % Type of pilot 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';                % NB-IoT downlink channel estimation

% Assume 4 cell specific and 2 narrowband reference signals for initial
% decoding attempt. This ensures channel estimates are available for all
% reference signals
enb.CellRefP = 4;
enb.NBRefP = 2;
enb.NTxAnts = 2;
nbenb.NBRefP = 2;

fprintf('Performing OFDM demodulation...\n\n');
griddims = lteResourceGridSize(enb); % Resource grid dimensions
L = griddims(2);                     % Number of OFDM symbols in a subframe

enb.NBULSubcarrierSpacing = '15kHz'; % Required for NB-IoT downlink OFDM demodulation
rxgrid = lteSCFDMADemodulate(enb,freqsynced); % For OFDM demodulation in NB-IoT
if (isempty(rxgrid))
    fprintf('After timing synchronization, signal is shorter than one subframe so no further demodulation will be performed.\n');
    return;
end

% Perform channel estimation
enb.NSubframe = 0; % Initialize NSubframe for channel estimation
[hest, nest] = lteDLChannelEstimate(enb, cec, rxgrid(:,1:L,:));
Performing OFDM demodulation...

Демодуляция NPBCH, декодирование BCH, парсинг MIB

MIB теперь декодируется наряду с количеством узкополосных портов опорного сигнала, переданных как маска на CRC BCH. Функциональный lteNPBCHDecode устанавливает синхронизацию системы координат по модулю 64 и возвращает это в nfmod64 параметр. Это также возвращает биты MIB в векторном mib и истинный номер узкополосных портов опорного сигнала, который присвоен в nbenb.NBRefP при выходе этого вызова функции. Если количество узкополосных портов опорного сигнала декодируется как nbenb.NBRefP=0, это указывает на отказ декодировать BCH.

% Decode the MIB
% Extract resource elements (REs) corresponding to the NPBCH from the first
% subframe across all receive antennas and channel estimates
separator = repmat('-',1,50);
fprintf('%s\n',separator);
fprintf('Performing MIB decoding...\n');
fprintf('%s\n\n',separator);
npbchIndices = lteNPBCHIndices(nbenb);
[npbchRx, npbchHest] = lteExtractResources(npbchIndices, ...
                              rxgrid(1:12,1:L,:), hest(:,1:L,:,:));

% Decode NPBCH
dstate = [];
[bchBits, dstate,npbchSymbols,nfmod64,mib,nbenb.NBRefP] = lteNPBCHDecode( ...
    nbenb, npbchRx, npbchHest, nest, dstate);

% Parse MIB bits
nbenb = hNBMIB(mib,nbenb);

if (nbenb.NBRefP == 0)
    fprintf('MIB decoding failed (nbenb.NBRefP=0).\n\n');
    return;
end

% Incorporate the nfmod64 value from the function lteNPBCHDecode, as
% the NFrame value established from the MIB is the SFN modulo 64 (it is
% stored in the MIB as floor(SFN/64)).
if nbenb.NBRefP % If NPBCH decoding is passed then set the NFrame value
    nbenb.NFrame = nbenb.NFrame+nfmod64;
end

if strcmpi(nbenb.OperationMode, 'Inband-SamePCI')
    nbenb.NCellID = NNCellID;
end

% Display cell-wide settings after MIB decoding
fprintf('Cell-wide settings after MIB decoding:\n');
disp(nbenb);
--------------------------------------------------
Performing MIB decoding...
--------------------------------------------------

Cell-wide settings after MIB decoding:
                      NNCellID: 120
                        NBRefP: 1
                        NFrame: 640
                      HyperSFN: 0
                     ABEnabled: 0
                 OperationMode: 'Inband-DifferentPCI'
    AdditionalTransmissionSIB1: 0

Приложение

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

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

  1. 3GPP TS 36.211. "Физические каналы и модуляция". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). URL: https://www.3gpp.org.

  2. 3GPP TS 36.101. "Передача радио Оборудования пользователя (UE) и прием". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). URL: https://www.3gpp.org.

  3. О. Либерг, М. Зундберг, Y.-P. Ван, Дж. Бергман и Дж. Сакс. Сотовый Интернет вещей: технологии, стандарты и эффективность. Elsevier, 2018.

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