BRPI0419233B1 - método para criar um conjunto de códigos de espalhamento para uso em um sistema de navegação por satélite, e, sinal de satélite - Google Patents

método para criar um conjunto de códigos de espalhamento para uso em um sistema de navegação por satélite, e, sinal de satélite Download PDF

Info

Publication number
BRPI0419233B1
BRPI0419233B1 BRPI0419233-8A BRPI0419233A BRPI0419233B1 BR PI0419233 B1 BRPI0419233 B1 BR PI0419233B1 BR PI0419233 A BRPI0419233 A BR PI0419233A BR PI0419233 B1 BRPI0419233 B1 BR PI0419233B1
Authority
BR
Brazil
Prior art keywords
bit
code
codes
bit patterns
bit pattern
Prior art date
Application number
BRPI0419233-8A
Other languages
English (en)
Inventor
Jon Olafur Winkel
Original Assignee
The European Union
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by The European Union filed Critical The European Union
Publication of BRPI0419233A publication Critical patent/BRPI0419233A/pt
Publication of BRPI0419233A8 publication Critical patent/BRPI0419233A8/pt
Publication of BRPI0419233B1 publication Critical patent/BRPI0419233B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J13/00Code division multiplex systems
    • H04J13/10Code generation
    • H04J13/102Combining codes
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S19/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/01Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/02Details of the space or ground control segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B2201/00Indexing scheme relating to details of transmission systems not covered by a single group of H04B3/00 - H04B13/00
    • H04B2201/69Orthogonal indexing scheme relating to spread spectrum techniques in general
    • H04B2201/707Orthogonal indexing scheme relating to spread spectrum techniques in general relating to direct sequence modulation
    • H04B2201/70715Orthogonal indexing scheme relating to spread spectrum techniques in general relating to direct sequence modulation with application-specific features
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J13/00Code division multiplex systems
    • H04J13/16Code allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Position Fixing By Use Of Radio Waves (AREA)
  • Radio Relay Systems (AREA)

Abstract

MÉTODOS PARA CRIAR UM CONJUNTO DE CÓDIGOS DE ESPALHAMENTO PARA USO EM UM SISTEMA DE NAVEGAÇÃO POR SATÉLITE, RECEPTOR, DISPOSITIVO DE MEMÓRIA REMOVÍVEL, SATÉLITE, SINAL DE SATÉLITE, APARELHO PARA USO COMO PARTE DE UM SISTEMA DE NAVEGAÇÃO POR SATÉLITE, E, MÉTODOS PARA OPERAR UM RECEPTOR E UM SATÉLITE Uma modalidade da presente invenção fornece um método de criar um conjunto de códigos de espalhamento para uso em um sistema de navegação por satélite compreendendo uma constelação de satélites. A cada satélite na constelação é para ser alocado um código de espalhamento do conjunto de códigos de espalhamento . Método compreende gerar um conjunto inicial de padrões de bit (105), onde cada padrão de bit representa um código de espalhamento potencial, e efetuar um processo de otimização no conjunto inicial de padrões de bit (110). O processo de otimização modifica pelo menos alguns dos padrões de bit no conjunto inicial para criar um conjunto final de padrões para uso como o conjunto de códigos de espalhamento (115) para o sistema de navegação por satélite. Receptores que suportam o sistema de navegação por satélite incorporam o conjunto final de padrões de bit para uso em captura de sinal e determinação de posição.

Description

