Поиск камер NB-IoT и восстановление MIB

Этот пример показывает, как LTE Toolbox™ может использоваться, чтобы полностью синхронизировать, демодулировать и декодировать live узкополосный интернет вещей (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 Nownlink Генерация Сигналов.

Генерация сигналов нисходящего канала 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, чтобы оценить смещение частоты и демодулировать принятые формы волны 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 демодулируется, чтобы создать ресурсную сетку 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. Функция lteNPBCHDecode устанавливает систему координат timing по модулю 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-ья Генерация проект партнерства; Группа технических спецификаций Radio Доступа Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL-адрес: https://www.3gpp.org.

  2. 3GPP TS 36.101. «Радиопередача и прием пользовательского оборудования (UE)». Проект Партнерства 3-ьей генерации; Группа технических спецификаций Radio Доступа Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL-адрес: https://www.3gpp.org.

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