exponenta event banner

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

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

Введение

Поскольку NB-IoT является расширением инфраструктуры LTE, форма сигнала NB-IoT имеет некоторые сходства с формой сигнала LTE. Сходство между ними включает в себя:

  • Интервал между поднесущими (15kHz)

  • Структура кадра (10 подкадров по 2 слота в каждом)

  • Длительность кадра (10 мс)

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

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

Для связи с сетью UE должно получить некоторую базовую системную информацию. Это осуществляется MIB и SIB. MIB содержит наиболее важную системную информацию:

  • Номер системного кадра (SFN)

  • Информация о планировании SIB1-NB

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

  • Запрет доступа

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

Генерация и инициализация сигналов нисходящей линии связи NB-IoT

Формирование формы сигнала во временной области опорного канала измерения (RMC) для требований к характеристикам узкополосного физического совместно используемого канала нисходящей линии связи (NPDSCH) в соответствии с TS 36.101 Приложение A.3.12 [2]. Форма сигнала генерируется с использованием метода 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. Сдвиг частоты оценивается посредством корреляции циклического префикса и, следовательно, может оценивать смещения до +/- половины расстояния между поднесущими, т.е. +/- 7.5kHz. Генерация формы сигнала NB-IoT нисходящей линии связи аналогична генерации формы сигнала восходящей линии связи LTE, поскольку обе формы сигнала имеют сдвиг половины поднесущей. Следовательно, используйте функции восходящей линии связи LTE для оценки сдвига частоты и демодуляции принятых сигналов прямой линии связи OFDM NB-IoT.

% 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 и оценка канала

Сигнал I/Q с пониженной дискретизацией OFDM демодулируется для получения сетки ресурсов. 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 декодируется вместе с количеством узкополосных портов опорного сигнала, передаваемых как маска по BCH CRC. Функция 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 ТС 36.211. «Физические каналы и модуляция». Проект партнерства 3-го поколения; техническая спецификация на сеть радиодоступа группы; Усовершенствованный универсальный наземный радиодоступа (E-UTRA). URL: https://www.3gpp.org.

  2. 3GPP ТС 36.101. «Радиопередача и прием пользовательского оборудования (UE)». проект партнерства 3-го поколения; техническая спецификация на сеть радиодоступа группы; Усовершенствованный универсальный наземный радиодоступа (E-UTRA). URL: https://www.3gpp.org.

  3. О. Либерг, М. Сундберг, Я. -П. Ван, Дж. Бергман и Дж. Сакс. Сотовый интернет вещей: технологии, стандарты и производительность. Elsevier, 2018.