exponenta event banner

Разница во времени при позиционировании прибытия с использованием PRS

Этот пример показывает, как использовать подход позиционирования временной разности прибытия (TDOA) в сочетании с опорным сигналом позиционирования (PRS) версии 9 для вычисления местоположения пользовательского оборудования (UE) в сети eNireB с использованием Toolbox™ LTE.

Введение

В этом примере создается и комбинируется с различными задержками и принимаемыми степенями для моделирования приема всех сигналов eNireB одним UE. UE выполняет корреляцию с опорным сигналом позиционирования (PRS), чтобы установить задержку от каждого eNireB и затем разность задержек между всеми парами eNireB. Эти разности задержек используются для вычисления гипербол постоянной разности задержек, которые строятся относительно известных положений eNireB и пересекаются в положении UE.

Конфигурация датчика

Набор (массив ячеек) конфигураций eNireB enb создается, с количеством eNeyB, указанным NeNodeB. Конфигурации получаются из опорного канала измерения (RMC) R.5 используя lteRMCDL. R.5 описывает передачу общего канала (PDSCH) с полосой пропускания 3 МГц с использованием 64-QAM модуляции. Для каждого eNireB конфигурация обновляется для идентификации соты. NCellID уникальные и параметры PRS NPRSRB, IPRS и PRSPeriod установлены.

Случайное положение, задаваемое координатами X и Y для каждого eNireB, генерируется посредством hPositioningPosition функция.

rng('default'); % Initialize the random number generator stream
NeNodeB = 5;    % Number of eNodeB

% Create eNodeB configurations
enb = cell(1,NeNodeB);
for i=1:NeNodeB
   enb{i}=lteRMCDL('R.5');            % Get configuration based on RMC
   enb{i}.NCellID = mod((i-1)*2,504); % Set arbitrary cell identity
   enb{i}.TotSubframes = 1;           % Number of subframes to generate
   enb{i}.NPRSRB = 2;                 % Bandwidth of PRS in resource blocks
   enb{i}.IPRS = 0;                   % PRS configuration index
   enb{i}.PRSPeriod = 'On';           % PRS present in all subframes
   enb{i}.Position = hPositioningPosition(i-1, NeNodeB); % eNodeB position
end

% Use the first eNodeB configuration for general settings
info = lteOFDMInfo(enb{1});

Определение местоположения eNireB и UE

Позиции eNireB и UE строятся для ссылки. UE находится в (0,0), и eNireB распределены по UE.

hPositioningPlotPositions(enb);

Генерация передач

Для каждого eNireB осуществляется передача, состоящая из PRS, первичного сигнала синхронизации (PSS), вторичного сигнала синхронизации (SSS) и опорного сигнала, специфичного для соты (Cell RS). Создается пустая сетка ресурсов, а также создается PRS и отображается на сетку с помощью ltePRS и ltePRSIndices. PSS, SSS и сота RS добавляются аналогичным образом. Результирующая сетка модулируется OFDM для получения сигнала передачи.

tx = cell(1,NeNodeB);
for i = 1:NeNodeB
    grid = [];
    for nsf = 0:19
        enb{i}.NSubframe = mod(nsf,10);
        sfgrid = lteDLResourceGrid(enb{i});       % Empty subframe
        sfgrid(ltePRSIndices(enb{i})) = ltePRS(enb{i});       % PRS REs
        sfgrid(ltePSSIndices(enb{i})) = ltePSS(enb{i});       % PSS REs
        sfgrid(lteSSSIndices(enb{i})) = lteSSS(enb{i});       % SSS REs
        sfgrid(lteCellRSIndices(enb{i})) = lteCellRS(enb{i}); % Cell RS REs
        grid = [grid sfgrid]; %#ok<AGROW>
    end
    enb{i}.NSubframe = 0;
    tx{i} = lteOFDMModulate(enb{i}, grid);        % OFDM modulate
end

Задержки вычислений от eNireB к UE

Используя известные позиции eNireB, временная задержка от каждого eNireB к UE вычисляется с использованием расстояния между UE и eNireB, radiusи скорость распространения (скорость света). Использование знаний о частоте выборки, info.SamplingRate, задержка выборки вычисляется и сохраняется в sampleDelay. Эти переменные будут использоваться для моделирования среды между eNireB и UE, но информация НЕ будет предоставлена UE.

speedOfLight = 299792458.0; % Speed of light in m/s

sampleDelay = zeros(1, NeNodeB);
radius = cell(1, NeNodeB);
for i = 1:NeNodeB
   [~, radius{i}] = cart2pol(enb{i}.Position(1), enb{i}.Position(2));
   delay = radius{i}/speedOfLight;                  % Delay in seconds
   sampleDelay(i) = round(delay*info.SamplingRate); % Delay in samples
end

Создание суммы полученных сигналов и создание графика полученных сигналов

Принятый сигнал в UE моделируется путем задержки каждой передачи eNireB в соответствии со значениями в sampleDelayи ослабление принятого сигнала от каждого eNeyB с использованием значений в radius в сочетании с реализацией модели потерь в тракте TR 36.814 [1] Городская макролиния визирования (LOS). Принятый сигнал от каждого eNireB дополняется нулями, чтобы гарантировать, что все сигналы имеют одинаковую длину.

sumrx = zeros(length(tx{1})+max(sampleDelay), 1);
rx = cell(1, NeNodeB);
for i = 1:NeNodeB
    % Urban Macro LOS path loss per TR36.814
    PLdB = hPositioningPathLoss(radius{i}, 2.1e9);
    PL = 10^(PLdB/10);

    % Add delay, pad and attenuate
    rx{i} = [zeros(sampleDelay(i), 1); tx{i}; ...
                zeros(max(sampleDelay)-sampleDelay(i), 1)]/ sqrt(PL);

    % Sum waveforms from all eNodeBs
    sumrx = sumrx + rx{i};
