Você está na página 1de 4

2017621 DiferenadetempodeposicionamentodechegadausandooexemploPRSMATLAB&Simulink

DiferenadetempodeposicionamentodechegadausandoPRS
EsteexemplomostracomousaraabordagemdeposicionamentodeDiferenadeHora(TDOA)emconjuntocomoSinalde
RefernciadePosicionamento9(PRS)paracalcularaposiodeumEquipamentodeUsurio(UE)dentrodeumarededeeNodeBs ExperimenteemMATLAB
usandooLTESystemToolbox.

Introduo
Nesteexemplo,umasriedetransmisseseNodeBsocriadasecombinadascomdiferentesatrasosepoderesrecebidosparamodelararecepodetodasasformasdeonda
eNodeBporumUE.OUEexecutacorrelaocomoSinaldeRefernciadePosicionamento(PRS)paraestabeleceroatrasodecadaeNodeBeposteriormenteadiferenade
atrasoentretodososparesdeeNodeBs.Essasdiferenasdeatrasosousadasparacalcularhiperbolasdediferenadeatrasoconstante,quesoplotadasemrelaos
posiesconhecidasdeeNodeBesecruzamnaposiodoUE.

Configuraodotransmissor
criadoumconjunto(matrizcelular)deconfiguraeseNodeBenb,comonmerodeeNodeBsespecificadoporNeNodeB.Asconfiguraessoderivadasdocanaldemedio
dereferncia(RMC)R.5usandolteRMCDL.R.5descreveumatransmissodecanalcompartilhadodedownlink(PDSCH)debandalargade3MHzusandomodulaode64QAM.
ParacadaeNodeB,aconfiguraoatualizadaparatornaraidentidadecelularNCellIDnicaeosparmetrosPRSNPRSRB,IPRSePRSPeriodsodefinidos.

UmaposioaleatriadadaporumacoordenadaXeYparacadaeNodeBgeradaporhPositioningPosition.m.

Rng('default');%Inicializeofluxodegeradordenmerosaleatrios
NeNodeB=5;%NmerodeeNodeB

%CriarconfiguraesdoeNodeB
Enb=cell(1,NeNodeB);
Parai=1:NeNodeB
Enb{i}=lteRMCDL('R.5');%ObterconfiguraobaseadanoRMC
enb{i}.NCellID=mod((i1)*2,504);%Definiridentidadedeclulaarbitrria
enb{i}.TotSubframes=1;%Nmerodesubtramasparagerar
enb{i}.NPRSRB=2;%LarguradebandadePRSemblocosderecursos
emb{i}.IPRS=0;%ndicedeconfiguraoPRS
enb{i}.PRSPeriod='On';%PRSpresenteemtodasassubtramas
enb{i}.Position=hPositioningPosition(i1,NeNodeB);%ENodeBposio
final

%UseaprimeiraconfiguraoeNodeBparaconfiguraesgerais
Info=lteOFDMInfo(enb{1});

LocalizaodeplotagemdeeNodeBseUE
AsposiesdoseNodeBsedoUEsoplotadasparareferncia.OUEestem(0,0)eoseNodeBssodistribudosemtornodoUE.

HPositioningPlotPositions(enb);

GerarTransmisses
ParacadaeNodeB,feitaumatransmissoconsistindoemPRS,SinaldeSincronizaoPrimria(PSS),SinaldeSincronizaoSecundria(SSS)eSinaldeRefernciade
Clula(CellRS).criadaumagradederecursosvaziaeumPRSgeradoemapeadonagradeusandoltePRSeltePRSIndices.OPSS,SSSeCellRSsoadicionadosde
formasemelhante.AgraderesultantemoduladaOFDMparaproduzirumaformadeondadetransmisso.

Tx=clula(1,NeNodeB);
Parai=1:NeNodeB
Grade=[];
Paransf=0:19
Enb{i}.NSubframe=mod(nsf,10);
Sfgrid=lteDLResourceGrid(enb{i});%Emptysubframe
sfgrid(ltePRSIndices(enb{i}))=ltePRS(enb{i});%PRSREs
sfgrid(ltePSSIndices(enb{i}))=ltePSS(enb{i});%PSSREs
sfgrid(lteSSSIndices(enb{i}))=lteSSS(enb{i});%SSSREs
sfgrid(lteCellRSIndices(enb{i}))=lteCellRS(enb{i});%DeclulaRSREs

https://www.mathworks.com/help/lte/examples/timedifferenceofarrivalpositioningusingprs.html 1/4
2017621 DiferenadetempodeposicionamentodechegadausandooexemploPRSMATLAB&Simulink
grid=[gridsfgrid];%#Ok<AGROW>
final
Enb{i}.NSubframe=0;
Tx{i}=lteOFDMModulate(enb{i},grid);%OFDMmodulate
end

