Anais do 12O Encontro de Iniciação Científica e Pós-Graduação do ITA – XII ENCITA / 2006
Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, Outubro, 16 a 19, 2006
RECEPTOR GPS POR SOFTWARE EM TEMPO REAL.
PARTE I: GERAÇÃO DOS SINAIS
Fabrício de Araújo Carvalho (PG)
Instituto Tecnológico de Aeronáutica-ITA.
Pça Marechal Eduardo Gomes 50, 12228-615
São José dos Campos, SP-Brasil.
[email protected]
Fernando Walter (PQ)
Instituto Tecnológico de Aeronáutica-ITA.
Pça Marechal Eduardo Gomes 50, 12228-900.
São José dos Campos, SP-Brasil.
[email protected]
Resumo: A simulação em tempo real do sinal GPS digitalizado com o propósito de se obter um sinal composto pelos vários
satélites da constelação GPS é apresentada. O simulador foi implementado utilizando o DSP TMS320C6711 da Texas Instruments e
o ambiente de programação Code Composer Studio. A descrição das fases de processamento são apresentadas. Alguns algoritmos
foram primeiramente verificados utilizando como apoio o Matlab. São mostrados resultados gráficos e os tempos de
processamento.
Palavras chave: sinal GPS, DSP, TMS320C6711 e simulador GPS.
1. Introdução
O Sistema Global de Posicionamento, GPS (Global Positioning System), possibilita a navegação tridimensional
com base em um sistema de coordenadas ortogonais, tendo sua origem no centro da Terra. A constelação de satélites é
formada por 29 satélites localizados em 6 planos orbitais, separados de 60º e inclinação orbital de 55º, com órbitas
quase circulares e período de aproximadamente 11h e 58 min, correspondendo a meio dia sideral (Fig. 1).
Figura 1. Ilustração das órbitas dos satélites, para o sistema GPS.
Neste sistema é possível visualizar um número acima de 5 satélites em qualquer local da superfície ou próximo da
Terra, podendo chegar a 12 satélites em determinadas regiões do globo para um ângulo de elevação acima de 5 graus
(denominado de máscara).
Medidas feitas com o um receptor GPS (23º 12’ 32’’ de Latitude S, 45º 52’ 30’’ de Longitude W e elevação de 603
metros) e máscara de 10 graus, revelam que o número médio de satélites visíveis fica entre 6 a 9 em 98,6 % do tempo
de observação, sendo 1,4 % deste tempo com apenas 5 satélites (Villalba, 2004).
Para a determinação da posição e velocidade do usuário é necessário que o receptor obtenha dados (Time of Arrival
– TOA) de no mínimo 4 satélites para ser capaz de determinar as estimativas das distâncias (pseudodistância) entre o
receptor e os satélites.
A necessidade de testar um correlator, parte integrante de um receptor GPS em software, que operasse em tempo
real, gerou a necessidade de se elaborar um firmware para um processador (DSP TMS320C6711), simulando a saída do
conversor A/D.
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
O simulador gera sinais GPS, provenientes da constelação de satélites, na freqüência intermediária e digitalizados.
Foram utilizados 12 satélites para a simulação.
2. A Freqüência Intermediária
Os satélites GPS transmitem sinais codificados em duas portadoras denominadas L1 e L2. O sinal L1, do i-ésimo
satélite, mostrado na Eq. (1) apresenta a portadora de 1.575,25 MHz modulada pelo código C/A (Coarse ou Clear
Acquisition), pelo código P (Precision) e pelos dados de navegação, com taxas de 1,023 MHz, 10,23 MHz e 50 Hz
respectivamente. O sinal de interesse para a simulação corresponde a componente em fase do sinal L1 que contém o
código C/A.
(
)
L1 i ( w1t ) = 2 Pc Ci [t − τ (t )]⋅ Di [t − τ (t )] cos 2π ( f L1 + f Di )t + θ i
144444444424444444443
Sinal de int eresse
Si ( t )
(
Pc Pi [t − τ (t )]⋅ Di [t − τ (t )] sen 2π ( f L1 + f Di )t + θ i
+
(1)
)
onde, Pc corresponde a potência do sinal recebido, Ci(t) ao código C/A, Di(t) os dados de navegação, Pi(t) ao código P,
fL1 a freqüência da portadora, fDi a freqüência de Doppler.
O sinal L1, após ser recebido pela antena, é processado pela etapa de heterodinagem (Fig. 2).
Figura 2. Processo de heterodinagem.
O sinal proveniente do i-ésimo satélite, representado por Si(f) (domínio da freqüência), é condicionado e deslocado na
freqüência através de um oscilador local de 1.554,17 MHz e um misturador (mixer). O filtro com largura de banda de
2,046 MHz é utilizado para eliminar o termo de freqüências mais altas, resultando na Eq. (2).
Pc Ci [t −τ (t )]⋅ Di [t −τ (t )] ⋅ cos(2π ( f FI + f Di )t + θi − θ FI + θFPF )
(2)
onde, fFI representa a freqüência intermediária, τ define o atraso do sinal recebido, fDi a freqüência Doppler para o
satélite i, θi a fase do sinal entrante, θFI a fase da FI gerada na etapa de heterodinagem e θFPF a fase do filtro.
Após ser filtrado, o sinal apresentado pela Eq. (2) passa por um conversor A/D, com taxa de amostragem de
5 MHz, para digitalizar a freqüência intermediária de 21,25 MHz, fornecendo em sua saída uma FI centrada em
1,25 MHz (sub-amostragem). Este é o valor de FI utilizado pelo simulador.
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
3. O sinal GPS simulado
O sinal simulado para o GPS é um BPSK (binary phase shift keying), composto pela freqüência intermediária com
uma determinada amplitude, modulada pelo código C/A e pelos dados de navegação.
A freqüência intermediária de 1,25 MHz é gerada através de um oscilador controlado digitalmente, DCO (Digital
Controlled Oscillator) de portadora. O código C/A (1,023 MHz) é gerado através do DCO de código. O sinal gerado na
simulação é ilustrado pela Fig. 3.
Figura 3. Composição de sinais para a formação do BPSK (parte inferior da figura). O sinal na parte superior
representa a portadora seguida pelos dados de navegação e o código C/A.
São considerados na simulação o atraso presente no código e o efeito Doppler sobre a portadora e o código,
resultado da velocidade relativa entre satélite e receptor.
3.1. O DCO de Portadora
O oscilador controlado digitalmente (DCO) está sincronizado com a freqüência de amostragem do conversor A/D e
é responsável por gerar o sinal do oscilador local, com valor para a freqüência central de 1,25 MHz. A saída, IOL, do
DCO de portadora é dada pela Eq. (3) e os níveis de amplitude (IOL) para o sinal simulado estão ilustrados na Tabela I.
⎛
⎞
m
I OL = 2 cos⎜⎜ 2π ( f FI + f Di ) + θ i ⎟⎟
f
a
⎝
⎠
(3)
onde, m corresponde ao número da amostra, fa a freqüência de amostragem, fDi a freqüência de Doppler, θi a fase do
sinal e i o i-ésimo satélite.
Tabela I:- Saída do DCO de portadora
Vetor co-seno
(mV)
IOL -1 +1 +2 +2 +1 -1 -2 -2 -1 +1
Para descrever a variação de freqüência (Doppler), são usados passos de freqüência com resolução fina. Essa
resolução é obtida através de um acumulador (registro) de 27 bits, Eq. (4):
f resolução =
f a 5 MHz
=
≅ 37,25290 mHz
2N
2 27
(4)
Pela Tabela I é possível notar as 8 fases para os sinal de FI. O número de fases em cada ciclo é dado pela razão
entre a taxa de amostragem e a freqüência intermediária Eq. (5).
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
fa
5 MHz
=
= 4 fases
f FI 1,25MHz
(5)
A fase do sinal é definida de forma indireta, através da variação da freqüência. Como são geradas 4 amostras em
cada ciclo, o valor para o incremento do contador pode ser determinado. Sendo a capacidade máxima do registro 227
temos, através de Eq. (6), o valor para o passo de incremento.
Inc =
2 27 134217728
=
= 33554432
4
4
(6)
A Fig. 4 ilustra o método para gerar a freqüência intermediária.
Figura 4. Método utilizado para gerar o sinal na FI. (a) diagrama em blocos do somador/acumulador; (b) descrição
do processo acumulativo do contador; e (c) saída do vetor co-seno (mV).
Na Fig. 4 (a) o somador/acumulador é responsável por sinalizar a posição de acesso no vetor co-seno a cada
incremento. Através de apenas um ciclo do co-seno é possível gerar a FI desejada com pouca ocupação de memória.
No correlator existente no receptor GPS são gerados os sinais para FI em fase e quadratura. Para compor o sinal em
quadratura é utilizado o mesmo algoritmo para o vetor seno.
3.2. O código C/A
Os satélites GPS transmitem na mesma freqüência de portadora, assim, para ser possível distinguir os sinais
recebidos no receptor são utilizados os códigos PRN (Pseudo Random Noise), na modulação do sinal. O código PRN é
único para cada satélite (identificação).
O código PRN é também responsável por promover o espalhamento espectral do sinal, tornando possível a
recuperação do sinal, mesmo este estando bem abaixo do ruído (S/N ≈ -20 dB), isto também evita que o sinal GPS, de
abrangência global, interfira com outros sistemas.
A seqüência PRN usada, chamada de código C/A, pertencente à família de códigos Gold (Gold, 1967), é formada
por dois polinômios de ordem 10 que descrevem os geradores G1(t) e G2(t) (Arinc Search Corporation, 1982-2000)
mostrados na Tabela II.
Tabela II:- Polinômios geradores do código PRN e seu estado inicial.
Registro
Polinômio
Estado inicial
G1(t)
1111111111
1 ⊕ x 3 ⊕ x 10
2
3
6
8
9
10
G2(t)
1111111111
1⊕ x ⊕ x ⊕ x ⊕ x ⊕ x ⊕ x
A geração do código C/A (códigos lineares) é comumente descrita através de polinômios da forma:
1⊕ ∑ xi
onde,
∑ significa soma em módulo 2, x
i
(7)
representa o valor da célula na posição dada por i e o termo 1, representa a
realimentação do resultado na primeira célula. Os valores para x são combinados por soma em módulo-2 ( ⊕ ).
O código C/A empregado na modulação da FI é resultado da soma em módulo-2 entre a saída do registrador G1(t)
com uma versão atrasada de G2(t) denominada G2i(t).
O atraso na seqüência G2(t) é obtido através da soma em módulo-2 de duas células do registrador G2(t). Cada par
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
de células usado como saída no registrador G2(t) é identificado por um número (PRN) e determina um único código
C/A (seleção da fase). A Fig. 5 apresenta o algoritmo utilizado para gerar o código.
Figura 5. Gerador do código C/A.
O relógio de 1,023 MHz determina o deslocamento dos registros G1(t) e G2(t), os quais geram em suas saídas duas
seqüências de comprimento 1023 chips 1 . Estas saídas são somadas em módulo-2 para se obter o código C/A, também
de comprimento 1023 e duração de 1 ms. Todas as células do registro são inicializadas com valor 1.
No firmware desenvolvido, os códigos C/A para os 32 satélites foram armazenados em uma matriz 32 x 1023,
denominada code, tornando desnecessário ocupar o tempo de processamento na geração do código.
O DCO de código trabalha de forma semelhante ao DCO de portadora. O somador/acumulador é responsável por
sinalizar a posição de acesso dentro da matriz code, contudo o registro utilizado é de 26 bits, tendo uma resolução dada
pela Eq. (8).
f resolução =
f a 5 MHz
=
≅ 74,505806 mHz
2N
2 26
(8)
3.3. Mensagem de Navegação
Os dados de navegação utilizados para formar a mensagem de navegação são gerados a uma taxa de 50 Hz (período
de 20 ms). A duração de cada período de código C/A é de 1 ms, sendo necessários 20 períodos para cada dado de
navegação. O conjunto de 30 bits forma uma palavra, 10 palavras formam um subquadro e 5 subquadros formam uma
página. A mensagem total é formada por 25 páginas (para conter o almanaque das efemérides). A estrutura da
mensagem de navegação é mostrada na Fig. 6.
Figura 6. O comprimento do código C/A e sua duração; número de códigos C/A na composição do bit de dados;
comprimento da palavra e sua duração. Composição do subquadro e o total de páginas da mensagem de navegação.
1
O termo “chips” é usado neste contexto para diferenciar dos bits de dados das mensagens
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
Os parâmetros dos três primeiros subquadros fornecem a informação mínima necessária para determinação da
posição do satélite. O primeiro deles apresenta as correções do relógio do satélite, além dos indicadores de saúde e o
instante em que os dados foram gerados, já os subquadros 2 e 3 informam os valores de efemérides e suas correções.
O subquadro 4 informa os parâmetros do modelo ionosférico (correção ionosférica), o tempo universal (UT), os
dados de almanaque e saúde para satélites com PRN maior que 25. Os dados de almanaque e saúde para satélites com
PRN de 1 a 24 estão no subquadro 5 (Villalba, 2004).
Os dados de almanaque fornecem as efemérides de todos os satélites, o que permite, dada uma localização,
determinar quais os PRN dos prováveis satélites visíveis serão utilizados para programar os correlatores e dar inicio ao
processo de aquisição do sinal (Carvalho, 2006).
4. Composição do sinal armazenado no buffer
O firmware do simulador foi implementado sobre uma matriz de estrutura de dados com 12 elementos, denominada
SATÉLITE, onde cada elemento corresponde a um sinal transmitido. Assim, para um determinado elemento da matriz
(que corresponde a um sinal do satélite) é possível configurar parâmetros como: código PRN, Doppler, atraso do
código, amplitude do sinal recebido e os dados de navegação.
Com as informações contidas na estrutura é gerado o sinal GPS para cada elemento da matriz. Cada sinal é somado
ao buffer de entrada a cada 1 ms Eq. (9).
K
r ( m) = ∑ si (m ) + n(m)
(9)
i =1
Onde s i (m ) corresponde ao sinal do i-ésimo satélite dado por:
⎡m
⎤
⎡m
⎤
⎛
m
si (m ) = 2 Pc C i ⎢ − τ ⎥ ⋅ Di ⎢ − τ ⎥ cos ⎜⎜ 2π ( f FI + f Di ) + θ i
fa
⎣ fa
⎦
⎣ fa
⎦
⎝
⎞
⎟⎟
⎠
(10)
sendo n(m) o ruído. Nesta etapa não será considerado a presença de ruído no sinal recebido.
A Fig. 7 apresenta a composição do sinal recebido pelo correlator até um número máximo de 12 satélites,
destacando o atraso presente em cada sinal.
Figura 7: Buffer de entrada. São apresentados os valores armazenados no buffer como resultado da soma dos sinais dos
diversos satélites visíveis.
Cada sinal é formado por um vetor de 5000 pontos que são armazenados no buffer de entrada. O ponteiro do sinal
de cada satélite ilustra a variação da posição em que o sinal é armazenado ao longo do buffer de entrada para intervalos
de tempo diferentes.
O buffer, após armazenar o sinal gerado para cada um dos elementos da matriz de estrutura SATÉLITE, é acessado
pelo correlator, o qual dará início ao processo de aquisição e rastreamento como mostrado na Fig 8.
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
Figura 8. Divisão do tempo de processamento, entre o simulador de sinal GPS e o correlator.
Terminado o tempo de 1 ms de processamento para o correlator, o simulador assume o controle do processador
preenchendo o buffer com 12 sinais para depois, novamente, transferir o controle do processador para o correlator e
assim sucessivamente.
5. Resultados obtidos através do simulador
5.1. Resultados gráficos
A Fig. 9 apresenta graficamente os resultados para os sinais gerados pelo simulador em função do tempo e da
freqüência. Como resultado final é apresentado o buffer de entrada com os sinais de 12 satélites.
Figura 9. Gráficos obtidos através do simulador do sinal GPS. São apresentados os gráficos no domínio do tempo (em
amarelo) e da freqüência (em verde).
Como pode ser observado o buffer de recepção aparentemente contém apenas ruído. Para o espectro do sinal
simulado é possível notar a largura de faixa de aproximadamente 2 MHz.
5.2. Resultados com relação ao tempo de processamento
O Timer 0 do processador aloca 1 ms do núcleo do processador para cada um dos sinais simulados, desse modo, o
tempo despendido na geração de um sinal simulado não pode ser superior a 1 ms para não sobrepor ao tempo destinado
a outra simulação.
Algumas versões do código fonte foram criadas para gerar o sinal BPSK, buscando o melhor algoritmo para o
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
processamento. Valores de tempo da simulação para cada satélite são apresentados na Tabela III:
Tabela III: - Valores médios de tempos para 12 satélites.
Contador
Total
Max Média
Processo
(inc)
(ms)
(ms)
(ms)
Satélite_1_swi
4906
2731,45 0,64
0,56
Satélite_2_swi
4906
2316,98 0,49
0,47
Satélite_3_swi
4906
2316,70 0,49
0,47
Satélite_4_swi
4906
2261,12 0,48
0,46
Satélite_5_swi
4906
2265,13 0,48
0,46
Satélite_6_swi
4906
2273,14 0,48
0,46
Satélite_7_swi
4906
2254,58 0,48
0,46
Satélite_8_swi
4906
2273,38 0,49
0,46
Satélite_9_swi
4905
2356,59 0,50
0,48
Satélite_10_swi
4905
2281,82 0,49
0,47
Satélite_11_swi
4905
2319,22 0,49
0,47
Satélite_12_swi
4905
3010,88 0,64
0,61
5. Conclusão
O simulador é capaz de representar de forma satisfatória os sinais provenientes da constelação de satélites, gerando
atrasos no código e Doppler independente para cada sinal. As variações de Doppler independentes permitem simular o
deslocamento relativo do receptor.
Os tempos de processamento são adequados. É possível gerar o sinal GPS na FI de 1,25 MHz, cumprindo o
requisito de tempo de 1 ms para uma seqüência de 1023 chips e simular, na FI, o sinal proveniente de uma constelação
com 12 satélites com um tempo total de 6,15 ms.
Algoritmos que alteram os parâmetros dos sinais podem ser modificados, permitindo variações bruscas, lineares ou
não do Doppler, simulando os movimentos relativos do receptor em relação ao satélite, podem também ser utilizados
para testar e validar a capacidade de rastreamento para um dado algoritmo no correlator.
O surgimento, bem como o desaparecimento de satélites (código PRN) representando a dinâmica do sistema pode
ser utilizado para testar a capacidade de aquisição do receptor frente a valores de amplitudes diferentes do sinal e da
presença de multicaminho.
Através do simulador de sinais GPS é possível desenvolver e testar algoritmos que serão utilizados na
implementação de um correlator para o receptor GPS.
6. Agradecimentos
Este trabalho tem o apoio financeiro da FINEP (Financiadora de Estudos e Projetos) através do Projeto Pseudosatélite sob contrato FINEP 01.04.0441.00.
7. Referências
Arinc Research Corporation, 1983-2000, ICD-GPS-200: navstar GPS space segment / navigation user interfaces. El
Segundo, p.28.
Carvalho, F. A. e F. Walter, 2006, “Receptor GPS por Software em Tempo Real. Parte II: Correlator”, Anais do 12O
Encontro de Iniciação Científica e Pós-Graduação do ITA – XII ENCITA / 2006, São José dos Campos, SP, Brasil,
Out, 16 a 19.
Gold, Robert, 1967, “Optimal binary sequences for spread spectrum multiplexing”. IEEE Transactions on Information
Theory, v.IT-13, p.619-621.
Tsui, J. B., 2000, “Fundamentals of global positioning system receivers: a software approach”, Wiley Interscience
Publication, NY.
Villalba, L. F., 2004, “Receptor GPS por Software”. Tese de mestrado do curso de pós-graduação em Engenharia
Eletrônica e Computação – Telecomunicações do ITA, São José dos Campos, SP, jun.
Download

receptor gps por software em tempo real. parte i: geração de sinais