В этом примере показано, как 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.
Сгенерируйте форму волны временного интервала ссылочного канала измерения (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: -60.177Hz
Прореженная форма волны 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...
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
Этот пример использует следующие файлы помощника:
3GPP TS 36.211. "Физические каналы и модуляция". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). URL: https://www.3gpp.org.
3GPP TS 36.101. "Передача радио Оборудования пользователя (UE) и прием". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). URL: https://www.3gpp.org.
О. Либерг, М. Зундберг, Y.-P. Ван, Дж. Бергман и Дж. Сакс. Сотовый Интернет вещей: технологии, стандарты и эффективность. Elsevier, 2018.