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 II: CORRELATOR
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 arquitetura geral de um receptor GPS, destacando a etapa de correlação do sinal é apresentada. São descritos os
algoritmos utilizados no projeto e o desenvolvimento do correlator GPS para rastrear os sinais provenientes de vários satélites em
tempo real. O correlator foi implementado no DSP TMS320C6711 da Texas Instruments utilizando o ambiente de programação
Code Composer Studio. As etapas de aquisição, confirmação, alinhamento e rastreamento, na qual é possível extrair os dados de
navegação, são mostradas. Alguns algoritmos foram primeiramente testados utilizando como apoio o Matlab. Para concluir são
apresentados os tempos de processamento obtidos, dentro dos limites exigidos, e os gráficos gerados, ilustrando os sinais em
diferentes pontos do correlator.
Palavras chave: correlator, GPS, DSP, TMS320C6711 e receptor GPS.
1. Introdução
A arquitetura de um receptor GPS típico pode ser apresentada através de 4 blocos básicos: a Heterodinagem
(incluindo a parte de RF), o Conversor A/D (mais o CAG), o Correlator (N canais) e o Processamento dos dados de
navegação, incluindo a interface (Fig. 1).
Figura 1. Diagrama em blocos de um receptor GPS típico. Os blocos em azul correspondem à etapa de heterodinagem,
seguida pelo conversor A/D sinalizado em verde, a etapa de correlação ilustrada em amarelo é composta por N canais
operando paralelamente e por fim, o processamento da mensagem de navegação, apresentado em laranja.
Os sinais GPS recebidos de todos os satélites vistos são captados por uma antena receptora circularmente
polarizada à direita (RHCP). O sinal recebido é amplificado por um pré-amplificador de baixo ruído e alto ganho que
determina a figura de ruído (NF) do receptor.
O sinal RF após ser condicionado e amplificado passa pela etapa de heterodinagem, a qual desloca a freqüência da
portadora para um valor de freqüência intermediária, FI, por meio de um oscilador local, cuja freqüência é sintetizada a
partir de um oscilador de referência (em geral nos receptores GPS, esta hetorodinagem é feita em dois ou até três
estágios).
No processo de heterodinagem são geradas uma faixa inferior e outra superior do sinal GPS, sendo que depois de
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
filtrada apenas a primeira faixa é utilizada. As variações de Doppler e os códigos PRN (Pseudo Random Noise) são
preservados após esta etapa.
A FI é então amostrada, quantificada em vários níveis e codificada por um conversor A/D (taxa de 5 MHz),
responsável por transformar a FI analógica em digital, neste ponto, o sinal digitalizado está pronto para ser processado
nos N canais disponíveis, onde ocorrerão as etapas de aquisição e rastreamento. Nestas etapas são confirmados os
satélites visíveis e extraídos os dados de navegação. As mensagens que contém os dados de navegação ao serem
processadas permitem determinar a posição do receptor que é então apresentado de forma desejada através de uma
interface com o usuário.
2. Correlator GPS
O firmware do correlator desenvolvido para o DSP TMS320C6711 foi elaborado sobre uma matriz de estruturas
com doze elementos chamada CANAL. Cada elemento desta matriz corresponde a um canal do receptor onde são
armazenadas informações provenientes das etapas de processamento.
O correlator realiza quatro etapas de processamento: Aquisição, Confirmação, Alinhamento e Rastreamento, cada
uma delas trabalhando com dois DCOs que são responsáveis por gerarem os sinais internos. O DCO de portadora gera a
FI em fase e quadratura centrada em 1,25 MHz, enquanto o DCO de código gera o sinal PRN (código C/A com taxa de
1,023 MHz) sincronizado com o relógio do satélite.
2.1. Estados do canal
Cada canal realiza as quatro etapas de processamento, sendo que a seqüência de execução depende dos resultados
obtidos no processamento de cada uma delas e das condições impostas para validação de cada etapa.
A Fig. 2 ilustra o chaveamento entre os diferentes processos para um número variável de canais que pode chegar a
12. No final de cada uma das etapas de processamento o valor para a variável Estado, pertencente ao canal, é alterado
em função dos resultados obtidos, assim, em cada 1 ms é verificado o estágio do processamento para cada um dos
canais.
Figura 2. Chaveamento entre as etapas de processamento. Estado = 1 (Aquisição), Estado = 2 (Confirmação), Estado =
3 (Alinhamento), Estado = 4 (Rastreamento).
2.2. Aquisição do sinal GPS
Em função das características dadas pelos códigos Gold (Gold, 1967) é possível identificar os satélites recebidos,
mesmo estes transmitindo na mesma freqüência de portadora. Os códigos PRN (no caso o código C/A) apresentam
valores de correlação cruzada muito inferiores ao máximo de correlação obtido entre códigos C/A idênticos. As
correlações são dadas através das Eqs. (1) e (2).
R ii (n ) =
R ij (n ) =
N −1
∑ C (m )C (m + n )
m =0
i
i
(1)
N −1
∑ C (m )C (m + n )
m=0
i
j
(2)
onde, Ci(m) e Cj(m) representam os códigos C/A digitalizados e n o atraso presente nestes. No caso dos códigos C/A a
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
amplitude de correlação cruzada é próxima de zero, enquanto a autocorrelação é 1023 (Tabela I).
Tabela I- Resultados teóricos para os valores de correlação cruzada normalizada.
Nível de correlação cruzada
Probabilidade de ocorrência
− 2 (n + 2 ) / 2 + 1 / 1023 ≅ − 0,064
12,5%
75%
-1/1023 ≅-0,01
(n + 2 ) / 2
2
− 1 / 1023 ≅ 0,062
12,5%
[
]
[
]
Os códigos C/A para os 32 satélites são gerados apenas uma vez e armazenados em um arquivo, tornando
desnecessário gerá-los a cada inicialização do correlator (receptor).
A aquisição é a primeira etapa de processamento no correlator. Identificando através do almanaque (dados das
efemérides de todos os satélites) os satélites visíveis, e portanto os PRNs, cada canal está associado a um satélite.
A seguir, para cada canal, é realizada simultaneamente a correlação entre o sinal digitalizado pelo conversor A/D
(simulador desenvolvido, Parte I) e o sinal em fase e quadratura gerado pelo DCO. O processo de correlação permite
identificar o máximo de semelhança entre os sinais, através do seu maior valor de pico. Durante este processo, o código
e a freqüência do sinal interno são deslocados até que haja o melhor casamento com o sinal recebido.
A freqüência da portadora pode ser deslocada até um valor ± 10 kHz da freqüência central devido ao efeito
Doppler, logo, é necessário que o DCO de portadora do correlator modifique sua freqüência para acompanhar tais
variações. Na etapa de aquisição o DCO modifica sua freqüência central com passos de 1 kHz até cobrir a faixa 10 kHz
ou até que o valor de correlação ultrapasse um limiar pré-determinado.
O alinhamento do código, para a taxa de amostragem de 5 MHz, pode ser realizado com passo de 1 amostra,
resultando em 5000 possíveis deslocamentos. O processo de alinhamento do código ocorre até que o valor encontrado
para a amplitude de correlação seja superior ao limiar de detecção pré-definido (supondo que o satélite continue
visível).
O estágio de aquisição é então um processo bidimensional, buscando encontrar o alinhamento entre o código C/A e
a freqüência intermediária recebida com o código C/A e a FI gerados por um determinado canal do correlator.
A Fig. 3 ilustra através de um gráfico 3D elaborado em Matlab, o processo de aquisição, aproveitando os recursos
gráficos desta plataforma. O pico de máxima correlação permite identificar o início do código C/A.
Figura 3. Resultado do processo de correlação. Busca bidimensional. Atraso de 1000 amostras e Doppler de 1 kHz.
Os métodos de aquisição usados em geral são: da FFT; convencional; e de atraso e multiplicação (Tsui, 2000). O
método escolhido foi o convencional, por ser este o mais fácil de implementar em hardware.
Neste método o processo de correlação realiza a operação produto/soma ponto a ponto entre cada amostra do sinal
recebido com o sinal gerado internamente. No caso em que os sinais estão parcialmente alinhados o resultado da
correlação terá um valor alto de amplitude. Para sinais desalinhados em mais de 977 ns (código C/A) a correlação é
mínima em função das características do código C/A.
Caso o máximo de correlação, determinado através do limiar, não seja alcançado, o ponto de referência (ponteiro),
onde se inicia o processo de produto/soma é adiantado no buffer de entrada em uma amostra (ou célula). Este processo
ocorre 2500 para passos de duas amostras ou 5000 vezes para passos de uma amostra.
Os resultados da etapa de aquisição são: as estimativas de Doppler e dos atrasos do código. Estes valores são
armazenados na estrutura CANAL para poderem ser utilizados nas próximas etapas.
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
2.3. Confirmação do sinal
Devido aos ruídos presentes no meio, destacando o ruído térmico, é necessária uma etapa de processamento
destinada a evitar que ocorra uma falsa aquisição. O algoritmo de detecção Tong (Kaplan, 1996) apresentado pelo
diagrama de bloco, Fig. 4, foi implementado com este propósito.
Figura 4. Diagrama de blocos para o Detector de Busca Tong para a etapa de confirmação.
Os valores resultantes da correlação em fase (RI) e quadratura (RQ) ao serem inseridos no algoritmo de detecção de
envoltória, fornecem a amplitude máxima de correlação.
O valor máximo de correlação é dado pelo cálculo da envoltória ( REnv = RI 2 + RQ 2 ), contudo este cálculo eleva
consideravelmente a carga computacional. Para otimizar o processamento foi utilizada, dentre as aproximações RSS,
Robertson e JPL, a aproximação JPL por apresentar o menor tempo de processamento e porcentagem de erro. (Villalba,
2004).
Esta máxima amplitude é comparada com um valor pré-determinado (limiar especificado) e caso a amplitude seja
maior que este valor, o contador k será incrementado de 1 (k = k + 1), do contrário este é decrescido de 1 (k = k - 1). Se
o valor de k alcançar o valor estipulado L (limiar de confirmação) então o sinal é declarado como presente, por outro
lado se chegar a zero, o sinal é declarado ausente e o canal retorna para o processo de aquisição com o passo de busca
na célula seguinte.
Para evitar que o canal entre em “loop” na etapa de Confirmação, por não satisfazer a nenhuma das condições (k =
L ou k = 0), é estabelecido um contador para o número de envoltórias calculadas, assim, caso este número alcance o
valor estipulado, o estado do canal é alterado para 1, levando o processamento novamente para a etapa de Aquisição.
2.4. Alinhamento do sinal
O processo de aquisição identifica de forma grosseira tanto o valor para freqüência Doppler como também o atraso
no código. O valor para freqüência Doppler estimada pode diferenciar da freqüência Doppler real em até 500 Hz devido
ao passo de busca de 1 kHz. Para o código, o alinhamento estimado pode diferir em relação ao código recebido em até
duas amostras para um passo de código de meio chip (duas amostras aproximadamente). No entanto esses valores não
são suficientes para fazer o rastreamento, mas necessários para um ajuste fino. Este ajuste fino denominamos de
alinhamento e é descrito a seguir.
O alinhamento do código é obtido através da malha de código onde são feitas correlações do sinal recebido com
versões para um dado código C/A denominadas de: ADIANTADO, ALINHADO e ATRASADO (Fig. 5)
Figura 5. Correlação: Versões ADIANTADO, ALINHADO e ATRASADO de um dado PRN.
Através da relação entre as amplitudes destas correlações é possível determinar se o sinal ALINHADO deve ser
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
adiantado ou atrasado.
O alinhamento para a FI é feito na malha de portadora (Fig. 6), onde se dará a correlação do sinal de entrada com
sinal em fase e quadratura compondo os valores de amplitude I(m) e Q(m).
Figura 6. Processo de demodulação na etapa de alinhamento do sinal.
Os filtros, após os misturadores (mixer), são utilizados para mitigar freqüências indesejadas. O resultado do
processo é dado por:
) m
)⎞
⎛
⎡m
⎤
+ θ i − θ FI + θ FPF + θ ⎟⎟
I (m ) = Pc ⋅ Di ⎢ − τ ⎥ cos⎜⎜ 2π f Di − f Di
fa
⎝
⎣ fa
⎦
⎠
(
)
(3)
(
)
(4)
) m
)⎞
⎡m
⎤
⎛
Q(m) = Pc ⋅ Di ⎢ − τ ⎥ sen⎜⎜ 2π f Di − f Di
+ θ i − θ FI + θ FPF + θ ⎟⎟
fa
⎠
⎝
⎣ fa ⎦
onde, m corresponde ao número da amostras, fa representa a freqüência de amostragem, τ define o atraso do sinal
)
recebido, fDi ao Doppler real para o satélite i, f Di ao Doppler estimado pelo receptor, θi para fase do sinal entrante, θFI
)
para fase da FI gerada na etapa de heterodinagem, θFPF para fase do filtro e θ para a estimativa de fase do sinal interno.
As amplitudes para as correlações em fase (RI) e quadratura (RQ) são apresentadas Eq.(5) e Eq.(6).
N −1
R I = ∑ I (m )
(5)
m =0
N −1
RQ = ∑ Q(m)
(6)
m=0
sendo N, o número de amostras em 1ms.
O alinhamento da FI interna com o sinal recebido é feito pelo discriminador de portadora. O discriminador calcula
a diferença de fase entre períodos consecutivos de integração. O cálculo do ângulo de fase é realizado através da
tangente inversa da razão entre a componente em quadratura (RQ) e a componente em fase (RI) do sinal.
Na implementação do firmware foi utilizada a função atan2f (RQ, RI) para o discriminador, a qual utiliza o sinal dos
argumentos para determinar o quadrante do resultado (ângulos entre –π e π).
As Eqs. (7), (8) e (9) descrevem o processo;
f =
θ m = a tan 2 f (Qm , I m )
(7)
θ n = a tan 2 f (Qn , I n )
(8)
θn −θm
2 π (n − m )
(9)
para n > m
onde, f é a freqüência de ajuste, In e Im os sinais em fase, Qn e Qm os sinais em quadratura e θn e θm os ângulos obtidos.
Após a etapa de alinhamento do sinal o erro para a portadora FI está na ordem de 10 Hz e para o código em torno
de 100 ns sendo o intervalo entre amostras de 200 ns.
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
2.5. Rastreamento do sinal
Uma vez executado o processo de alinhamento, a etapa de rastreamento permite a extração das mensagens de
navegação utilizadas na determinação da posição do usuário, contudo, em função da dinâmica do sistema, o sinal
gerado internamente perde gradualmente seu alinhamento em código e em freqüência com o sinal recebido.
Para manter este alinhamento são utilizadas duas malhas de correção, um para a portadora e outro para o código,
fazendo com que o sinal interno fique sempre alinhado com o recebido enquanto os dados são extraídos.
Tanto a malha do código quanto a da portadora utilizam como parâmetros as informações armazenadas nos canais,
durante as etapas anteriores, para configurar o DCO de portadora e o de código. A Fig. 7 ilustra a etapa de rastreamento.
Figura 7. Etapa de rastreamento do sinal de entrada. As linhas azuis e vermelhas destacam as malhas de código e de
portadora respectivamente. As linhas em preto sinalizam o sinal recebido e as linhas na cor cinza mostram os sinais
gerados internamente.
O sinal de entrada, Si(m), corresponde aos valores presentes no buffer de entrada (Carvalho, 2006). Ao entrar na
etapa de rastreamento, o sinal Si(m) é misturado com o sinal gerado pelo DCO de portadora (mixer), donde é retirada a
freqüência intermediária.
Após o misturador o sinal resultante é correlacionado com 3 versões para um dado PRN: ADIANTADO,
ALINHADO e ATRASADO. Os resultados destas correlações (produto/soma) funcionam como parâmetros de entrada
para o discriminador de código e de portadora.
O discriminador de código determina se o código ALINHADO deve ser adiantado ou atrasado, enquanto o
discriminador de portadora verifica o ajuste necessário para a freqüência. Estes resultados (medidas de compensação)
obtidos pelos discriminadores servem como parâmetros de entrada para os DCOs de código e portadora.
Com base nos novos parâmetros recebidos, os DCOs geram os sinais contendo os ajustes de fase para o código e
para a portadora.
O código ALINHADO é utilizado pela malha da portadora para extrair o código C/A do sinal recebido para que
posteriormente seja feita a correção da fase. Tal correção é também feita utilizando o discriminador atan2f(RQ, RI),
presente na fase de alinhamento.
Na malha de portadora, embora seja o código C/A retirado, a FI recebida permanece modulada pelos dados de
navegação, os quais promovem a inversão de 180º na fase toda vez que houver mudança no bit de dados, como ilustra a
Fig. 8.
Figura 8. Inversão da fase do sinal da portadora devido aos dados de navegação.
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
Os bits de dados podem ser recuperados utilizando um algoritmo de detecção desta inversão. Como mostrado na
Fig. 9, a cada 20 ms de sinal recebido (20 seqüências de código C/A) é feita a verificação da diferença de ângulo
encontrada em amostras consecutivas de código. Caso haja uma diferença de ângulo maior que 90º ocorre a inversão
dos bits de dados.
Figura 9. Algoritmo para detecção dos bits de navegação.
3. Resultados gráficos e tempos de processamento
São apresentados os gráficos obtidos para a correlação utilizando 4 canais trabalhando paralelamente sobre um
buffer com sinais provenientes de 12 satélites (Fig. 10)
Figura 10. Sinais gerados pelo canal 1 e o sinal presente no buffer de recepção. A amplitude de pico para a FI e para o
código são respectivamente 2 mv e 1 mv. O eixo dos tempos está representado através do número de amostras e também
pelo tempo entre amostras de 200 ns. O pico de correlação é da ordem de 104 (não normalizado).
A Fig. 11 apresenta os resultados dos tempos de execução para o simulador de sinal GPS representado através dos
satélites satélite_1_SWI à satélite_12_SWI vistos pelo receptor, bem como os tempos gasto no processo da correlação
para 4 canais, observando os requisitos de tempo (1ms) para todos os processos cumpridos.
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
Figura 11. Resultados dos tempos obtidos para o processo de correlação e geração do sinal GPS.
Na primeira coluna são listados os processos em análise (simulador e correlator), a segunda coluna apresenta o
número de vezes em que cada processo entrou em operação. A terceira coluna mostra o tempo total gasto para executar
o número total de vezes que este foi chamado. A quarta coluna mostra o tempo máximo que foi necessário para
executar um dado processo e a última coluna apresenta a média do tempo gasto.
A Fig. 12 (a) mostra a janela de acompanhamento das etapas de processamento em tempo real para cada canal,
apresentando o número do PRN identificado e o seu canal. A Fig. 12 (b) apresenta a porcentagem de utilização dos
recursos do núcleo do DSP (unidades lógicas e aritméticas, unidades de endereçamento, unidades de multiplicação,
deslocadores de registro, registro de propósito geral) no decorrer do tempo.
(b)
(a)
Figura 12. (a) Tela de acompanhamento das etapas de processamento no correlator para cada um dos canais. (b)
Gráfico da estimativa do uso do núcleo do DSP.
A Fig. 13 apresenta o gráfico de execução dos diversos processos em função do tempo, cada barra sinaliza o
processo que está em andamento, cada um separado pelo tempo de 1ms. Pelo gráfico de execução é também possível
verificar o cumprimento do requisito de 1 ms destinado a cada processo. Caso um dos processos demorasse mais de
1ms, resultaria na sobreposição das barras.
Figura 13. Tela de acompanhamento dos processos em andamento.
Anais do XII ENCITA 2006, ITA, Outubro, 16-19, 2006
,
4. Conclusões
Utilizando o gerador de sinais (Carvalho, 2006), foi possível identificar os PRNs presentes no sinal simulado,
verificando para a etapa de Aquisição um erro da estimativa de aproximadamente 400 ns para atraso no código e um
erro na estimativa de Doppler de até 500 Hz.
A etapa de Confirmação do sinal pode ser observada ficando sua validação para testes com o ruído inserido no
sinal.
A etapa de Alinhamento do sinal foi validada apresentando um erro, para a estimativa de Doppler, menor que 10
Hz e um erro máximo para o alinhamento do código de 100 ns.
O processo de aquisição, confirmação e alinhamento estão cumprindo os requisitos de tempo de 1 ms
(correspondendo a 1.023 chips) para 4 canais trabalhando paralelamente.
O próximo passo consiste em otimizar o rastreamento, simular o sinal na presença de ruído e analisar o
desempenho das diferentes etapas do processo.
5. Agradecimentos
Este trabalho recebe o apoio financeiro da FINEP (Financiadora de Estudos e Projetos) através do Projeto Pseudosatélite sob contrato FINEP 01.04.0441.00.
6. Referências
Carvalho, F. A. e F. Walter, 2006, “Receptor GPS por Software em Tempo Real. Parte I: Geração dos Sinais”, 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.
Kaplan, E.,1996, “Understanding GPS: principles and applications”, Artech House Publishers, MA.
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 ii: correlator