end

% Plot received waveforms
hPositioningPlotRx(enb, rx, info.SamplingRate);

Выполнение поиска ячеек для установления идентификаторов ячеек

Многоячеечный поиск выполняется для того, чтобы идентифицировать идентичность ячейки каждого eNireB. Массив конфигураций rxcfg для eNeyB затем создается на основе обнаруженных идентификаторов соты и предположения, что конфигурация PRS была задана сигнализацией более высокого уровня и поэтому известна UE. Предполагается, что ряд других параметров физического уровня, таких как длина циклического префикса и дуплексный режим, известны и считаются равными для каждого eNireB. Для получения дополнительной информации об обнаружении этих параметров см. пример поиска ячеек, MIB и восстановления SIB1.

% Assumed parameters for cell search
searchcfg.CyclicPrefix = enb{1}.CyclicPrefix;
searchcfg.DuplexMode = enb{1}.DuplexMode;
searchcfg.NDLRB = enb{1}.NDLRB;

% Perform multi-cell search
searchalg.MaxCellCount = NeNodeB;
searchalg.SSSDetection = 'PostFFT';
[cellIDs,offsets] = lteCellSearch(searchcfg,sumrx,searchalg);

% Set up configurations for each detected cell; cells are considered as
% detected here if they meet a minimum RSRQ threshold Qqualmin
Qqualmin = -20;
RSRQdB = zeros(1,searchalg.MaxCellCount);
rxcfg = cell(1,searchalg.MaxCellCount);
for i = 1:searchalg.MaxCellCount
    % Assumed parameters
    rxcfg{i} = enb{1};
    % Use cell identity that was detected
    rxcfg{i}.NCellID = cellIDs(i);
    % Measure RSRQ
    rxgrid = lteOFDMDemodulate(rxcfg{i},sumrx(1+offsets(i):end,:));
    meas = hRSMeasurements(rxcfg{i},rxgrid);
    RSRQdB(i) = meas.RSRQdB;
end
rxcfg(RSRQdB<Qqualmin) = [];
Ndetected = numel(rxcfg);

Оценка времени поступления

Время поступления сигналов из каждого eNireB устанавливается в UE путем корреляции входящего сигнала с локальным PRS, сгенерированным с идентификацией соты каждого eNireB. Следует отметить, что абсолютные времена прихода не могут быть использованы в UE для вычисления его положения, поскольку он не знает, как далеко находятся eNireB, только разность расстояний, заданная разницей времен прихода. Следовательно, пиковая корреляция для каждого eNireB используется в качестве оценки задержки для обеспечения возможности сравнения.

ref = cell(1, Ndetected);
corr = cell(1, Ndetected);
delayEst = zeros(1, Ndetected);
for i = 1:Ndetected
    % Generate reference PRS
    sfgrid = lteDLResourceGrid(rxcfg{i});
    sfgrid(ltePRSIndices(rxcfg{i})) = ltePRS(rxcfg{i});
    ref{i} = lteOFDMModulate(rxcfg{i},sfgrid);

    % Correlate received signal with each reference PRS
    c = abs(xcorr(sumrx,ref{i}));

    % Reduced length of correlation vector for positioning and plotting
    c(1:length(sumrx)) = [];    % Remove meaningless result at beginning
    corr{i} = c(1:info.Nfft);   % Extract an OFDM symbol's worth of data

    % Delay estimate is at point of maximum correlation
    delayEst(i) = find(corr{i}==max(corr{i}));
end

% Plot correlation
if (Ndetected>0)
    hPositioningPlotCorr(rxcfg, corr, info.SamplingRate);
end

Вычислить TDOA и построить постоянные TDOA гиперболы

Используя время поступления, временные различия прихода между каждой парой eNireB вычисляются с использованием hPositioningTDOA функция. Конкретная разница во времени прихода между парой eNireB может быть результатом того, что UE находится в любой позиции, где пересекаются две окружности, каждая из которых центрирована в eNireB. Два круга имеют радиусы, которые отличаются расстоянием, пройденным со скоростью света в данной разности времени. Полный набор возможных положений UE по всем возможным радиусам для одной окружности (при этом другая окружность поддерживает радиус, соответствующий разнице во времени, как уже описано) образует гиперболу. «Гиперболы постоянной разности задержек» для всех различных пар eNireB строятся относительно известных положений eNireB и пересекаются в положении UE.

% Estimate time difference of arrival from each eNodeB
tdoa = hPositioningTDOA(delayEst,info.SamplingRate);

% Plot hyperbolas
figure(1);
legendstr = feval(@(x)x.String,legend);
enbs = [enb{:}];
txCellIDs = [enbs.NCellID];
for j = 1:Ndetected
    for i = (j+1):Ndetected
        dd = tdoa(i,j)*speedOfLight; % Delay distance
        % establish the eNodeBs for which the delay distance
        % is applicable by examining the detected cell identities
        txi = find(txCellIDs==rxcfg{i}.NCellID);
        txj = find(txCellIDs==rxcfg{j}.NCellID);
        if (~isempty(txi) && ~isempty(txj))
            % plot TDOA curve
            [x, y] = hPositioningTDOACurve(enb{txi}.Position, ...
                enb{txj}.Position, dd);
            plot(x, y, 'k:', 'LineWidth', 2);
        end
    end
end
legend(legendstr);

Приложение

В этом примере используются эти вспомогательные функции.

Избранная библиография

  1. 3GPP TR 36.814 «Дальнейшие усовершенствования для аспектов физического уровня E-UTRA»