Campo da Invenção
A presente invenção diz respeito não somente à geração, como também ao uso de um conjunto de códigos de espalhamento para um sistema de navegação por satélite, no qual a cada satélite é alocado um ou mais código(s) de espalhamento.
Fundamentos da Invenção
Sistemas de navegação por satélite se tornaram crescentemente importantes em uma ampla gama de aplicações, incluindo dispositivos portáteis para determinação de posição, suporte de navegação para uso em automóveis, e assim por diante. O principal sistema de navegação por satélite em serviço na atualidade é o sistema de posicionamento global (também conhecido por GPS), operado pelo Departamento de Defesa dos Estados Unidos da América. Vendas em escala mundial de equipamento de sistema de posicionamento global (GPS) alcançaram próximo a 3,5 bilhões de dólares em 2003, e esta quantia é esperada crescer constantemente ao longo dos próximos anos em seguida. Um sistema de navegação por satélite de uma empresa correspondente Europeia, denominada de Galileo, está planejado para lançamento e disponibilidade de serviços mais tarde nesta década.
Um sistema de navegação por satélite desse tipo compreende uma constelação de satélites que, cada qual, transmite um ou mais sinais para a terra. Os componentes básicos de um sinal de satélite constituem um código de espalhamento (também referenciado como um código de posicionamento, sincronização ou alcance), o qual é combinado com os dados de navegação. A combinação resultante é então modulada em uma portadora numa frequência estabelecida para a transmissão para a terra. Em alguns casos, múltiplos sinais (referenciados como canais) poderão ser modulados em uma portadora única através de alguns esquemas de multiplexação apropriados. Em adição, cada satélite geralmente transmite em frequência múltiplas, que pode ajudar a compensar por qualquer distorção atmosférica.
O componente do código de espalhamento de um sinal de satélite tipicamente compreende uma pré-determinada sequência de bits (algumas vezes referenciada como “chips”) e é usado para efetuar duas tarefas principais. Primeiramente, o código de espalhamento fornece um mecanismo de sincronização para permitir um receptor sintonizar em um sinal de satélite. Assim sendo cada satélite (e tipicamente cada transmissão de canal proveniente daquele satélite) tem seu próprio código de sincronização. Quando um receptor é primeiramente ligado, ele não conhece que sinais de satélite podem ser recebido, já que certos satélites na constelação estarão abaixo do horizonte para aquela localização particular naquele tempo em particular. O receptor usa os códigos de sincronização para travar em um sinal proveniente de um primeiro satélite. Uma vez que isso é feito, os dados de navegação no sinal podem ser acessados. Isto então fornece dados efêmeros para ou outros satélites na constelação, e permite aos satélites restantes que são visíveis ao receptor serem alcançados relativamente rapidamente.
A segunda principal tarefa de um código de espalhamento é fornecer uma distância estimada do satélite ao receptor, baseada no tempo que o sinal leva para ir do satélite para o receptor, que pode ser expresso como: c (Tr -Ts),onde: c é a velocidade da luz (conhecida, sujeita a efeitos da ionosfera, etc), Ts é o tempo de envio do satélite, que é codificado no próprio sinal, e Tr é o tempo de recepção do sinal no receptor.
A posição do receptor pode então ser determinada em espaço tri-dimensional usando um processo de trilateração, dada as posições conhecidas dos satélites (como especificada nos seus dados de navegação). Em teoria, isto pode ser efetuado com informação de sinal de um mínimo de três satélites. Em prática, contudo nós podemos escrever TR = TM + O, onde TMé o tempo medido de recepção no receptor, e Oé o desvio entre o relógio do receptor e o relógio do satélite, que é geralmente desconhecido, exceto por receptores especializados. Isto então implica que informação de sinal é obtida de pelo menos um satélite adicional para compensar pelo desvio de tempo desconhecido no receptor. Se sinais de outros satélites estão disponíveis, uma determinação de posição estatística pode ser efetuada usando qualquer algoritmo apropriado tal como quadrados mínimos. Isto pode também fornecer alguma indicação do erro associado com uma posição estimada.
Um parâmetro importante para o código de espalhamento é a taxa de bit na qual o código de espalhamento é transmitido, já que por sua vez isto controla a exatidão com que a determinação de posição pode ser feita. Por exemplo, com uma taxa de bit de 1 MHz, cada bit representa um tempo de viajem da luz de 300 metros. A exatidão de posicionamento é então determinada por como exatamente o desvio de fase entre o satélite e o receptor pode ser julgado por um bit único. Isto é geralmente dependente do ruído no sistema. Por exemplo, se o desvio de fase pode ser medido para uma exatidão de 90 graus (π/2), isto corresponde a uma determinação de posicionamento de 75 metros. Será apreciado que tendo uma mais alta taxa de bit para o código de espalhamento, permite determinação de posição mais exata a ser feita.
Um outro parâmetro importante para o código de espalhamento é seu comprimento total. Em outras palavras o número de bits ou chips no código de espalhamento antes que se repita. Uma razão para isso e que o comprimento finito do código de espalhamento pode conduzir a uma ambiguidade na determinação de posição. Por exemplo, assuma que a taxa de bit é 10 MHz e o comprimento total da sequência de bit é 256 bits, que, por conseguinte corresponde ao tempo de viajem da luz de 7,68 km. A medição de distância do satélite para o receptor não é unicamente especificada, mas melhor, pode somente ser expressa como 7,68N + D km, onde d é determinado pelo tempo relativo do código de espalhamento como transmitido em todas as direções e como recebido, mas Né um inteiro desconhecido. Há várias maneiras, na qual a ambiguidade como para o valor de N pode ser resolvido, incluindo sinais usando sinais de um largo número de satélites, ou usando conhecimento de uma posição aproximada derivada de algumas outras fontes. Uma abordagem comum é relacionar a fase do código com a extremidade de bit do bit de dados de navegação (este processo é chamado, sincronização de bit), e também relacionar a extremidade do bit com o tempo de semana (ToW) contido nos dados de navegação transmitidos pelos satélites.
Será notado que aumentando o comprimento das repetições para o código de espalhamento ajuda a reduzir problemas com determinações de distância ambíguas. Um comprimento mais alto para o código de espalhamento também fornece melhor separação dos sinais de fontes diferentes, e aumenta robustez contra interferência. Por outro lado, tendo um comprimento de repetição mais longo para o código de espalhamento pode retardar a obtenção inicial do sinal, assim como requerer mais capacidade de processamento dentro do receptor. Uma estratégia conhecida para agir contra este problema é usara um código de espalhamento com hierarquia baseado em códigos primários e secundários. Se nós assumimos que o código primário tem N1 bits e o código secundário tem N2 bits, então os primeiros N1 bits do código de espalhamento total correspondem a sequência primária resultante de uma operação de OR exclusivo com os primeiros N1 bits do código secundário, os próximos N1 bits do código de espalhamento compreende uma repetição dos N1 bits do código primário, desta vez resultante de uma operação de OR exclusivo com o segundo bit do código secundário, e assim vai. Isto dá um comprimento de repetição total para o código de N1 x N2. Contudo, o comprimento de repetição para propósitos de sincronização é somente N1, já que o código primário ainda dará um não respectivo pico de correlação do valor do bit do código secundário (isto irá precisamente trocar o sinal do pico de correlação).
Os códigos de espalhamento do GPS são implementados usando registros de deslocamento de realimentação lineares (LFSRs), nas quais saídas selecionadas de um registro de deslocamento de N estágios são interceptadas e realimentadas na entrada. A conexão de realimentação dentro do LFSR pode ser representada com um polinômio de ordem N, através do qual a operação de um LFSR pode ser completamente especificada por seu ajuste inicial e polinomial do LFSR.
GPS usa um subconjunto de LFSRs conhecido como códigos Gold que tem certas propriedades matemáticas especiais. Uma dessas é que eles geram uma saída de um ruído pseudo-randômico um comprimento de repetição máximo de em 2N- 1, tal que um relativamente compacto LFSR pode gerar uma saída com um comprimento de repetição longo. Códigos Gold também tem boas propriedades de auto-correlação que suporta posicionamento exato; Em particular, a função de auto-correlação tem um pico no deslocamento de tempo zero bem definido e é relativamente pequeno para todos outros (i. e., não zero) deslocamentos de tempo. É também possível selecionar um conjunto de códigos Gold que tem boas propriedade de correlação cruzada, através das quais a função de correlação cruzada entre códigos diferentes é conservada relativamente pequena. Isto é importante para obtenção de sinal, já que ajuda a prevenir um código de sincronização de um satélite de ser acidentalmente mal interpretado por um código de sincronização de um outro satélite. Um critério prático importante adicional para um código de espalhamento é ter número iguais (ou proximamente iguais) de uns e zeros - isto é referido como balanceamento.
Informação adicional sobre sistemas de navegação por satélite, e em particular sobre GPS, pode ser encontrada em: “Re-Tooling the Global Positioning System” por Per Enge, p64-71, Scientific America, Maio 2004, e em “Global Positioning System: Signals, Measurements e Performance”, por Misra e Enge, Ganga-Jasuma Press, 2001, ISBN 0-9709544-0-9. Informação sobre os sinais do Galileo proposto pode ser encontrada em: “Status of Galileo Frequency and Signal Design” por Hein et al, Setembro 2002, disponíveis em: http://Europa.eu.int/comm/dgs/energy_transport/galigleo/doc/galileo_stf_ion2 002.pdf, veja também “Galileo Frequency and Signal Design” por Issler et al, GPS World, Jun 2003 disponível em: http://www.gpsworid.com/gpsworid/artide/artideDetail.jsp?id=61244.
Embora o uso de códigos Gold é bem estabelecido para sistemas de navegação por satélite existentes, há algumas limitações associadas com tais códigos. Por exemplo, elas só estão disponíveis com certos comprimentos de código (não todos valores N podem ser usadas para o LFSR polinomial). Em geral, o comprimento de código é determinado pela razão da taxa de chip do código de espalhamento e a taxa de bit dos dados de navegação. Se o comprimento de código é restrito a um código Gold disponível, então isto implica em uma restrição na taxa de chip e taxa de bit, que pode por sua vez ter impacto em outras considerações, tais como tempo de obtenção e exatidão de posicionamento. Em alguns casos, a limitação no comprimento de código para códigos Gold tem sido suplantada usando códigos truncados, mas este truncamento tem um impacto adverso nas propriedades matemáticas do conjunto de código (em termos da função de auto-correlação, etc.).
Em adição, as propriedades de correlação cruzada dos códigos Gold não são geralmente otimizadas para a situação onde a polaridade dos códigos muda de uma repetição do código para a próxima, de acordo com os dados de navegação que estão sendo transmitidos. Este último problema é exagerado, onde a taxa de bit dos dados de navegação é relativamente alta (como para Galileo), já que isto conduz a uma probabilidade significativa que uma transmissão de código de espalhamento tem uma polaridade oposta da transmissão imediatamente precedente do código de espalhamento.
Sumário da Invenção
De acordo, uma modalidade da invenção fornece um método para criar um conjunto de códigos de espalhamento para uso em um sistema de navegação por satélite compreendendo uma constelação de satélites. Cada satélite na constelação é para ser alocado com um código de espalhamento do conjunto de códigos de espalhamento. O método compreende gerar um conjunto inicial de padrões de bit, onde cada padrão de bit representa um código de espalhamento em potencial, e então efetuar um processo de otimização no conjunto inicial de padrões de bit. No processo de otimização, pelo menos alguns dos padrões de bits, no conjunto inicial, são modificados ou substituídos de modo a criar um conjunto final de padrões de bit para uso com o conjunto de códigos de espalhamento.
Tal abordagem, por conseguinte evita o uso de códigos gerados dos algoritmos matemáticos em favor dos códigos criados como padrões de bits através de um processo de otimização. Tais códigos podem ter um comprimento típico de 1.000 - 10.000 bits para uso em sistemas de navegação por satélite, mas outros comprimentos de códigos podem ser criados se assim desejado. De fato, um comprimento de código arbitrário pode ser selecionado para os códigos de modo a melhor atender os outros requisitos operacionais do sistema, melhor do que ter de selecionar um comprimento de código que satisfaz um algoritmo matemático particular.
Em uma implementação, cada padrão de bit no conjunto inicial de padrões de bit é gerado como uma sequência randômica de bits. Os padrões de bit inicial individual podem ser modificados antes da otimização para atender certos critérios - por exemplo que os padrões de bit são balanceados e que o primeiro lóbulo lateral de auto-correlação para cada padrão de bit é zero. O processo de otimização pode então ser organizado para deixar essas propriedades invariáveis, por meio disso assegurando que o conjunto final de padrões de código são também balanceados e tem um lóbulo lateral de auto-correlação ajustado para zero. Outro critério que pode ser obrigado nesta maneira, inclui o comprimento de execução máximo de um valor de bit particular (ou um e/ou zero). Alternativamente, tal critério pode ser incorporado no processo de otimização total, melhor do que ser endereçado como condição preliminar.
Em uma modalidade, o processo de otimização visa minimizar uma função-custo para o conjunto de padrões de bit. A função-custo pode ser baseada nos valores de auto-correlação e correlação cruzada para o conjunto de padrões de bit, incluindo ambos valores de auto-correlação e correlação cruzada ímpar e par (para acomodar possíveis reversos na polaridade entre ciclos sucessivos de um código de espalhamento). Os valores de correlação cruzada são calculados para todos desvios possíveis entre os padrões de bit. Em geral, melhor convergência de procedimento de otimização é obtida se a função-custo é baseada em múltiplos valores de correlação (melhor do que por exemplo precisamente o pior valor de correlação em qualquer conjunto de padrões de bit dado). Em uma modalidade particular, a função-custo é baseada em uma soma de todos valores de auto-correlação e correlação cruzada maiores do que um pré-determinado limite, tal como o limite Welch (ou algum múltiplo deles).
Em uma modalidade, os padrões de bit são modificados durante o processo de otimização através de randomicamente pular bits em pelo menos um dos padrões de bit. As modificações de bit são invertidas se é encontrado que elas conduzem a uma função-custo aumentada (por meio disso assegurando que o conjunto de padrões de bit não se deteriora. O número de bits pulados pode ser diminuído conforme a função-custo diminui, por meio disso fornecendo uma procura mais sensitiva em torno de um mínimo de função-custo.
Será apreciado que há uma larga variedade de estratégias de otimização conhecidas, tais como reativação simulada, algoritmos genéricos, e assim vai, e qualquer estratégia adequada pode ser empregada para criar o conjunto final de padrões de código. Em algumas dessas estratégias, a otimização pode envolver a geração de uma mais larga população de padrões de bit seguidos por seleção dos melhores exemplos (sobrevivência do mais apto), melhor do que modificações contínuas de padrões de bit dentro de um pré-determinado conjunto.
Uma outra modalidade da invenção fornece um receptor incorporando um conjunto final de padrões de bit criados usando um método tal como descrito acima. Em uma implementação, os padrões de bit podem ser protegidos por um código de correção de erro, e pode ser armazenado em uma memória de somente leitura (ROM) ou em uma memória de somente leitura programável (ROM). Note que a última opção permite aos padrões de bit serem atualizados se assim desejado. Será apreciado que outras formas de armazenamento podem ser usadas para manter padrões de bit, que são relativamente pequenos - cada padrão e tipicamente menos do que IkByte (embora a natureza randômica dos padrões de bit implica que uma representação mais compacta e comprimida não está disponível, em contraste com a situação com código Gold).
Em algumas implementações, o receptor pode incorporar padrões de bit para pelo menos duas constelações de satélites, onde uma das constelações de satélites compreende GPS. Note que os códigos de espalhamento são códigos GOLD, e são normalmente gerados dentro de um receptor usando um registro de deslocamento de realimentação linear. Contudo, a presente abordagem pode, em efeito, ser adaptado para sistemas GPS, por meio disso permitindo uma abordagem única a ser usada por múltiplos sistemas de navegação por satélite.
Em algumas implementações, os padrões de bit para uso por um receptor podem ser armazenados em um dispositivo de memória removível. Isto pode facilitar a atualização dos códigos usados pelo receptor, substituindo o dispositivo de memória removível com uma nova versão que contém os códigos atualizados. Em outras implementações, o receptor pode ser capaz de acessar (atualizados) códigos em uma rede tal como a Internet. Esses códigos podem então ser descarregados para o receptor para permitir obtenção dos sinais de posicionamento do satélite. Com esta última abordagem, os códigos não precisam ser necessariamente armazenados no próprio receptor, mas melhor, podem ser acessados como e quando requeridos sobre a rede.
Uma outra modalidade da invenção fornece um método de operar para uso em conjunto com um sistema de navegação por satélite. O método compreende ter acesso a um conjunto de padrões de bit armazenados que correspondem aos códigos de espalhamento usados pelo sistema de navegação por satélite. O método também compreende usar os padrões de bit armazenados para obter sinais do sistema de navegação por satélite. Os padrões de bit armazenados também podem ser usados para efetuar determinação de posicionamento em relação aos sinais provenientes do sistema de navegação por satélite.
Uma outra modalidade da invenção fornece um método de operar um satélite compreendendo parte de um sistema de navegação por satélite. O método inclui armazenar dentro do satélite pelo menos um padrão de bit correspondendo ao código de espalhamento; recuperar o padrão de bit para gerar um sinal incorporando o código de espalhamento; e transmitir o sinal. O mesmo método pode ser aplicado para um pseudolite (um transmissor baseado na terra que emula um satélite em um sistema de navegação por satélite).
Em uma implementação, a recuperação inclui efetuar uma verificação de código (ECC) de correção de erro nos padrões de bit armazenados. Isto pode ser útil para detectar e, se possível, corrigir qualquer erro que surge no padrão de bit armazenado (por exemplo devido a um acidente de raio cósmico). O padrão de bit pode ser armazenado em uma memória de somente leitura programável (PROM), que então permite atualização do padrão de bit armazenado como apropriado. Por exemplo, a atualização pode ser efetuada em resposta a um erro detectado no padrão de bit armazenado ou evitar interferência do código de espalhamento correspondendo ao padrão de bit armazenado. Uma outra possibilidade é que a atualização é feita para restringir o conjunto de usuários que podem ter acesso ao código de espalhamento proveniente do satélite (ou por razões comerciais ou de segurança).
A abordagem descrita aqui, por conseguinte armazena um código de espalhamento inteiro em um dispositivo de memória, tal como um registro, melhor do que usar um registro de deslocamento de realimentação linear (LFSR) por geração de código. Tal um dispositivo de memória está presente em ambos a carga útil do satélite, para transmissão de código e também em receptores, para recepção de código. O código é lido do dispositivo de memória bit a bit, ao contrário de ser gerado, de acordo com algum algoritmo matemático. Isto permite qualquer forma de código a ser utilizado - em particular, o código não é requerido para ser alguma espécie de código Gold, um código Gold parcial, um pequeno código Gold cíclico ou uma combinação de tais códigos. Os códigos ativamente podem ser otimizados por propriedades desejadas, tais como lóbulos laterais mínimos na função de auto-correlação (ACF) e de mínima correlação cruzada com outros códigos. Lóbulos laterais mínimos conduzem a melhores propriedades de obtenção, por exemplo, o sinal pode ser obtido mais facilmente sobre pobres condições de recepção, tais como internos e sob folhagem de árvores, enquanto mínima correlação cruzada com outros códigos reduz múltiplas interferências de acesso e ruído de intra-sistema, por meio disso aumentando a robustez de obtenção de sinal, acompanhamento, e demodulação de dados. Em adição, os códigos podem ser construídos tal que o balanceamento, sempre é perfeito, e o primeiro lóbulo lateral do ACF é fixado em zero. Esta última propriedade implica que a forma do ACF na região - Tc para Tc é sempre o mesmo (onde Tc representa o comprimento de chip e bit no código). Os códigos fornecidos são compatíveis com o uso dos códigos tendo uma estrutura hierárquica - i. e., baseada nos códigos primário e secundário. Por exemplo, um código fornecido de acordo com uma modalidade da invenção pode ser usado como código primário para um código amarrado, por meio disso, fornece obtenção rápida, enquanto mantendo boas propriedades de correlação.
A abordagem descrita aqui permite uma decisão na forma final dos códigos de espalhamento a ser retardada até um bem recente estágio de desenvolvimento de sistema já que o hardware (e. g., um dispositivo de memória) normalmente não será específico para um dado código (diferente de um LFSR particular). Mais ainda, a memória pode acomodar um novo código de espalhamento a ser transmitido em todas as direções de um satélite em órbita, carregando o novo código na memória. Isto pode ser útil para um teste em órbita de códigos durante a última fase de implementação e comissão, ou se for necessário, transmitir um código diferente daquele originalmente planejado, por exemplo, por causa da interferência com outros serviços, ou porque certos pedaços de banda foram re-alocados. Em adição, a revisão dos códigos pode também ser útil para propósitos comerciais, se talvez um pagamento de licença é requerido para obter os novos códigos, ou por razões de segurança, para limitar o acesso a serviços de posicionamento para aqueles em poder dos novos códigos.
Note que embora a abordagem descrita aqui é, primeiramente pretendida para uso em sistemas de navegação por satélite (incluindo pseudolites), pode também ser empregada em outras navegações ou sistemas de comunicação (satélite, terrestre ou marítima) que previamente tem usado LFSRs para gerar códigos de sincronização e similar.
Descrição Breve dos Desenhos
Várias modalidades da invenção serão agora descritas em detalhes por meio de exemplo somente com referência aos desenhos a seguir:
Figura 1 é um fluxograma de alto nível de um método para gerar um conjunto de código de acordo com uma modalidade da invenção;
Figura 2 é um fluxograma de alto nível ilustrando em mais detalhes o processo de início do método da Figura 1 de acordo com uma modalidade da invenção;
Figura 3 é um fluxograma de alto nível ilustrando em mais detalhes o processo de otimização do método da Figura 1 de acordo com uma modalidade da invenção;
Figura 4 é um gráfico mostrando a redução em função-custo com otimização para um primeiro conjunto de códigos de acordo com uma modalidade da invenção;
Figura 5 é um gráfico mostrando os valores de correlação ímpares e pares para um conjunto de códigos GPS;
Figura 6 é um gráfico mostrando os valores de correlação ímpares e pares para o conjunto de códigos resultantes da otimização da Figura 4;
Figura 7 é um diagrama esquemático de alto-nível de um sistema de satélite de acordo com uma modalidade da invenção;
Figura 8 é um diagrama esquemático de alto-nível de um sistema receptor de acordo com uma modalidade da invenção;
Figura 9 é um gráfico mostrando a redução em função-custo com otimização para um segundo conjunto de códigos de acordo com uma modalidade da invenção;
Figura 10 é um gráfico mostrando a melhoria nos valores de correlação para um segundo conjunto de códigos resultantes da otimização da Figura 9;
Figura 11 é um gráfico mostrando a redução em função-custo com otimização para um terceiro conjunto de códigos de acordo com uma modalidade da invenção; e
Figura 12 é um gráfico mostrando a melhoria nos valores de
correlação para um segundo conjunto de códigos resultantes da otimização da Figura 11;
Descrição Detalhada
Ao contrário das técnicas da arte anterior para achar códigos de espalhamento, que são baseados em códigos, derivados de algoritmos matemáticos, a presente abordagem usa códigos de espalhamento que não aderem a nenhuma estrutura matemática formal particular. Melhor, códigos de espalhamento tendo sequências de bit arbitrárias são permitidos, e uma tentativa é feita para determinar um conjunto ótimo de códigos de espalhamento para usar baseado em um ou mais critério objetivos.
Note que para códigos de espalhamento de um comprimento tipicamente usado em sistemas de navegação por satélite (digamos 1.000 bits ou mais), o número de códigos possíveis é muito largo (uma vez que restrições como para estruturas matemáticas são removidas). Por exemplo, para um período de código de comprimento de N bits, o número total de sequência de bit balanceada pode se especifica como:
Figure img0001
que para N = 16.384 bits corresponde a ~104930(mais longe do que 8192 códigos Gold de comprimento de 16.384 bits). Este número muito largo de códigos balanceados possíveis implica que um exame exaustivo de todos conjuntos de código possíveis não é computacionalmente factível. Melhor, a presente abordagem anota algumas formas de procedimento de otimização, como descrito em detalhes abaixo.
O número de códigos a ser incluído dentro de um dado conjunto de código é dependente de requisitos particulares do sistema de navegação por satélite. Tais sistemas são geralmente designados para operar com alguns 24 - 30 satélites diferentes, mais usualmente há sobressalentes em potencial no caso de falha. O número desejado de códigos dentro de um conjunto de código pode ser também aumentado para acomodar sinais de “pseudolite”. Estes são sinais emitidos de localizações em terra, por exemplo, perto de aeroportos, que aparecem para um receptor como sinais adicionais de navegação por satélite, e então podem dar determinação de posição mais precisa e confiável em tais locações. Em adição, pode ser desejado mudar o conjunto de códigos de espalhamento transmitido em todas as direções proveniente de um satélite em bases regulares. Isto pode ser útil para razões comerciais e de segurança, por exemplo, onde acesso aos novos códigos é condicionado ao pagamento de uma licença livre, ou é restrito a certos conjuntos de usuários militares ou do governo.
Figura 1 é um fluxograma de alto nível do método usado para gerar conjunto de códigos de acordo com uma modalidade da invenção. O método começa com a geração de um conjunto inicial de padrões de bit (105). Cada padrão de bit representa um código de espalhamento em potencial para uso por um satélite. Os padrões de bit são então modificados de acordo com um processo de otimização (110). O conjunto de padrões de bit remanescente no final do processo de otimização então representa o conjunto de códigos para uso pelo satélite (115).
Figura 2 é um fluxograma de alto nível ilustrando em mais detalhes o método usado para a geração do conjunto inicial de padrões de bit (correspondendo a operação 101 na Figura 1) de acordo com uma modalidade da invenção. O método começa com a geração de um conjunto de padrões de bit randômico para o conjunto inicial de padrões de bit (205). Em uma implementação particular, o número de padrões de bit gerado para o conjunto inicial corresponde ao número de códigos de espalhamento que são ultimamente desejados. Contudo, como será abaixo discutido, outra implementação pode levar um conjunto de início mais largo de padrões de bit. Note que, porque os padrões de bit são gerados em uma base randômica, melhor do que usando alguns algoritmos matemáticos específicos (tais como para os códigos Gold), os padrões de bit podem ser de comprimentos arbitrários. Este comprimento pode, por conseguinte, ser selecionado de acordo com as necessidades operacionais particulares do sistema de satélite (e. g., tempo de obtenção, exatidão de posição), melhor do que ser determinado pelo formato de código selecionado.
Em uma implementação particular, os padrões de bit iniciais são gerados fornecendo uma entrada para um gerador de número pseudo- randômico. A entrada usada para criar cada sequência de bit é escrita em um arquivo de registro, tal que o processo pode ser, de forma determinada, repetido se desejado. Esta implementação também permite que o conjunto inicial de códigos seja carregado de um arquivo (melhor do que ser gerado em uma base randômica). Isto é conveniente se uma nova procura é para ser feita usando os resultados de uma procura anterior como ponto de partida.
O procedimento da Figura 2 agora determina se há ou não qualquer condição precursora para ser imposta no conjunto de código (210), e se sim, se essas condições precursoras são ou não satisfeitas (215). Se há condições precursoras que não estão satisfeitas, então os padrões de bit podem ser modificados para assegurar que as condições precursoras sejam satisfeitas (220), antes de começar o processo de otimização principal.
Em uma modalidade particular, duas condições precursoras são aplicadas aos padrões de bit iniciais. A primeira delas é que o código é balanceado - em outras palavras, há igualmente muitos 1s e 0s no código. Assumindo que A é igual ao número de 0s em um padrão de bit, e B e igual ao número de 1s, o teste na operação 215 por conseguinte determina se A = B.
Se sim, então a operação 215 tem uma saída positiva, e nenhuma ação adicional é requerida (com relação a esta condição precursora particular). Por outro lado, se é achado na operação 215 que A > B, então na operação 220, (A-B) zeros são de forma randômica selecionados do padrão de bit e trocados de 0 para 1, por meio disso produzindo um código balanceado. De outro modo, se B > A para o padrão de bit randômico inicial, então na operação 220, (B-A) uns são de forma randômica selecionados do padrão de bit e trocado de 1 para 0, de novo produzindo um código balanceado.
A segunda condição precursora aplicada aos padrões de bit iniciais é que o primeiro lóbulo lateral (i. e. correspondendo a um deslocamento de bit de um lugar) da função de auto correlação (ACF) é zero para cada padrão de bit. Isto é uma propriedade útil já que assegura que a ACF tem um conhecido (fixo) comportamento na vizinhança do desvio zero, que tem implicações para a curva de receptor S. Por exemplo, o fato que a ACF verdadeira (limpa) vai da unidade no desvio zero abaixo para zero no primeiro lóbulo lateral pode ser usado em certas técnicas de redução de vários caminhos, onde uma estimativa da quantidade de interferência presente pode ser baseada no nível de qualquer sinal detectado no primeiro lóbulo lateral. (Efeitos de vários caminhos para o sistema Galileo são discutidos em “Effects of Masking and Multipath on Galileo Performances in Different Environments” por Malicorne et al, disponível em: http://www.recherche.enac.fr/1tst/papers/saint_petersurg01.pdf).
De modo a obter a ACF desejada para cada padrão de bit, operação 215 da Figura 2, por conseguinte determina o primeiro lóbulo lateral da ACF para cada padrão de bit. Para aquelas sequências de bit onde a ACF não é zero no primeiro lóbulo lateral, o padrão de bit é modificado para obter a ACF desejada (220). Em uma implementação particular, isto é alcançado trocando uma escolha de “1” randômica e uma escolha de “0” randômica até o primeiro lóbulo lateral da ACF ser zero. Será apreciado que trocando pares de bits nesta maneira, assegura que o padrão de bit fica balanceado enquanto a ACF desejada é obtida. Outras modalidades podem adotar uma abordagem diferente (possivelmente mais estruturada) para o primeiro lóbulo lateral da ACF no lugar de seleção randômica de bits para trocar como descrito acima (embora, na pratica o desempenho da última técnica é satisfatória).
As duas condições precursoras descritas acima são ambas “locais” em que elas se referem a um código individual. Melhor do que ser dependente de múltiplos padrões de bit. Consequentemente, é conveniente endereçá-las durante uma fase de início, tal como mostrado na Figura 2, antes do processo de otimização da operação 110 (ver Figura 1). Contudo, em outras modalidades, uma ou mais das condições precursoras acima podem ser incorporadas na fase de otimização, como uns outros componentes da função- custo para avaliar códigos (veja abaixo). Em adição, as condições precursoras a serem aplicadas podem varia de uma modalidade para uma outra. Por exemplo, alguns sistemas d e satélite pode não precisar de um código de espalhamento balanceado ou um zero no primeiro lóbulo da ACF. Em algumas modalidades, pode ser desejado impor um limite superior ao número de bits consecutivos de mesmo valor (e. g. não mais do que digamos L consecutivos 1s ou L consecutivos 0s). Ainda uma outra possibilidade é impor uma estrutura hierárquica nos códigos, tal que eles são formados da combinação de códigos primários e secundários gerados de forma randômica.
Figura 3 ilustra em um alto nível, a processo de otimização correspondendo a operação 110 da Figura 1. Em um alto nível, isto envolve calcular uma função-custo para os padrões de bit correntes (305) e determinar se uma condição de terminação ou convergência foi satisfeita (310). Se sim, a otimização está completa, mas se não, então pelo menos um dos padrões de código é atualizado (315), e nos voltamos a operação 305 para calcular a função-custo para o conjunto de padrões de bit atualizado.
Em uma modalidade, a função-custo é determinada baseada em funções de auto-correlação impares e pares, que são definidas respectivamente como a seguir:
Figure img0002
onde A e B são sequência de códigos, K é o desvio, N é o número de bits no código e o é a função de sinal, tal que o(n) = -1 para n<0; e o(n) = +1 para n >0. Se a = b, então a função de auto correlação é obtida. (Note que estas fórmulas assumem que os padrões de bits são expressos como sequências cíclicas, com cada chip representado como +1 ou -1 como apropriado; os valores de correlação obtidos não são ainda normalizados no intervalo -1 a +1).
A ACF e CCF pares correspondem ao que pode ser considerado com a ACF e CCF convencionais. A ACF e CCF ímpares refletem a possibilidade que ciclos sucessivos de um padrão e bit podem trocar em polaridade. Uma razão para tal troca em polaridade pode ser que o padrão de bit forma o código primário de um código hierárquico, com descrito acima, e é, por conseguinte trocado de acordo com o segundo código. Ema outra razão, pode ser que a troca é causada através da multiplexação do código de espalhamento e os dados de navegação no mesmo canal. A ACF ímpar e a ACF par são determinadas por cada sequência de bit no conjunto de códigos por cada valor de deslocamento possível. A ACF ímpar e a ACF par são determinadas para cada par, de sequência de bit, no conjunto de códigos e por cada valor de deslocamento possível entre duas sequências de bit no par.
Em uma implementação, todas as funções de correlação são avaliadas com um método de tempo de domínio direto (melhor do que converter para a frequência ou domínio Fourier). Como explicado abaixo, em mais detalhes, o tempo levado para tais cálculos não é tão importante, desde que avaliação completa da CCF e ACF é somente feita para o primeiro cálculo da função-custo, mas não em estágios subsequentes do processo de otimização.
Uma variedade de funções de custo pode ser derivada das ACF/CCFs ímpares e pares como calculado acima. Uma função-custo possível é baseada no pico da CCF máximo entre dois padrões de bit diferentes, e pode ser especificada como:
Figure img0003
Aqui A e B representam códigos diferentes, K representa o desvio entre os dois códigos, e O e E representam versões ímpares e pares da função de correlação. O valor de M tem sido frequentemente usado em projetos anteriores com uma métrica para avaliar conjuntos de códigos, e dá uma indicação de como provavelmente é que código de espalhamento de um satélite pode ser mal interpretado pelo código de espalhamento de um outro satélite. Contudo, uma deficiência desta métrica é que não leva em conta como muitas vezes o valor de correlação máximo ocorre. Por exemplo, se um dado pico ocorre somente uma vez para um par único de padrões de código e um deslocamento único, então isto pode ser muito mais aceitável que se o mesmo pico ocorre para múltiplos pares dos padrões de códigos e em múltiplos deslocamentos, já que no último caso a probabilidade de uma identificação errada no receptor é muito maior.
Em adição, as propriedades de convergência de um processo de otimização baseado no valor de M sozinho são relativamente pobres. Assim sendo já que o pico CCF máximo depende somente de um valor, conforme o algoritmo de otimização converge, isto logo se torna improvável que uma mudança randômica nos bits do código irá resultar em uma diminuição de custo. Se há muitos picos com o mesmo valor máximo, este problema é mesmo mais evidenciado.
Uma outra função-custo possível é a Soma de valor absoluto de todos picos de correlação cruzada para a potência de n:
Figure img0004
onde testes práticos têm mostrado que valores adequados para a potência N incluem 2 e 6. Isto tem a vantagem comparada com usar precisamente o valor de pico de correlação cruzada (M) que depende de muitos mais valores (de fato cada valor de correlação possível único), e então geralmente exibe melhor propriedades de convergência.
Uma outra possibilidade para a função-custo é derivada do limite Welch, que é definida na literatura como
Figure img0005
onde M é o número de sequências, e N é o comprimento das sequências. O limite Welch pode ser usado, para especificar o critério, que é definido pela seguinte equação:
Figure img0006
Isto é basicamente uma soma de todos os picos ACF e CCF (ambos par e ímpar) que são acima do limite Welch (aqueles que estão abaixo do limite Welch são descontados da soma). Em particular, o limite Welch é subtraído de cada um dos picos e o resíduo levado para a potência de N, onde N é configurável, e valores apropriados de experiência têm sido encontrados para 2, 6 e 8. A função-custo Wen exclui valores de correlação de baixo nível da otimização. E assim pode ser visto como um compromisso entre o uso de Sn como uma função-custo, que incorpora todo os valores de correlação, e M, que incorpora somente o valor de correlação de pico.
Será apreciado que embora Wen, M e Sn representam funções de custo possível para uso na operação 305 (e Wen tem sido encontrado adequado), outras implementações podem usar outras funções de custo ou combinações de função-custo. Cada função-custo selecionada irá conduzir a códigos diferentes em uma maneira diferente. Uma opção pode ser dizer que um código é bom se o lóbulo lateral máximo é pequeno, enquanto uma outra opção pode ser dizer que, um código é bom se a soma de todos os lóbulos laterais é pequena. Uma combinação de mais do que uma função-custo (tal como requer ambos o lóbulo lateral máximo e a soma de todos os lóbulos laterais para ser pequena) é também possível. As funções de custo podem ser baseadas nas funções de correlação e/ou em alguma outra métrica. Por exemplo, tendo um código balanceado aproximadamente, pode ser incluída com parte da função-custo para otimização, melhor do que sendo imposta como uma condição inicial. Também, dependendo da estrutura do sinal a ser empregado, as funções de correlação ímpares podem não ser de interesse (especialmente se a mesma polaridade do código de espalhamento é mantida).
Será também apreciado que a função-custo selecionada pode não coincidir exatamente com o critério de seleção final para determinar o conjunto de código eventual. Isto é porque a função-custo geralmente será selecionada para fornecer boa convergência, e isto pode geralmente ser ajudado, tendo a função-custo dependendo de uma fração significante dos picos de CCF, mesmo se o critério de avaliação definitivo possa depender somente de um valor de pico de CCF.
Na presente implementação, a função-custo avalia as funções de correlação cruzada somente no Doppler zero (i. e. ignorando qualquer deslocamento Doppler possível nos sinais surgindo do movimento dos satélites no espaço). A razão principal para isto é um fenômeno observado de forma empírica, para conjuntos de códigos que tem uma distribuição Gaussiana aproximada dos picos de correlação cruzada, no qual é observado que em média o histograma de picos de CCF tendem a se deslocar em direção a zero para condições de Doppler não zero. (Note que ao contrário, códigos Gold tem uma distribuição não Gaussiana de picos de correlação cruzada, e consequentemente o efeito das condições de Doppler não zero podem ser mais significantes para esta classe de códigos).
A determinação de quando o processo de otimização conclui a operação 310 pode ser feito de acordo com vários critérios, tal como por causa do número de tentativas (i. e. voltas través do processamento da Figura 3) que alcançou algum limite pré-ajustado, ou porque a função-custo alcançou algum nível baixo aceitável. Uma outra possibilidade é que o procedimento de otimização alcançou uma convergência em algum mínimo de função-custo. Será apreciado que um problema padrão em procedimentos de otimização tal como mostrado na Figura 3 é que a função-custo começa errada em um local mínimo, e não há nenhuma maneira de sair quando pegando passos pequenos. Contudo, na aplicação presente a função-custo fica em um espaço dimensional muito grande (grande quantidade de bits dentro de cada padrão de bit, e grande quantidade de padrões de bit). É, por conseguinte, muito provável que existe alguma maneira de sair de qualquer local mínimo, porque o grande número de dimensões oferece muitas direções em que explorar escolhendo diferentes atualizações para os padrões de código.
Se a saída da operação 310 é negativa, em que a otimização é para continuar, então os padrões de código são atualizados (315) (nós vamos voltar as operações 312 e 314 mais tarde). Em uma modalidade, isto é alcançado por pular de forma randômica um certo número de bits em um código. O número de bits a ser trocado depende em quanto bom os códigos têm se tornado (i. e. quanto mais baixo a função-custo é). Em geral, como os códigos se tornam melhor, e a função-custo se torna mais baixa, o número de bits a ser trocado pode ser reduzido. Isto então permite uma procura grossa do espaço de otimização quando relativamente distante de um mínimo de função- custo, e uma procura fina do espaço de otimização como um mínimo é abordado.
Em uma implementação, a identidade do padrão de código para modificar pode ser selecionada de forma randômica. Alternativamente, pode haver alguma razão específica para selecionar um padrão de código para modificar. Por exemplo, o par de código que produziu o (ou um) pico de correlação máximo, pode ser selecionado para atualizar em preferência para os outros códigos.
Em uma modalidade particular, um teste é feito na operação 312 para confirmar que a mudança de bits na operação 315 conduziu a uma melhoria (i. e. uma redução) na função-custo. Se isto é encontrado não ser o caso, então os bits são revertidos de volta a sua posição anterior (operação 314), em outras palavras, a atualização da operação 315 é reversa, e novos pares de bits são selecionados para mudar na próxima atualização (operação 315). Será apreciado que a presença de teste 312 e operações 314 assegura que o processo de otimização não pode voltar atrás, no sentido de fazer a função-custo maior melhor do que menor.
A otimização pode ser efetuada sujeita a certas condições precursoras, que em uma modalidade são aqueles que os códigos são balanceados, e tem um zero no primeiro lóbulo lateral de ACF (como previamente discutido em relação a Figura 2). Uma vez que as condições precursoras (se alguma) tenham sido estabelecidas, o método de atualizar os padrões de códigos na operação 315, pode ser selecionado tal que essas propriedades são mantidas invariáveis. Em uma implementação isto é alcançado como a seguir:
Discrepância de Balanceamento: os bits são sempre trocados em pares dentro de cada código, selecionando um bit com valor 0 para trocar e um bit com valor 1 para trocar. Isto assegura que o código é modificado em uma maneira variável de balanceamento, tal que o balanceamento do código fica o mesmo antes e depois de trocar os bits. Assim sendo, se os códigos são balanceados para quando eles são iniciados (como na operação 230), eles ficam balanceados através do procedimento de otimização inteiro.
Discrepância de lóbulo lateral de ACF: assumindo que os bits selecionados para troca são aj e ak, que para discrepância de balanceamento implica que: ak = - aj, então é fácil mostrar que o primeiro lóbulo lateral da função é trocado fornecendo: a k-1 + a k+1 = a j-1 + a j+1 (Eq. 7)
Se igualdade isto não mantém, então novos bits aj e ak para trocar precisam ser selecionados de modo a preservar o valor zero do primeiro lóbulo lateral de ACF. Mais geralmente, se durante o início (ver Figura 2), os códigos são construídos tal que o enésimo lóbulo lateral da ACF é zero, então este pode ser preservado assegurando que: a k-n+ a k+n= a j-n+ a j+n(Eq. 8)
Consequentemente, a atualização de código da operação 315 pode ser controlada para assegurar que a parte central da ACF (i. e. em torno de desvio zero) mantém a mesma forma para todos os códigos.
Outras condições invariáveis ou precursoras podem ser forçadas como apropriado. Por exemplo, um limite pode ser colocado no comprimento em execução máximo de algum bit único (1 ou 0) em uma sequência de padrão de bit. Uma outra possibilidade é que os códigos têm uma estrutura hierárquica. Neste caso, a operação de atualização 315 pode envolver modificação separada da parte primária e/ou secundária do código, e então geração de um novo (comprimento total) padrão de código dos códigos primários e secundários (como modificados).
Um outro critério que pode ser aplicado, ou como uma condição precursora ou com parte do procedimento de otimização, reflete o fato que o sistema Galileo irá caracterizar um sinal piloto similar ao da portadora coerente em GPS L5. Na GPS L5 isto é alcançado transmitindo dois sinais em quadratura (nos canais I e Q). Em tais circunstâncias, é importante que os sinais sejam separados não só pela ortogonalidade das portadoras, mas também pelos seus próprios códigos, em outras palavras que os códigos para os canais I e Q tem uma correlação cruzada para retardo zero que é tão pequeno quanto possível (será apreciado que o tempo de retardo entre esses dois canais é fixo). O procedimento de otimização descrito aqui permite a correlação cruzada de dois tais canais sobrecarregados para exatamente retardo zero ser forçada em direção (ou restringida a ser) a zero, i. e. -^dB (comparada com aproximadamente ~60 a ~70 dB para o código GPL L5). Será apreciado que uma maneira de modificar a CCF entre dois códigos é deslocar o início de um código relativo ao outro (usando a natureza cíclica dos códigos), melhor do que modificar a sequência de bit de cada dos códigos individuais.
Note que após os padrões de código terem sido atualizados na operação 315, um novo cálculo completo da ACFs e da CCFs de modo a atualizar a função-custo não é requerido se somente um pequeno número de bit tem sido trocado em cada iteração. Melhor, se dois bits em um código tendo sinais opostos (para preservar balanceamento) são trocados, digamos aj e ak, a mudança na função de correlação cruzada para é dada por:
Figure img0007
onde N é o desvio entre códigos A e B. Esta atualização pode então ser aplicada para a já calculada CCFs. Similarmente, para a CCFs ímpar nós obtemos:
Figure img0008
que de novo pode ser usado para atualizar os valores de CCF ímpar previamente calculados.
O procedimento acima descreve um procedimento de otimização, mas será apreciado que há muitas estratégias alternativas disponíveis, baseada em conceitos tais como algoritmo genérico, reativação simulada, e assim vai. Por exemplo, uma possibilidade para operação de atualização 315 é que melhor do que confiar em modificação randômica de um código selecionada de forma randômica, um algoritmo pode fazer uma tentativa mais direta para reduzir a função-custo. Isto pode ser alcançado selecionando um código ou par de códigos gerando um valor de correlação alto, e selecionando para modificações específicos bits dentro desses códigos que contribuem para o valor de correlação alto. Uma outra possibilidade é para trocar sequências de bit parciais entre dois ou mais diferentes códigos (tais como na fase de produção de algoritmos genéticos ou baseado em evolução). Será apreciado que algumas implementações podem utilizar algumas combinações de modificações randômicas, diretas e/ou de trocas para operação 315, ou efetuar diferentes tipos de atualizações para diferentes ciclos de otimização.
Também será notado que no procedimento acima, o número de padrões de bits gerados para o conjunto de códigos inicial corresponde ao número de padrões de bits no conjunto de códigos final (i. e., o último é derivado do anterior pela modificação dos padrões de bit individual que já existem no conjunto de código). Outros procedimentos de otimização podem envolver em seu lugar uma maior população de padrões de bits do que são requeridos para conjunto final. Por exemplo, se há N padrões de código no conjunto final, então um conjunto de P padrões de código pode ser gerado inicialmente (P > N). Cada ciclo de otimização poderia então envolver manter o melhor sub-conjunto de (digamos) N padrões de código, e então gerar um outro P-N padrões de códigos novos para testar em conjunto com o sub-conjunto mantido do ciclo anterior. Algumas estratégias de otimização podem combinar esta abordagem de maior população com atualizar padrões de bit individuais dentro da população.
Uma motivação para trabalhar com uma grande população de códigos é, se os N padrões de códigos já são desdobrados nos satélites, e é desejado identificar padrões de código compatíveis adicionais que poderiam ser usados na reposição de satélites (ou em serviços baseados em terra relacionados). Note que os N padrões de código originais podem ter sido gerados por um mecanismo diferente daquele mostrado na Figura 1 (e. g. eles podem ser códigos Gold), mas isto é transparente para a abordagem presente, que é compatível com qualquer conjunto de código existente.
É também assumido que há um comprimento pré-determinado para os padrões de código em um conjunto de código. Contudo, pode haver algumas flexibilidades no comprimento do padrão de código que é adotado. Neste caso, repetir o procedimento de otimização com conjuntos de código de comprimentos diferentes pode ser usado para identificar um comprimento de código que fornece um conjunto de código tendo propriedades favoráveis particularmente (i. e. uma função-custo mínima mais baixa que os conjuntos de código baseados em um comprimento diferente para o padrão de código.
Para padrões de código que têm um comprimento de bit muito curto, é computacionalmente confiável efetuar uma procura exaustiva de todos padrões de código possíveis. Contudo, não é possível com os recursos computacionais dos dias presentes para padrões de código tendo comprimentos que são usualmente empregados por sinais de navegação por satélite (como é claro da Equação 1 acima), e nesse caso, em seu lugar, um procedimento de otimização precisa ser usado.
Figura 4 é um gráfico ilustrando o progresso do procedimento de geração de código da Figura 1 de acordo com uma modalidade particular da invenção. Este exemplo envolve 20 códigos, cada um de comprimento de 1023 bits. As sequências de bit iniciais para os códigos forma geradas de forma randômica, e os códigos foram então otimizados como mostrado pelo número de tentativas (i. e., número de atualizações de código) ao longo do eixo do X. O gráfico apresenta quatro curvas como uma função do número de tentativas. Três dessas curvas são bem superpostas uma com a outra na Figura 4, e então não podem ser facilmente distinguidas. Estas representam o valor de uma função-custo calculada usando limite de Welch - i. e. análoga a função-custo de Wen da Equação 6 acima. Para este exemplo particular, a função-custo foi determinada como o 8thmomento (i. e., N = 8) de todos valores de correlação maiores que 1,8 vezes o limite de Welch (melhor do que 1,0 vezes o limite de Welch Omo mostrado na Equação 6). As três curvas calculadas a partir limite de Welch correspondem a: (a) as funções de correlação pares, (b) as funções de correlação ímpares, (c) a combinação de ambas as funções de correlação pares e ímpares. Será visto que as curvas das funções de correlação pares e ímpares acompanham uma a outra de bem juntas (e, por conseguinte assim fazem a curva combinada), com nenhuma diferença importante entre elas.
A quarta linha na Figura 4 representa o valor de correlação mais alto ou de pico, análogo ao valor M da Equação 3 acima. Note que esta linha é retangular na forma, e claramente quantizada para certos valores. Em adição, o valor desta linha é constante em alguns estágios em um número significante de tentativas. Isto confirma que o processo de convergência ou otimização geralmente irá acontecer muito melhor usando uma curva suave para o valor Wen da Equação 6, melhor do que o valor de M da equação 3 (ou análogo do mesmo).
Entretanto, como mencionado previamente, e frequente o valor de M que pode ser de interesse definitivo para avaliar o conjunto de código, desde que isto determina o cenário de pior caso para qualquer falta de identificação. Na Figura 4, a escala do eixo Y indica o valor de M (não aquele de W). O valor inicial de M é 149, e o valor otimizado final é 93. Esta são valores não normalizados, e para um comprimento de código de 1023, correspondendo a um valor inicial de 16,7 dB, e um valor otimizado de 20,8 dB (comparado com o pico de auto correlação para desvio zero - i. e. o sinal em sincronização adequada).
Figura 5 é um histograma dos (absolutos) valores de correlação para um conjunto de 20 códigos, cada um de comprimento 1023, que são usados para GPS. O eixo X na Figura 4 denota um valor de correlação (a escala é, por conseguinte diretamente comparável com o eixo Y da Figura 4), enquanto o eixo Y denota o número de combinações de códigos e desvios que tem este valor de correlação. Os valores de correlação são divididos em correlações ímpares e correlações pares. As correlações pares compreendem o pico muito grande em um, mais os dois menores picos em 63 e 65. Estas propriedades de correlação para os códigos Gold de GPS são bem conhecidos (ver por exemplo seção 7.6 do livro referenciado acima de Misra e Enge). O pico em 65 corresponde ao valor de 24 dB abaixo do pico de auto-correlação para desvio zero.
As barras restantes no histograma da Figura 5 representam os valores de correlação ímpar para códigos Gold de GPS. Este tem uma completa diferente distribuição dos valores de correlação par, e são distribuídos através de um largo intervalo de valores. O pior valor de correlação ímpar para os códigos GPS é 153, correspondendo a 16,5 dB, embora este valor de correlação é significantemente pior do que os outros (o segundo pior valor de correlação ímpar para os códigos GPS é 133, correspondendo a 17,6 dB).
Figura 6 é um análogo histograma ao da Figura 5, mas desta vez mostra os valores de correlação para o conjunto de código derivada da otimização mostrado na Figura 4. Figura 6 apresenta os valores de correlação separadamente para funções ímpares e pares, e também para ambos conjuntos de código de pré-otimização e de pós-otimização. Desde que esses conjuntos diferentes não podem ser facilmente distinguidos por si só, uma linha tem sido adicionada para este histograma que termina em um valor de correlação de 93. Isto representa a fronteira superior do histograma para os valores de correlação de pós-otimização, considerando que os valores de correlação de pré-otimização se estendem significantemente além deste para um valor superior de 149 (consistente com o apresentado da Figura 4).
O processo de otimização, por conseguinte, tem resultado em uma melhoria de cerca de 4 dB entre o estado inicial e final, que em uma base estatística corresponde a mais do que dobrar o comprimento do código. Embora o desempenho dos códigos otimizados para CCF par está ainda abaixo daquele para códigos Gold, a diferença real é alguma coisa menor do que indicado pelas Figuras 5 e 6. Isto é porque tem sido encontrado na prática que histogramas Gaussianos, tais como mostrado na Figura 6, tende a se mover para a esquerda para Doppler não-zero, refletindo uma diminuição em valores de correlação. Ao contrário, picos agudos, tais como aqueles mostrados na Figura 5 em 63 e 65 para códigos Gold pares, tendem a se tornar raros. Isto então conduz a um aumento no valor de correlação de pico associado com esses picos.
Mais inda, o desempenho dos códigos otimizados da Figura 6 para CCF ímpar é geralmente melhor do que o desempenho dos códigos Gold para CCF ímpar (que é tipicamente comparável com o estado inicial da Figura 6). Note que no GPS, a taxa de dados superposta nos códigos de espalhamento é relativamente baixa, tal que a probabilidade de troca de bit entre códigos é somente 0,5/20 ou 2,5 %. O desempenho para CCF ímpar no GPS é, por conseguinte não tão importante. Em contraste com Galileo, a taxa de dados superposta nos códigos de espalhamento é relativamente alta, tal que a probabilidade de troca de bit entre códigos é 0,5 (50 %). Será apreciado que nessas circunstâncias, o desempenho para CCF ímpar é um fator muito mais significante.
Em adição, em algumas circunstâncias, pode ser desejado usar código Gold truncado, melhor do que um código Gold completo, de modo a ter um comprimento particular do código. O desempenho, de tais códigos Gold truncados geralmente tem sido encontrado ser similar ao conjunto de código inicializado da Figura 6, e de forma significante, tão mais pobre do que o desempenho do conjunto de código otimizado da Figura 6.
Figura 7 é um diagrama em bloco esquemático de alto nível de um sistema de transmissão 601 para uso em uma carga útil de satélite de acordo com uma modalidade da invenção. (Será apreciado que uma estrutura análoga poderia também ser usada em um pseudolite ou outro tal dispositivo que emula um satélite). O sistema de transmissão 601 utiliza um código de espalhamento 611 tal como gerado usando o método da Figura 1. O código de espalhamento 611 é armazenado em um dispositivo de memória 610, que em atividade normal de transmissão em todas as direções funciona como uma memória de somente leitura. Em uma implementação, um dispositivo de memória 610 pode ser operado de uma perspectiva lógica com uma área temporária de armazenamento circular, usando um apontador de leitura para circular em torno da sequência de código armazenada 611 (isto pode ser mais simples para implementar do que o projeto de LFSR convencional, que requer múltiplas operações de leitura-escrita para cada bit de saída).
Em um sistema de navegação por satélite típico, o comprimento de código 611 é da ordem de 1.000 a 10.000 bits, embora códigos, mais longo ou mais curtos podem ser usados se apropriados. Note que em algumas circunstâncias código 611 pode compreender um código hierárquico, no qual caso um dispositivo de memória 610 pode ser dividido em dois componentes, um para armazenar o código primário, e um para armazenar o código secundário. Em tal situação, o sistema de transmissão 601 também incluiria lógica adequada para gerar o código completo dos códigos primários e secundários armazenados. Alternativamente, mesmo se código 611 tem uma estrutura hierárquica, pode ainda ser armazenada como um único, sequência longa na memória 610. Tendo tal estrutura plana em memória é [útil, por exemplo deveria ser desejado substituir o código 611 na memória 610 com algum código diferente (ver abaixo).
O tamanho característico de dispositivos de memória modernos é muito pequeno. Os bits armazenados na memória 610 por conseguinte podem ser vulneráveis a efeitos de raios cósmicos (especialmente em um ambiente espacial) e outras contaminações possíveis. Consequentemente, em uma modalidade, a saída de dispositivo de memória 610 é passada através de uma unidade de (ECC) de código de correção de erro 612 para proteger a exatidão do código 611. A unidade ECC 612 é capaz de detectar um erro no código 611 como lido da memória 610, e pode ser capaz, em algumas circunstâncias, de automaticamente corrigir o erro (dependendo da natureza do código e do erro). Por exemplo, a memória 610 pode armazenar duas cópias do código 611, e ler cada bit simultaneamente de ambas as cópias. Se os dois bits lidos das diferentes versões não coincidem, isto sinaliza (i. e. detecta) um erro em uma das versões armazenadas. Se três cópias do código 611 são armazenadas na memória 610, então qualquer erro detectado pode ser corrigido automaticamente com base em voto da maioria.
A pessoa com habilidade, terá ciência de muitos mecanismos de ECC de comunicações de dados e aplicações de armazenamento de dados, tais como o uso de codificação de convulsão, códigos de redundância cíclica (CRC), e assim vai. Estes geralmente têm uma eficiência muito mais alta que simplesmente armazenar múltiplas cópias do código 611 - i. e. eles fornecem melhor proteção contra erros com uma mais baixa extrapolação em termo de capacidade de armazenamento adicional.
Memória 610 é normalmente longa o bastante para armazenar o comprimento completo do código 611. Em outras palavras, se código 611 tem um comprimento de 1023 chips (por exemplo), então memória 610 tem uma capacidade de pelo menos 1023 bits para armazenar o código inteiro em uma base de bit a bit (mais armazenamento adicional para qualquer redundância ou facilidade de ECC). Isto é porque se código 611 representa uma sequência randômica arbitrária, então geralmente este não pode ser comprimido para armazenamento na memória 610. Isto é ao contrário de sistemas da arte anterior que usa códigos Gold (ou algum derivado dele) - estes não necessitam de armazenar o código de espalhamento completo, mas melhor pode usar um LFSR para gerar o código de espalhamento com e quando requerido.
Após o código ter passado através da verificação ECC 612, é combinado com os dados de navegação 617 pelo subsistema de geração de canal 620. Esta combinação é geralmente efetuada usando alguma forma de adição de módulo 2 (OR exclusivo). O canal resultante é então passado a uma unidade de modulação 625, onde é superposto em um sinal de portadora usando algum mecanismo de modulação apropriado, tal como chaveamento de deslocamento de fase binário (BPSK). Note que em alguns sistemas de satélite, múltiplos canais podem ser modulados em um sinal de portadora único. O sinal de portadora único é então passado ao transmissor 630 para transmitir em todas as direções para a terra.
Embora em teoria o código 611 pode ser embutido por hardware na memória 610 antes de lançar, é consideravelmente mais flexível se o dispositivo de memória 610 inclui uma capacidade de escrita e. g. se implementado como alguma forma de memória de somente leitura programável (PROM). Por exemplo, se verificação de ECC 612 descobre que o código 611 armazenado foi corrompido, então a capacidade de escrita para o dispositivo de memória 610 permite que a versão correta do código seja escrita de volta no dispositivo de memória 610 (a versa correta do código pode ser disponível da própria unidade ECC 612, ou pode ter sido fornecida pelos sistemas de controle de terra). Pode também haver várias outras razões para querer atualizar o código 611 armazenado na memória 610.Por exemplo, um novo código poderia ser instalado para ajudar a melhorar o desempenho durante uma fase de teste, talvez se o código original sofre de interferência com algum outro serviço ou satélite. Poderia também haver razões comerciais ou de segurança para mudar o código 611, o anterior talvez para levantar rendimento licenciados, o último para restringir acesso ao sinal de posicionamento para o pessoal autorizado adequadamente.
Será apreciado que esta flexibilidade para mudar o código de espalhamento emitido de um satélite não existe em muitos sistemas existentes, já que tais sistemas frequentemente incorporam um ÇFSR que é embutido por hardware para gerar um código Gold particular. Tais sistemas existentes podem então criptografar o código de espalhamento para controlar acesso ao código de espalhamento (se for razões militares ou comerciais), mas tal criptografia pode ter impacto no desempenho e complexidade do receptor.
Figura 8 é um diagrama em bloco esquemático de alto nível de um receptor 701 de acordo com uma modalidade da invenção. Em operação, o receptor 701 incluir aéreos 715 para receber um sinal de satélite tal como aquele transmitido pelo satélite 601. Os elos de ligação aéreos 715 para um demodulador 720, que por sua vez passa o sinal demodulado de entrada para a unidade de aquisição de canal 725.
O receptor 610 também inclui um dispositivo de memória 710 que armazena os padrões de código 611A, 611B,... 611N para constelação de satélites suportados pelo receptor 701. Dispositivo de memória 710 geralmente irá armazenar os padrões de bit inteiro para códigos 611A, 611B, etc., já que como previamente mencionado, uma representação mais compacta de tais códigos não é geralmente possível na ausência de qualquer estrutura matemática formalizada.
O dispositivo de memória 710 pode ser fornecido como uma memória de somente leitura (ROM), ou pode ter alguma capacidade de atualização, por exemplo, sendo implementado como uma memória de somente leitura programável (PROM). O último particularmente será apropriado onde os códigos 611A, 611B,... 611N são sujeitos a atualizações, ou por razões de segurança ou comerciais. Note que em algumas circunstâncias, a memória 710 pode representar alguma forma de meio de armazenamento removível que pode ser inserido e removido do receptor 701. Por exemplo, o dispositivo de memória 710 pode compreender um cartão inteligente (análogo a um SIM em um telefone móvel) ou um dispositivo de memória temporário. Isto pode então permitir aos códigos 611 no receptor 701 de serem atualizados para substituir o dispositivo de memória removível. Uma possibilidade adicional é que o dispositivo 710 pode ser capaz de descarregar códigos de um sistema remoto (e.g. um servidor) sem alguma rede de comunicação., tal como a Internet ou uma conexão de telefone móvel, para armazenamento em uso da RAM local. Esta descarga pode ser sujeita a apropriada autorização do usuário, de modo a restringir o uso do sistema de navegação por satélite por razões comerciais, de segurança ou legais.
Em algumas implementações, a saída da memória 710 é passada através de uma unidade de ECC 712 para efetuar detecção e/ou correção de erro com descrito acima com relação ao sistema de satélite 601, embora em outros receptores o mecanismo de verificação de ECC 712 pode ser omitido. O código 611 é então fornecido para a unidade de obtenção de canal 725 tal que o canal pode ser obtido do sinal demodulado. Note que tal obtenção pode ser efetuada sequencialmente tentando um código 611A, então um outro 611B, e assim vai. Alternativamente, múltiplos códigos (potencialmente todos eles) podem ser correlacionados contra o sinal demodulado em paralelo. Uma vez o receptor ter travado em um sinal de entrada através da identificação da presença de um código de espalhamento particular 611A, 611B, os dados de navegação daquele sinal podem ser extraídos e usados pela unidade de determinação de posição em conjunto com a duração de tempo do código de espalhamento recebido, para ajudar a calcular a localização do receptor.
Em muitas modalidades, o receptor 701 pode ser capaz de receber sinais de mais do que um sistema de navegação por satélite, por exemplo, de ambos Galileo e de GPS. Embora os códigos de espalhamento para GPS compreendem códigos Gold que podem ser implementados com LFSRs, será apreciado que tais códigos, também, podem ser armazenados em sua totalidade dentro de dispositivo de memória 710. Consequentemente, a memória 710 de arquitetura única é compatível com ambos padrões de códigos específicos ou comuns, tais como produzidas usando o método da Figura 1, assim como padrões de códigos convencionais derivados dos LFSRs.
Tabela 1 estabelece os códigos primários a serem usados para os canais E6-B e E9-C do Galilaeo, enquanto Tabela 2 estabelece os códigos primários a serem usados para os canais L1-B e L1-C do Galilaeo (ver documento referenciado acima para o Hein et al para mais informação sobre os diferentes canais do Galileo). Em operação, o código E6-C é combinado com um código secundário de 100 chips, e o código L1-C é combinado com um código secundário de 25 chips (não há códigos secundários para os canais E6-B ou L1-B).
O conjunto de códigos da Tabela 1 compreende 100 códigos, que cobre uma constelação operacional de satélites (tipicamente 24 - 30), mais quaisquer missões de substituição, pseudolites possíveis, e assim vai, enquanto o conjunto de código da Tabela 2 compreende 137 códigos (fornecendo códigos adicionais para uso com um outro sistema de navegação por satélite compatível se requerido). Os códigos E6-B e E6-C, cada um têm um comprimento de 515 bits, enquanto o L1-B e L1-C, cada um têm um comprimento de 4092 bits. Estes comprimentos de códigos têm sido determinados para fornecer a taxa de bit desejada para os dados de navegação relevantes, mais a seleção de uma taxa de chip que é um múltiplo integral da taxa de chip usada pelos satélites GPS (que ajuda de forma compatível entre os sistemas GPS e Galileo).
Os códigos são representados usando base 64 - i. e. cada 6 bits são agrupados juntos e representados por um símbolo único de acordo com a Tabela 3 abaixo. As listagens das Tabelas 1 e 2 têm sido preenchidas no final, para completar a codificação de base 64 (i. e. os códigos de espalhamento reais representam os primeiros 5115 bits para a Tabela 1, e os primeiros 4092 bits para a Tabela 2). Detalhes adicionais sobre codificação e decodificação de base 64 pode ser encontrado em rfc 1113 (ver www.faqs.org/rfcs/rgc112.html).
Figure img0009
Figure img0010
Cada um dos satélites do Galileo será fornecido com um dos códigos E6-B, E6-C, L1-B e L1-C das Tabelas 1 e 2 para transmissão em todas as direções. Ao contrário, um receptor 701 geralmente irá incorporar o conjunto completo de códigos para cada um dos serviços que ele suporta, embora em alguns casos um receptor pode somente suportar um sub-conjunto de códigos totais para um serviço, por exemplo somente aqueles que foram alocados para satélites lançados. Também será apreciado que um receptor pode geralmente tolerar discrepâncias mínimas entre seus códigos armazenados e aqueles recebidos de um satélite. Em outras palavras, os códigos armazenados em um receptor não podem exatamente coincidir com aqueles das Tabelas 1 e 2 (dependendo os serviços suportados), mas serão suficientemente próximos para permitir identificação e sincronização dos códigos relevantes.
Figuras 9 e 10 ilustram o processo de otimização para os códigos E6 (chip), enquanto Figuras 11 e 12 ilustram o processo de otimização para os códigos L1 (4092 chips). Figuras 9 e 11, geralmente têm o mesmo formato como aqueles descritos acima com relação a Figura 4, e mostra a melhoria em função-custo como um resultado do procedimento de otimização. A abscissa nestes diagramas representa o número de tentativas, enquanto a ordenada representa duas funções de custo diferentes. A primeira função-custo é baseada no limite de Welch, análogo àquele dado pela Equação 3 acima, e corresponde a escala no lado direito do gráfico. Note que estas duas funções de custo são calculadas usando ambas funções de correlação ímpares e pares.
Figuras 10 e 12 geralmente têm o mesmo formato como aquele descrito acima com relação a Figura 6, e mostra a melhoria na função-custo entre os conjuntos de código iniciais e finais como um resultado do procedimento de otimização. Em particular, esses dois diagramas representam histogramas (não normalizados) do valor de lóbulo lateral máximo para o conjunto de código inicial e para o conjunto de código final. Em ambos os casos, a função-custo é calculada usando ambas as funções de correlação ímpar e par. Na Figura 10 uma linha foi adicionada para demarcar mais claramente entre os estados inicial e final. A parte tracejada dessa linha segue aproximadamente o topo do histograma para valores de lóbulo lateral baixo para o conjunto de código inicial, e pode ser visto que esta fica abaixo do nível do correspondente histograma para o conjunto de código final. A parte pontilhada dessa linha segue aproximadamente o topo do histograma para valores de lóbulo lateral mais altos para o conjunto de código final, e pode ser visto que esta fica abaixo do nível do correspondente histograma para o conjunto de código inicial.
Pode ser visto das Figuras 9, 10, 11 e 12 que o procedimento de otimização conduz a uma melhoria significante nos conjuntos de código finais comparado com os conjuntos de código originais. Em particular, a melhoria no valor de lóbulo lateral máximo entre os conjuntos de códigos inicial e final é aproximadamente de 410 a 275 (21,9 dB a 25,4 dB) para os códigos E6 (5115 chips), e de 355 a 345 (21,2 dB a 24,5 dB para os códigos L1 (4092 chips).
Em conclusão, embora uma variedade de modalidades particular foi descrita em detalhes aqui, será apreciado que estas são para propósito de ilustração somente. Uma pessoa hábil terá ciência de muitas outras modificações e adaptações em potencial que atendem dentro do escopo das reivindicações e seus equivalentes. Tabela 1: Códigos E6 - B e E6 – C
Figure img0011
Figure img0012
Figure img0013
Figure img0014
Figure img0015
Figure img0016
Figure img0017
Figure img0018
Figure img0019
Figure img0020
Figure img0021
Figure img0022
Figure img0023
Figure img0024
Figure img0025
Figure img0026
Figure img0027
Figure img0028
Figure img0029
Figure img0030
Figure img0031
Figure img0032
Figure img0033
Figure img0034
Figure img0035
Figure img0036
Figure img0037
Figure img0038
Figure img0039
Figure img0040
Figure img0041
Figure img0042
Figure img0043
Figure img0044
Figure img0045
Figure img0046
Figure img0047
Figure img0048
Figure img0049
Figure img0050
Figure img0051
Figure img0052
Figure img0053
Figure img0054
Figure img0055
Figure img0056
Figure img0057

Claims (12)

1. Método para criar um conjunto de códigos de espalhamento para uso em um sistema de navegação por satélite, o qual compreende uma constelação de satélites (601), onde a cada satélite (601) na constelação é para ser alocado um código de espalhamento a partir de dito conjunto de códigos de espalhamento, método este sendo caracterizadopelo fato de compreender: - gerar (105) um conjunto inicial de padrões de bits, onde cada padrão de bit representa um código de espalhamento potencial e cada padrão de bit no conjunto inicial de padrões de bits é gerado mediante (i) geração de cada conjunto inicial de padrões de bits como uma sequência randômica de bits, em que o número de bits em um padrão de bit está no intervalo de 1.000 a 10.000 e, para cada padrão de bit, (ii) aplicação ao padrão de bit de uma primeira condição precursora que requer que tais padrões de bits (611A-611N) sejam balanceados, por meio de que existem, igualmente, muitos 1s e 0s neles, e se (215) o padrão de bit não for balanceado, modificar (220) o padrão de bit para assegurar que ele seja balanceado e (iii) aplicação ao padrão de bit de uma segunda condição precursora que requer que primeiro lóbulo lateral, que corresponde a um desvio de bit de um lugar, de uma função de auto-correlação (ACF) seja zero, por meio de que o primeiro lóbulo lateral da ACF para cada padrão de bit é determinado (215) e, para aqueles padrões de bits onde a ACF é não zero no primeiro lóbulo lateral, o padrão de bit é modificado (220) para obter uma ACF de zero, assim resultando no conjunto inicial de padrões de bits; e - efetuar (110), em um sistema de hardware, um processo de otimização (305-315) no conjunto inicial de padrões de bits, por meio do qual pelo menos alguns dos padrões de bits no referido conjunto inicial de padrões de bits são modificados, para criar um conjunto final de padrões de bits (611A- 611N) para uso como o conjunto de códigos de espalhamento; e - armazenar um padrão de bit (611) num dispositivo de memória (610) de um satélite (601) e/ou armazenar padrões de bits (611A-611N) num dispositivo de memória (710) de um receptor (701) para receber um sinal de satélite transmitido por satélite (601); em que o processo de otimização (305-315) procura minimizar uma função-custo para o conjunto de padrões de bits (611A-611N), sendo que a dita função-custo é derivada de funções pares e ímpares de auto-correlação e de correlação cruzada, que são definidas como a seguir:
Figure img0058
onde a e bsão sequências de códigos, ké o desvio, Né o número de bits no código e oé a função de sinal, tal que o(n)=-1 para n < 0; e o(n)=+1 para n > 0; em que modificar (315) um padrão de bit naquele processo de otimização (305-315) compreende inverter bits em pares dentro de cada código mediante seleção de um bit com valor 0 para inverter e um bit com valor 1 para inverter, por onde padrão de bit permanece balanceado por todo o processo de otimização (305-315), e em que o número de bits invertido é reduzido à medida que a função-custo diminui; em que cada padrão de bit no mencionado conjunto inicial tem primeiros lóbulos laterais da ACF de zero, e em que modificar (315) um padrão de bit naquele processo de otimização (305-315) retém o valor zero de referidos primeiros lóbulos laterais da ACF ao: (i) determinar se ak-1 + ak+1 = aj-1 + aj+1, onde aj e aksão os bits selecionados para inversão; e (ii) se não, selecionar novos bits aj e ak para inversão, de modo a conservar o valor zero daquele primeiro lóbulo lateral da ACF; e em que o dito processo de otimização (305-315) compreende (a) calcular (305) a função-custo para o conjunto inicial ou conjunto atualizado de padrões de bits, (b) determinar se uma condição de terminação ou convergência foi satisfeita (310), e, se não, atualizar (315) pelo menos um dos padrões de bits para formar um conjunto atualizado de padrões de bits e repetir (a) e (b); em que, após atualizar (315) pelo menos um dos padrões de bits, aquele cálculo (305) da função-custo compreende: calcular uma mudança em uma função de correlação cruzada (CCF) par por:
Figure img0059
onde né o desvio entre códigos a e b, aplicar tal mudança para atualizar uma CCF par já calculada; calcular uma mudança em uma função de correlação cruzada (CCF) ímpar por:
Figure img0060
aplicar tal mudança para atualizar uma CCF ímpar já calculada; e calcular (305) a função-custo com base nas CCFs atualizadas.
2. Método de acordo com a reivindicação 1, caracterizado pelo fato de atualizar (315) pelo menos um dos padrões de bits compreender a etapa de selecionar para atualização do par de códigos que produziu o ou um pico de correlação máxima em preferência aos outros códigos.
3. Método de acordo com a reivindicação 1 ou reivindicação 2, caracterizado pelo fato de que modificar (220) o padrão de bit para assegurar que ele seja balanceado compreende: determinar (215) se A=B, onde A equivale ao número de 0s em um padrão de bit e B equivale ao número de 1s, e, se positivo, nenhuma ação é tomada, e se for determinado (215) que A>B, selecionar (A-B) de maneira randômica zeros a partir do padrão de bit e invertê-los de 0 para 1, deste modo produzindo um padrão de bit balanceado, e se for determinado (215) que B>A, selecionar (B-A) de maneira randômica 1s a partir do padrão de bit e invertê-los de 1 para 0, desta maneira produzindo um padrão de bit balanceado.
4. Método de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que modificar (220) o padrão de bit para obter uma ACF de zero compreende: inverter um “1” escolhido aleatoriamente e um “0” escolhido aleatoriamente no padrão de bit até o primeiro lóbulo lateral da ACF for zero.
5. Método de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que tais funções pares e ímpares de auto-correlação e de correlação cruzada são calculadas para todos os desvios possíveis entre os padrões de bits.
6. Método de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que aquela função-custo é especificada como:
Figure img0061
onde a e b representam códigos diferentes, k representa o desvio entre os dois códigos, e o e e representam versões ímpares e pares da função de correlação.
7. Método de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que aquela função-custo é especificada como:
Figure img0062
onde a potência n é 2 ou 6.
8. Método de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que aquela função-custo é especificada como:
Figure img0063
onde WBé o limite Welch, especificado como:
Figure img0064
9. Método de acordo com a reivindicação 8, caracterizado pelo fato de que né configurável, e é de preferência 2, 6 ou 8.
10. Método de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que gerar cada conjunto inicial de padrões de bits como uma sequência randômica de bits compreende gerar as sequências randômicas pela provisão de uma entrada para um gerador de número (pseudo-)randômico.
11. Método de acordo com a reivindicação 10, caracterizado pelo fato de que a entrada utilizada para criar cada sequência de bits é escrita em um arquivo de registro, de tal modo que um processo para gerar o conjunto inicial de padrões de bits possa ser repetido deterministicamente.
12. Sinal de satélite, caracterizado pelo fato de incorporar pelo menos um padrão de bit a partir de um conjunto de padrões de bits armazenados correspondendo a códigos de espalhamento usados por um sistema de navegação por satélite, em que um receptor usa o conjunto de padrões de bits armazenados para adquirir sinais a partir dos sistemas de navegação por satélite, e em que o conjunto de padrões de bits armazenados são criados por: - gerar (105) um conjunto inicial de padrões de bits, onde cada padrão de bit representa um código de espalhamento potencial e cada padrão de bit no conjunto inicial de padrões de bits é gerado mediante (i) geração de cada conjunto inicial de padrões de bits como uma sequência randômica de bits, em que o número de bits em um padrão de bit está no intervalo de 1.000 a 10.000 e, para cada padrão de bit, (ii) aplicação ao padrão de bit de uma primeira condição precursora que requer que tais padrões de bits (611A-611N) sejam balanceados, por meio de que existem, igualmente, muitos 1s e 0s neles, e se (215) o padrão de bit não for balanceado, modificar (220) o padrão de bit para assegurar que ele seja balanceado e (iii) aplicação ao padrão de bit de uma segunda condição precursora que requer que primeiro lóbulo lateral, que corresponde a um desvio de bit de um lugar, de uma função de auto-correlação (ACF) seja zero, por meio de que o primeiro lóbulo lateral da ACF para cada padrão de bit é determinado (215) e, para aqueles padrões de bits onde a ACF é não zero no primeiro lóbulo lateral, o padrão de bit é modificado (220) para obter uma ACF de zero, assim resultando no conjunto inicial de padrões de bits; e - efetuar (110), em um sistema de hardware, um processo de otimização (305-315) no conjunto inicial de padrões de bits, por meio do qual pelo menos alguns dos padrões de bits no referido conjunto inicial de padrões de bits são modificados, para criar um conjunto final de padrões de bits (611A- 611N) para uso como o conjunto de códigos de espalhamento; e - armazenar um padrão de bit (611) num dispositivo de memória (610) de um satélite (601) e/ou armazenar padrões de bits (611A-611N) num dispositivo de memória (710) de um receptor (701) para receber um sinal de satélite transmitido por satélite (601); em que o processo de otimização (305-315) procura minimizar uma função-custo para o conjunto de padrões de bits (611A-611N), sendo que a dita função-custo é derivada de funções pares e ímpares de auto-correlação e de correlação cruzada, que são definidas como a seguir:
Figure img0065
onde a e bsão sequências de códigos, ké o desvio, Né o número de bits no código e oé a função de sinal, tal que o(n)=-1 para n < 0; e o(n)=+1 para n > 0; em que modificar (315) um padrão de bit naquele processo de otimização (305-315) compreende inverter bits em pares dentro de cada código mediante seleção de um bit com valor 0 para inverter e um bit com valor 1 para inverter, por onde padrão de bit permanece balanceado por todo o processo de otimização (305-315), e em que o número de bits invertido é reduzido à medida que a função-custo diminui; em que cada padrão de bit no mencionado conjunto inicial tem primeiros lóbulos laterais da ACF de zero, e em que modificar (315) um padrão de bit naquele processo de otimização (305-315) retém o valor zero de referidos primeiros lóbulos laterais da ACF ao: (i) determinar se ak-1 + ak+1 = aj-1 + aj+1, onde aj e aksão os bits selecionados para inversão; e (ii) se não, selecionar novos bits aj e ak para inversão, de modo a conservar o valor zero daquele primeiro lóbulo lateral da ACF; e em que o dito processo de otimização (305-315) compreende (a) calcular (305) a função-custo para o conjunto inicial ou conjunto atualizado de padrões de bits, (b) determinar se uma condição de terminação ou convergência foi satisfeita (310), e, se não, atualizar (315) pelo menos um dos padrões de bits para formar um conjunto atualizado de padrões de bits e repetir (a) e (b); em que, após atualizar (315) pelo menos um dos padrões de bits, aquele cálculo (305) da função-custo compreende: calcular uma mudança em uma função de correlação cruzada (CCF) par por:
Figure img0066
onde né o desvio entre códigos a e b, aplicar tal mudança para atualizar uma CCF par já calculada; calcular uma mudança em uma função de correlação cruzada (CCF) ímpar por:
Figure img0067
aplicar tal mudança para atualizar uma CCF ímpar já calculada; e calcular (305) a função-custo com base nas CCFs atualizadas.
BRPI0419233-8A 2004-12-17 2004-12-17 método para criar um conjunto de códigos de espalhamento para uso em um sistema de navegação por satélite, e, sinal de satélite BRPI0419233B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2004/014488 WO2006063613A1 (en) 2004-12-17 2004-12-17 Spreading codes for a satellite navigation system

Publications (3)

Publication Number Publication Date
BRPI0419233A BRPI0419233A (pt) 2008-03-11
BRPI0419233A8 BRPI0419233A8 (pt) 2017-09-19
BRPI0419233B1 true BRPI0419233B1 (pt) 2020-12-01

Family

ID=34959490

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0419233-8A BRPI0419233B1 (pt) 2004-12-17 2004-12-17 método para criar um conjunto de códigos de espalhamento para uso em um sistema de navegação por satélite, e, sinal de satélite

Country Status (10)

Country Link
US (1) US8035555B2 (pt)
EP (1) EP1825626B1 (pt)
JP (1) JP4796589B2 (pt)
CN (1) CN101147347B (pt)
BR (1) BRPI0419233B1 (pt)
CA (1) CA2590019C (pt)
ES (1) ES2688755T3 (pt)
HK (1) HK1117966A1 (pt)
RU (1) RU2422992C2 (pt)
WO (1) WO2006063613A1 (pt)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8090005B2 (en) * 2005-07-01 2012-01-03 European Space Agency Spreading codes for a satellite navigation system
US8917209B2 (en) 2009-09-10 2014-12-23 Nextnav, Llc Coding in a wide area positioning system (WAPS)
US20110138255A1 (en) * 2009-12-09 2011-06-09 Lee Daniel Chonghwan Probabilistic Learning-Based Decoding of Communication Signals
US8739010B2 (en) * 2010-11-19 2014-05-27 Altera Corporation Memory array with redundant bits and memory element voting circuits
EP2498432B1 (en) * 2011-03-11 2014-06-04 Knowledge Development for POF, S.L. Adaptative error correcting code for data communications over a plastic optical fibre
KR102096677B1 (ko) * 2011-06-28 2020-06-01 넥스트나브, 엘엘씨 광역 위치결정 시스템(waps)에서의 신호 송신 방법, 저장매체 및 네트워크.
US9645249B2 (en) 2011-06-28 2017-05-09 Nextnav, Llc Systems and methods for pseudo-random coding
CN103364799A (zh) * 2012-03-31 2013-10-23 迈实电子(上海)有限公司 导航比特边界确定装置和方法,接收机,移动设备,以及卫星导航定位方法
US8644788B2 (en) 2012-05-02 2014-02-04 Skytraq Technology, Inc. Signal receiver, portable computer and signal acquisition method used in satellite communication system
EP2701323B1 (en) * 2012-08-24 2015-03-25 Airbus DS GmbH Generating and processing of CDMA signals
US10386492B2 (en) 2013-03-07 2019-08-20 Trimble Inc. Verifiable authentication services based on global navigation satellite system (GNSS) signals and personal or computer data
CN103197328B (zh) * 2013-03-14 2015-05-27 中国人民解放军国防科学技术大学 一种基于2ms数据存储的高动态卫星接收机快速捕获方法
RU2554981C1 (ru) * 2014-08-06 2015-07-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Белгородский государственный технологический университет им. В.Г. Шухова" Алюмосиликатное кислотостойкое вяжущее и способ его получения
CN104333410A (zh) * 2014-10-09 2015-02-04 深圳市华信天线技术有限公司 卫星信号搜索方法、装置及终端
US9225384B1 (en) * 2014-10-20 2015-12-29 The Boeing Company Methods and apparatus for generating composite code sequences
EP3104195A1 (en) 2015-06-10 2016-12-14 European Space Agency Method and apparatus for tracking a binary offset carrier navigation signal
JP6562455B2 (ja) * 2015-06-17 2019-08-21 Necネットワーク・センサ株式会社 通信装置及びその拡散符号生成方法
KR20180063141A (ko) * 2015-10-05 2018-06-11 넥스트나브, 엘엘씨 지상 송신기로부터 신호를 생성하기 위한 시스템 및 방법, gnss 수신기 하드웨어를 사용하여 신호를 처리하기 위한 방법 및 시스템
CN106772468A (zh) * 2016-12-12 2017-05-31 太原理工大学 新型的卫星信号fft并行捕获算法
US10686469B2 (en) * 2017-05-15 2020-06-16 Qualcomm Incorporated Payload size ambiguity and false alarm rate reduction for polar codes
WO2019020201A1 (en) 2017-07-28 2019-01-31 European Space Agency RECEIVER AND METHOD FOR PROCESSING A BROADBAND SIGNAL
US10768310B2 (en) * 2018-01-03 2020-09-08 Samsung Electronics Co., Ltd System and method for providing code modification for multipath improvement in GNSS receivers
EP3803460A1 (en) 2018-05-24 2021-04-14 European Space Agency Method and apparatus for performing joint channel and time estimation in a gnss receiver
EP3776001B1 (en) * 2018-10-09 2022-01-19 The European Union, represented by the European Commission Transmission of satellite navigation message into multiple pages encoded for optimal retrieval at receiver in a fully interchangeable way
EP3671281A1 (en) 2018-12-21 2020-06-24 European Space Agency Method and system for processing a gnss signal using homomorphic encryption
CN110458103B (zh) * 2019-08-12 2022-03-18 四川九洲电器集团有限责任公司 塔康信号检测方法、设备及存储介质
CN112578410B (zh) * 2020-12-11 2023-09-01 中国人民解放军空军通信士官学校 一种针对基于lms的gps进化带限高斯噪声干扰算法
FR3130651B1 (fr) 2021-12-17 2023-12-15 Ifp Energies Now Cyclone pour une installation et un procede de combustion en boucle chimique muni d’une conduite d’arrivee a parois inclinees et injection de gaz
CN117406249B (zh) * 2023-12-14 2024-03-08 成都安则优科技有限公司 一种反无人机卫星导航设备及数据回放方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4642647A (en) 1983-08-29 1987-02-10 Litton Systems, Inc. Signal generator for radio navigation system
FR2712444B1 (fr) * 1993-11-10 1995-12-29 Alcatel Mobile Comm France Procédé de construction d'un code d'étalement associé à un utilisateur d'un système de transmission numérique à accès multiple par répartition par codes et à séquence directe, et procédé correspondant de génération d'un tableau.
EP0767544A3 (en) 1995-10-04 2002-02-27 Interuniversitair Micro-Elektronica Centrum Vzw Programmable modem using spread spectrum communication
FR2756692B1 (fr) * 1996-11-29 1999-01-08 Commissariat Energie Atomique Procede de transmission a etalement de spectre par sequence directe, avec generation et optimisation des sequences
JP2002071782A (ja) 2000-08-31 2002-03-12 Hitachi Ltd 測位機能付き情報端末
JP3792145B2 (ja) 2001-09-28 2006-07-05 日本無線株式会社 相関値識別方法
US6912240B2 (en) * 2001-11-26 2005-06-28 Time Domain Corporation Method and apparatus for generating a large number of codes having desirable correlation properties
JP2003255040A (ja) 2002-02-28 2003-09-10 Sony Corp Gps受信機および受信方法
US6937643B2 (en) * 2002-04-30 2005-08-30 Qualcomm Inc ROM-based PN generation for wireless communication
US7400666B2 (en) * 2002-08-12 2008-07-15 Alereon, Inc. Method for generating communication signal sequences having desirable correlation properties and system for using game
WO2004057784A1 (en) 2002-12-23 2004-07-08 Bae Systems Plc Improvements in or relating to spreading codes for quasisynchronous code division multiple access systems
US7529291B2 (en) * 2004-04-13 2009-05-05 Raytheon Company Methods and structures for rapid code acquisition in spread spectrum communications
US8090005B2 (en) * 2005-07-01 2012-01-03 European Space Agency Spreading codes for a satellite navigation system

Also Published As

Publication number Publication date
ES2688755T3 (es) 2018-11-06
CA2590019A1 (en) 2006-06-22
EP1825626B1 (en) 2018-07-04
RU2007126980A (ru) 2009-01-27
EP1825626A1 (en) 2007-08-29
JP4796589B2 (ja) 2011-10-19
BRPI0419233A8 (pt) 2017-09-19
CN101147347B (zh) 2014-10-01
HK1117966A1 (en) 2009-01-23
US20080246655A1 (en) 2008-10-09
JP2008524881A (ja) 2008-07-10
CA2590019C (en) 2014-01-28
RU2422992C2 (ru) 2011-06-27
CN101147347A (zh) 2008-03-19
WO2006063613A1 (en) 2006-06-22
BRPI0419233A (pt) 2008-03-11
US8035555B2 (en) 2011-10-11

Similar Documents

Publication Publication Date Title
BRPI0419233B1 (pt) método para criar um conjunto de códigos de espalhamento para uso em um sistema de navegação por satélite, e, sinal de satélite
JP4796626B2 (ja) 衛星ナビゲーション・システムのための拡散符号
KR101372985B1 (ko) 카오스 확산 코드 및 그 생성 방법
CN103988094B (zh) 使用基于伪随机噪声序列的扩频码的导航系统
US20220229727A1 (en) Encoding and storage node repairing method for minimum storage regenerating codes for distributed storage systems
CN109557568B (zh) 一种测距码产生方法及装置
JP2002501321A (ja) Ds−cdma−ss通信システムにおいてコードブック索引付け法を用いることにより高ビット密度を達成する方法
Baldi et al. On the autocorrelation properties of truncated maximum-length sequences and their effect on the power spectrum
Laurenti et al. Optimal Compromise among security, availability and resources in the design of sequences for GNSS spreading code authentication
US20110122926A1 (en) Apparatus and method for generating pseudo noise code
CN101142746A (zh) 纠错码
CN111581669B (zh) 一种可变因子调节的区块链轻量级节点隐私保护方法
CN117891886A (zh) 一种路线地质调查图快捷成图方法
KR101269849B1 (ko) 통신 시스템의 채널 확산을 위한 수열 족의 생성 장치 및 방법
KR20230049967A (ko) 무선 분산 통신 시스템에서 신뢰 필드를 이용한 패킷의 무결성 검사 방법 및 장치
Delva Coherent PN sequence acquisition
BR102015016436B1 (pt) Método e sistema para produzir uma transmissão de envelope constante sobre um sinal de portador
Solé Gaset Software defined radio for GPS
Gaset et al. Software Defined Radio for GPS

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: THE EUROPEAN UNION (BE)

B15K Others concerning applications: alteration of classification

Ipc: H04B 1/707 (1995.01), H04J 13/10 (2011.01), H04J 1

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B12B Appeal against refusal [chapter 12.2 patent gazette]
B25F Entry of change of name and/or headquarter and transfer of application, patent and certif. of addition of invention: change of name on requirement

Owner name: THE EUROPEAN UNION (BE)

Free format text: A FIM DE ATENDER A CORRECAO DO NOME REQUERIDA ATRAVES DA PETICAO NO 870170102087, DE 26/12/2017, E NECESSARIO APRESENTAR DOCUMENTO QUE COMPROVE QUE O NOME DA EMPRESA E O QUE ESTA SENDO SOLICITADO E NAO O QUE CONSTA COMO TITULAR DA PATENTE.

B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 01/12/2020, OBSERVADAS AS CONDICOES LEGAIS.