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.