CalcularatrasosdeeNodeBsparaUEs
UsandoasposiesconhecidasdeeNodeB,otempodeatrasodecadaeNodeBparaoUEcalculadousandoadistnciaentreoUEeeNodeBradiuseavelocidadede
propagao(velocidadedaluz).Usandooconhecimentodataxadeamostrageminfo.SamplingRate,oatrasodaamostracalculadoearmazenadosampleDelay.Essas
variveiss erousadasparamodelaroambienteentreoeNodeBseoUE,masainformaoNOserfornecidaaoUE.

SpeedOfLight=299792458.0;%Velocidadedaluzemm/s

SampleDelay=zeros(1,NeNodeB);
Raio=clula(1,NeNodeB);
Parai=1:NeNodeB
[~,Radius{i}]=cart2pol(enb{i}.Position(1),enb{i}.Position(2));
Delay=raio{i}/speedOfLight;%Atrasoemsegundos
sampleDelay(i)=round(delay*info.SamplingRate);%Atrasono
finaldasamostras

CriarSomadeformasdeondarecebidasetraarformasdeondarecebidas
OsinalrecebidonoUEmodeladoretardandocadatransmissodeeNodeBdeacordocomosvaloressampleDelayeatenuandoosinalrecebidodecadaeNodeBusandoos
valoresradiusemconjuntocomumaimplementaodaTR36.814[1]UrbanMacroLineOfSight(LOS)Modelodeperdadecaminho.Aformadeondarecebidadecada
eNodeBpreenchidacomzerosparagarantirquetodasasformasdeondatenhamomesmocomprimento.

Sumrx=zeros(comprimento(tx{1})+max(sampleDelay),1);
Rx=clula(1,NeNodeB);
Parai=1:NeNodeB
%UrbanoPerdadecaminhoMacroLOSporTR36.814
PLdB=hPositioningPathLoss(radius{i},2.1e9);
PL=10^(PLdB/10);

%Adicionardelay,padeatenuar
rx{i}=[zeros(sampleDelay(i),1);Tx{i};...
Zeros(max(sampleDelay)sampleDelay(i),1)]/sqrt(PL);

%FormasdeondaSumdetodososeNodeBs
Sumrx=sumrx+rx{i};
fim

%Traamformasdeondarecebidas
HPositioningPlotRx(enb,rx,info.SamplingRate);

ExecuteaPesquisadeCeldasparaEstabelecerIdentidadesCelulares
ApesquisamulticlularealizadaparaidentificaraidentidadecelulardecadaeNodeB.UmamatrizdeconfiguraesrxcfgparaoeNodeBsentocriadacombasenas
identidadesdeclulasdetectadaseassumindoqueaconfiguraoPRSfoidadaporsinalizaodecamadasuperiore,portanto,conhecidapeloUE.Algunsoutrosparmetros
dacamadafsica,comoocomprimentodoprefixocclicoeomododuplex,soassumidoscomosendoconhecidosesoassumidoscomoiguaisparacadaeNodeB.Consulteo
exemplodeRecuperaodeclulas,MIBeSIB1paraobtermaisinformaessobreadetecodessesparmetros.

%Parmetrosassumidosparapesquisacelular
Searchcfg.CyclicPrefix=enb{1}.CyclicPrefix;
Searchcfg.DuplexMode=enb{1}.DuplexMode;
Searchcfg.NDLRB=enb{1}.NDLRB;

%Executeapesquisadevriasclulas
Searchalg.MaxCellCount=NeNodeB;
Searchalg.SSSDetection='PostFFT';
[CellIDs,offsets]=lteCellSearch(searchcfg,sumrx,searchalg);

%Configurarconfiguraesparacadacluladetectada;Asclulassoconsideradascomo
%detectadasaquiseatingiremumlimitemnimodeRSRQQqualmin

https://www.mathworks.com/help/lte/examples/timedifferenceofarrivalpositioningusingprs.html 2/4
2017621 DiferenadetempodeposicionamentodechegadausandooexemploPRSMATLAB&Simulink
Qqualmin=20;
RSRQdB=zeros(1,searchalg.MaxCellCount);
Rxcfg=cell(1,searchalg.MaxCellCount);
Parai=1:searchalg.MaxCellCount%Parmetrosassumidos

Rxcfg{i}=enb{1};
%Useidentidadecelularquefoidetectada
Rxcfg{i}.NCellID=cellIDs(i);
%MedidaRSRQ
Rxgrf=lteOFDMDemodulate(rxcfg{i},sumrx(1+offsets(i):end,:));
Meas=hRSMeasurements(rxcfg{i},rxgrid);
RSRQdB(i)=meas.RSRQdB;
fim
Rxcfg(RSRQdB<Qqualmin)=[];
Ndetected=numel(rxcfg);

Estimativadehorriosdechegada
OstemposdechegadadossinaisdecadaeNodeBsoestabelecidosnoUE,correlacionandoosinalrecebidocomumPRSlocalgeradocomaidentidadecelulardecada
eNodeB.ObservequeostemposdechegadaabsolutosnopodemserusadosnoUEparacalcularsuaposio,poisnotemconhecimentodequolongeoeNodeBsso,
apenasadiferenadedistnciasdadapeladiferenanoshorriosdechegada.Portanto,acorrelaodepicoparacadaeNodeBusadacomoumaestimativadeatrasopara
permitiracomparao.

Ref=cell(1,Ndetected);
Corr=cell(1,Ndetected);
DelayEst=zeros(1,Ndetected);
Parai=1:Ndetected
%GerarrefernciaPRS
Sfgrid=lteDLResourceGrid(rxcfg{i});
Sfgrid(ltePRSIndices(rxcfg{i}))=ltePRS(rxcfg{i});
Ref{i}=lteOFDMModulate(rxcfg{i},sfgrid);

%CorrelacionouosinalrecebidocomcadaPRSdereferncia
C=abs(xcorr(sumrx,ref{i}));

%
Tamanhoreduzidodovetordecorrelaoparaposicionamentoetraadoc(1:comprimento(sumrx))=[];%Removeresultadosemsentidonoincio
corr{i}=c(1:info.Nfft);%ExtraiaovalordeumsmboloOFDMdedados

%Aestimativadeatrasoestnopontodecorrelaomxima
DelayEst(i)=find(corr{i}==max(corr{i}));
fim

%Lotedecorrelao
se(Ndetected>0)
HPositioningPlotCorr(rxcfg,corr,info.SamplingRate);
fim

ComputeTDOAePloteConstantTDOAHyperbolas
Usandoostemposdechegada,asdiferenashorriasdechegadaentrecadapardeeNodeBssocalculadasusandohPositioningTDOA.m.Adiferenadetempoparticularde
chegadaentreumpardeeNodeBspoderesultardequeoUEestejalocalizadoemqualquerposioemquedoiscrculos,cadaumcentradoemumeNodeB,secruzem.Osdois
crculostmraiosquediferempeladistnciacobertavelocidadedaluznadiferenadetempodada.OconjuntocompletodepossveisposiesdeUEemtodososraios
possveisparaumcrculo(comooutrocrculomantendoumraioapropriadoparaadiferenadetempocomojdescrito)formaumahiprbole.As"hiprbolasdediferenade
atrasoconstante"paratodososdiferentesparesdeeNodeBssotraadasemrelaosposiesconhecidaseNodeBesecruzamnaposiodoUE.

%EstimeadiferenahorriadechegadadecadaeNodeB
Tdoa=hPositioningTDOA(delayEst,info.SamplingRate);

%HyperbolasPlot
figura1);
Legendstr=feval(@(x)x.String,legenda);
Enbs=[enb{:}];
TxCellIDs=[enbs.NCellID];

https://www.mathworks.com/help/lte/examples/timedifferenceofarrivalpositioningusingprs.html 3/4
2017621 DiferenadetempodeposicionamentodechegadausandooexemploPRSMATLAB&Simulink
Paraj=1:Ndetected
parai=(j+1):Ndetected
Dd=tdoa(i,j)*speedOfLight;%Distnciadeatraso
%estabeleceroeNodeBsparaoqualadistnciadeatraso
%aplicvelexaminandoasidentidadesdeclulasdetectadas
Txi=find(txCellIDs==rxcfg{i}.NCellID);
Txj=find(txCellIDs==rxcfg{j}.NCellID);
Se(~isempty(txi)&&~isempty(txj))
%plotTDOAcurve
[x,y]=hPositioningTDOACurve(enb{txi}.Position,...
Enb{txj}.Position,dd);
Trama(x,y,'k:','LineWidth',2);
extremidade
final
extremidade
Legenda(legendstr);

Apndice
Esteexemplousaasfunesauxiliares:

HPositioningPosition.m
HPositioningPlotPositions.m
HPositioningPathLoss.m
HPositioningPlotRx.m
HPositioningPlotCorr.m
HPositioningTDOA.m
HPositioningTDOACurve.m

Bibliografiaselecionada
1.3GPPTR36.814"AvanosadicionaisparaosaspectosdacamadafsicaEUTRA"

https://www.mathworks.com/help/lte/examples/timedifferenceofarrivalpositioningusingprs.html 4/4

Você também pode gostar