Spreading codes for a satellite navigation system
Abstract
Method for creating a set of secondary widening codes to be used in a satellite navigation system comprising a satellite constellation (601), in which each satellite of the constellation uses a leveling widening code (611) comprising at least one primary code and one secondary code, and in which each satellite of the constellation is assigned a secondary spreading code different from among said set of secondary spreading codes, the method comprising: generating (510) an initial set of bit patterns, in which each pattern bit represents a potential secondary spread code; and perform (525, 535, 545) an optimization process on bit patterns within the initial set of bit patterns, whereby at least some of the bit patterns in said initial set are modified or substituted, to create a final set of bit patterns to be used as a set of secondary spreading codes, in which the optimization process uses a performance or cost function obtained from at least one of: (a) the autocorrelation function for a bit pattern, and / or (b) the cross-correlation function between different bit patterns.

Term
Term ended
Projected expiry passed 1 July 2025, 1.2 years ago.
- Priority and filed
- Published
- Projected expiry
- Today
26 claims: 10 independent, 16 dependent
- 1ES 2 333 735 T3 ES 2 333 735 T3 CLAIMS REIVINDICACIONES 1. A method of creating a set of secondary spreading codes for use in a satellite navigation system comprising a constellation of satellites (601), in which each satellite in the constellation uses a tiered spreading code (611) comprising at least one primary code and one secondary code, and in which each satellite of the constellation is assigned a secondary spreading code different from said set of secondary spreading codes, the method comprising:1. Método para crear un conjunto de códigos de ensanchamiento secundarios para ser usados en un sistema de navegación por satélite que comprende una constelación de satélites (601), en el que cada satélite de la constelación utiliza un código (611) de ensanchamiento por niveles que comprende por lo menos un código primario y un código secundario, y en el que a cada satélite de la constelación se le asigna un código de ensanchamiento secundario diferente de entre dicho conjunto de códigos de ensanchamiento secundarios, comprendiendo el método: generar (510) un conjunto inicial de patrones de bits, en los que cada patrón de bits representa un código de ensanchamiento secundario potencial;y realizar (525, 535, 545) un proceso de optimización sobre patrones de bits dentro del conjunto inicial de patrones de bits, con lo cual por lo menos algunos de los patrones de bits en dicho conjunto inicial son modificados o sustituidos, para crear un conjunto final de patrones de bits para ser usados como conjunto de códigos de ensanchamiento secundarios, en el que el proceso de optimización utiliza una función de rendimiento o coste obtenida a partir de por lo menos una de entre: (a) la función de autocorrelación para un patrón de bits, y/o (b) la función de correlación cruzada entre patrones de bits diferentes. generating (510) an initial set of bit patterns, in which each bit pattern represents a potential secondary spreading code;and perform (525, 535, 545) an optimization process on bit patterns within the initial set of bit patterns, whereby at least some of the bit patterns in said initial set are modified or replaced, to create a final set of bit patterns to be used as a set of secondary spreading codes, in which the optimization process uses a performance or cost function obtained from at least one of: (a) the autocorrelation function for one bit pattern, and / or (b) the cross-correlation function between different bit patterns.
- 5A method according to any of the preceding claims, wherein the optimization process includes modifying the bit patterns by randomly inverting a bit in at least one of the bit patterns (525). 5. Método según cualquiera de las reivindicaciones anteriores, en el que el proceso de optimización incluye modificar los patrones de bits invirtiendo aleatoriamente un bit en por lo menos uno de los patrones de bits (525).
- 6Method according to any of the preceding claims, in which the optimization process includes a first phase in which bit patterns that have good individual properties are identified according to said performance or cost function obtained from the autocorrelation function for a pattern of bits, and a second phase in which the set of secondary spreading codes is selected from the identified bit patterns having good individual properties. 6. Método según cualquiera de las reivindicaciones anteriores, en el que el proceso de optimización incluye una primera fase en la que se identifican patrones de bits que tienen buenas propiedades individuales según dicha función de rendimiento o coste obtenida a partir de la función de autocorrelación para un patrón de bits, y una segunda fase en la que se selecciona el conjunto de códigos de ensanchamiento secundarios a partir de los patrones de bits identificados que tienen buenas propiedades individuales.
- 9A method according to any one of the preceding claims, wherein the number of bits in a bit pattern is in the range of 25 to 512. 9. Método según cualquiera de las reivindicaciones anteriores, en el que el número de bits en un patrón de bits está en el intervalo comprendido entre 25 y 512.
- 11Receptor (701) que incorpora un conjunto final de patrones de bits creados usando el método según cualquiera de las reivindicaciones anteriores. eleven. Receiver (701) incorporating a final set of bit patterns created using the method according to any of the preceding claims.
- 14Receiver according to any of claims 11 to 13, said receiver incorporating a final set of bit patterns selected substantially from the bit patterns set forth in Appendix 1.1 or Appendix 1.2. 14. Receptor según cualquiera de las reivindicaciones 11 a 13, incorporando dicho receptor un conjunto final de patrones de bits seleccionados sustancialmente a partir de los patrones de bits expuestos en el Apéndice 1.1 ó el Apéndice 1.2.
- 15Dispositivo de memoria extraíble para ser usado en un receptor, en el que dicho dispositivo de memoria incorpora un conjunto final de patrones de bits creados usando el método según cualquiera de las reivindicaciones 1 a 10. fifteen. Removable memory device for use in a receiver, wherein said memory device incorporates a final set of bit patterns created using the method according to any of claims 1 to 10. ES 2 333 735 T3 ES 2 333 735 T3
- 18Apparatus (601) incorporating one or more bit patterns from the final set of bit patterns created using the method according to any of claims 1 to 12. 18. Aparato (601) que incorpora uno o más patrones de bits del conjunto final de patrones de bits creados usando el método según cualquiera de las reivindicaciones 1 a 12.
- 22Method of operation of a receiver (701) to be used in conjunction with a satellite navigation system, the method comprising:22. Método de funcionamiento de un receptor (701) para ser usado conjuntamente con un sistema de navegación por satélite, comprendiendo el método: acceder a un conjunto de patrones de bits almacenados (611A, 611B), correspondiéndose dichos patrones de bits con códigos secundarios usados por el sistema de navegación por satélite y creados usando el método según cualquiera de las reivindicaciones 1 a 10;y usar los patrones de bits almacenados para adquirir señales del sistema de navegación por satélite. accessing a set of stored bit patterns (611A, 611B), said bit patterns corresponding to secondary codes used by the satellite navigation system and created using the method according to any of claims 1 to 10;and using the stored bit patterns to acquire signals from the satellite navigation system.
- 25Method of operation of a server that communicates with receivers for use in conjunction with a satellite navigation system, the method comprising:25. Método de funcionamiento de un servidor que se comunica con receptores para su uso conjuntamente con un sistema de navegación por satélite, comprendiendo el método: almacenar un conjunto de patrones de bits, correspondiéndose dichos patrones de bits con códigos secundarios usados por el sistema de navegación por satélite y creados usando el método según cualquiera de las reivindicaciones 1 a 10;storing a set of bit patterns, said bit patterns corresponding to secondary codes used by the satellite navigation system and created using the method according to any one of claims 1 to 10;receiving a request from a receiver to access the set of stored bit patterns;and supplying the stored bit patterns to the receiver in response to said request for use in acquiring signals from the satellite navigation system. recibir una solicitud de un receptor para acceder al conjunto de patrones de bits almacenados;y suministrar los patrones de bits almacenados al receptor en respuesta a dicha solicitud para su uso en la adquisición de señales del sistema de navegación por satélite.
Independent claims10
500 paragraphs in 25 sections, as filed
ES 2 333 735 T3
DESCRIPTION
Spread codes for a satellite navigation system.
Field of the invention
The present invention relates to the generation and use of spreading codes for a satellite navigation system.
Background of the invention
Satellite navigation systems are becoming increasingly important in a wide range of applications, including handheld devices for determining position, in-car navigation support, and others. The main satellite navigation system in service today is the Global Positioning System (GPS) operated by the United States Department of Defense. Worldwide sales of GPS equipment reached nearly $ 3.5 billion for 2003, and this number is expected to grow steadily over the next several years. Later in the decade, the launch and service availability of a European counterpart satellite navigation system, called Galileo, is planned.
A satellite navigation system comprises a constellation of satellites that each broadcast one or more signals to the earth. The basic components of a satellite signal are a spreading code (also referred to as a positioning, timing or ranging code) that is combined with navigation data. The resulting combination is then modulated onto a carrier at a set frequency for transmission to the ground. In general, each satellite transmits on multiple frequencies, which can help compensate for any atmospheric distortion.
In some cases, multiple signals (referred to as channels) can be modulated onto a single carrier through some appropriate multiplexing scheme. For example, certain Galileo signals are planned to comprise a quadrature phase data channel with a pilot channel. The pilot channel contains only a spreading code, but no navigation data, while the data channel contains both the spreading code and the navigation data.
The spreading code component of a satellite signal typically comprises a predetermined sequence of bits (sometimes referred to as "segments") and is used to perform two main tasks. First, the spreading code provides a synchronization mechanism to allow a receiver to lock onto a satellite signal. Thus, each satellite (and typically each channel broadcast from that satellite) has its own synchronization code. When a receiver is activated for the first time, it does not know what satellite signals can be received, since certain satellites in the constellation will be below the horizon for that particular location at that particular point in time. The receiver uses the sync codes to lock onto a signal from a first satellite. Once this has been done, the navigation data on the signal can be accessed. This then provides ephemeris data for the other satellites in the constellation, and allows the remaining satellites that are visible to the receiver to be captured relatively quickly.
Many receivers use a two-stage acquisition process. In the first phase, the receiver performs a simultaneous cross-correlation of the incoming signal with respect to the set of all possible signals. This searches for a signal from any satellite, with any possible timing drift between the satellite and receiver, and with any possible Doppler shift between the satellite and the receiver (which depends on the movement of the satellite in space). If a cross-correlation is found to exceed a predetermined threshold, then a second phase is performed involving a more detailed analysis, for the relevant combination of satellite, timing drift and Doppler shift. This second phase analysis may entail, for example, a longer integration time, an attempt to access and encode the navigation data, etc., to confirm that a correct acquisition has been made.
The second main task of a spreading code is to provide an estimate of the distance from the satellite to the receiver, based on the time it took for the signal to travel from the satellite to the receiver, which can be expressed as: c (Tr- Ts), in which:
c is the speed of light (known, subject to ionospheric effects, etc.),
Ts is the sending time from the satellite, which is encoded in the signal itself, and
Tr is the reception time of the signal at the receiver.
The position of the receiver in three-dimensional space can then be determined using a trilateration process, given the known positions of the satellites (as specified in their navigation data). In theory, this can be done with signal information from a minimum of three satellites. However, in practice, it can be said that Tr = Tm + or, where Tm is the measured reception time at the receiver, i is the drift between the
ES 2 333 735 T3 receiver clock and satellite clock, which is generally unknown, except for specialized receivers. This then implies that signal information is obtained from at least one additional satellite to compensate for the unknown time drift at the receiver. If signals from other satellites are available, a statistical position determination can be made using any appropriate algorithm such as least squares. This can also provide some indication of the error associated with an estimated position.
An important parameter for the spreading code is the bit rate at which the spreading code is transmitted, as this, in turn, controls the precision with which positional determination can be performed. For example, with a 1 MHz bit rate, each bit represents a light travel time of 300 meters. The positioning accuracy is then determined by the level of precision with which the phase drift between the satellite and the receiver can be assessed, for a single bit. This generally depends on the noise in the system. For example, if the phase drift can be measured to an accuracy of 90 degrees (π / 2), this corresponds to a positional determination of 75 meters. It will be appreciated that having a higher bit rate for the spreading code allows for more accurate position determinations.
Another important parameter for the spreading code is its total length, in other words the number of bits or segments in the spreading code before it repeats. One reason for this is that the finite length of the spreading code can result in ambiguity in determining the position. For example, suppose the bit rate is 10 MHz and the total length of the bit stream is 256 bits, which therefore corresponds to a light travel time of 7.68 km. As a result, the measurement of the distance from the satellite to the receiver is not exclusively specified, but instead can only be expressed as 7.68n + d km, where d is determined by the relative timing of the spreading code as broadcast and as received, but n is an unknown integer. There are several ways in which ambiguity about the value of n can be resolved, including using signals from a larger number of satellites, or using knowledge of an approximate position obtained from some other source. A common approach is to relate the phase of the code to the bit edge corresponding to the navigation data bit (this process is called bit synchronization), and also to relate the bit edge to the time of week (ToW) contained. in the navigation data transmitted by the satellite.
It will be appreciated that increasing the repeat length for the spreading code helps to reduce problems with ambiguous distance determinations. A longer length for the spreading code also provides better separation of signals from different sources, and increased robustness against interference. On the other hand, having a longer repetition length for the spreading code can delay the initial acquisition of the signal, as well as require more processing capacity within the receiver. The length of the spreading code also influences the data rate that can be used for the navigation data, as there is typically only one bit of navigation data for each complete sequence of spreading code (otherwise both would interfere) . Therefore, the longer the repetition length for the spreading code, the lower the bit rate for the navigation data.
A known strategy to counter this problem is the use of a hierarchical or tiered spreading code based on primary and secondary codes. If the primary code is assumed to have N1 bits and the secondary code has N2 bits, then the first N1 bits of the full spreading code correspond to the primary sequence combined by an exclusive OR operation with the first bit of the secondary code, the following N1 bits of the spreading code comprise a repetition of the N1s of the primary code, this time combined by means of an exclusive OR operation with the second bit of the secondary code, and so on. This provides a total repeat length for the N1xN2 code. However, the repetition length for synchronization purposes is only N1, as the primary code will continue to provide a correlation peak regardless of the value of the secondary code bit (this will only change the sign of the correlation peak). Similarly, the bit rate of the navigation data depends only on the length of the primary code (N1), rather than the length of the combined primary and secondary codes (N1 * N2).
GPS spreading codes are implemented using linear feedback shift registers (LFSR), in which selected outputs from an N-phase shift register are derived and fed back to the input. Feedback connections in the LFSR can be represented as a polynomial of order N, whereby the operation of an LFSR can be fully specified by its polynomial and the initial setting of the LFSR.
GPS uses a subset of LFSRs known as Gold codes that have certain special mathematical properties. One of them is that they generate a pseudo-random noise output that has a maximum repetition length of 2<sup>N</sup> -1, so a relatively compact LFSR can generate output with a high repetition length. Gold codes also have good autocorrelation properties that support precise positioning. In particular, the autocorrelation function has a well-defined peak at zero time shift, and is relatively small for all other time shifts (ie, nonzero). It is also possible to select a set of Gold codes that have good cross-correlation properties, whereby the cross-correlation function between different codes is kept relatively small. This is important for signal acquisition as it helps prevent a sync code from one satellite from being accidentally taken for a sync code from another satellite. Another important practical criterion
ES 2 333 735 T3 for a spreading code is having equal (or nearly equal) numbers of ones and zeros - this is referred to as balanced.
Additional information on satellite navigation systems, and in particular GPS, can be found in: "ReTooling the Global Positioning System" by Per Enge, pages 64 to 71, Scientific American, May 2004, and in "Global Positioning System : Signals, Measurements and Performance ”, by Misra and Enge, Ganga-Jamuna Press, 2001, ISBN 0-9709544-0-9. Information on the proposed Galileo signals can be found in: "Status of Galileo Frequency and Signal Design" by Hein et al, September 2002, available at: http://europa.eu.int/comm/dgs/energy_ transport / galileo / doc / galileo_stf_ion2002.pdf, see also "Galileo Frequency and Signal Design" by Issler et al, GPS World, June 2003, available at: http://www.gpsworld.com/gpsworld/article/articleDetail.jsp? id = 61244. A proposed Galileo / GPS receiver is described in: "HIGAPS - A Large-Scale Integrated Combined Galileo / GPS Chipset for the Consumer Market" by Heinrichs et al, available at http://forschung.unibw-muenchen.de/papers/krc5ejjffurjj9 jsrxk4spthvmg0be.pdf.
Although the use of Gold codes is well established for existing satellite navigation systems, there are some limitations associated with such codes. For example, they are only available with certain code lengths (not all values of N can be used for the LFSR polynomial). In general, the length of the code is determined by the ratio of the segment rate of the spreading code and the bit rate of the navigation data. If the length of the code is limited to an available Gold code, then this implies a restriction on the segment rate and the bit rate, which, in turn, could influence other considerations, such as acquisition time and positioning accuracy. In some cases, the limitation on the code length for Gold codes has been overcome by using truncated Gold codes, although this truncation has a negative impact on the mathematical properties of the code set (in terms of the autocorrelation function, etc.).
Additionally, the cross-correlation properties of Gold codes are not generally optimized for the situation where the polarity of the code changes from one repetition of the code to the next, depending on the navigation data being transmitted. This last problem is aggravated when the bit rate of the navigation data is relatively high (as for Galileo), since this results in a significant probability that a transmission of a spreading code has the opposite polarity with respect to the immediately preceding transmission of the spreading code. (This is also the reason why pilot channels are provided in the Galileo, in order to facilitate the acquisition without interruptions by the navigation data).
Cross-correlation properties are also particularly interesting in relation to locations with relatively poor signal reception, such as inside a building. In this case, a first signal from one satellite may be strong, for example, if there is a direct line of sight to the satellite through a window, while a second signal from another satellite may be substantially weaker, for example, if the direct line of sight to the second satellite passes through a significant building structure. In this situation, if an attempt is made to capture the second satellite, there is a risk that the correlation with respect to the first signal, stronger but incorrect, may produce a greater (or similar) result than the correlation with respect to the second signal, weaker but correct. Although any resulting misidentification of the first signal as the second signal will normally be corrected later in a subsequent acquisition phase, this introduces delays, as the acquisition procedure must then return to the first phase. If there are multiple such misidentifications, the acquisition time can be significantly increased.
Summary of the invention
Accordingly, an embodiment of the invention provides a method of creating a set of secondary spreading codes for use in a satellite navigation system comprising a constellation of satellites. Each satellite in the constellation uses a tiered spreading code comprising at least a primary code and a secondary code. Each satellite in the constellation is assigned a different secondary spreading code from among the set of secondary spreading codes. The method comprises generating an initial set of bit patterns, in which each bit pattern represents a potential secondary spreading code. The method further comprises performing an optimization process on bit patterns within the initial set of bit patterns so that at least some of the bit patterns in the initial set are modified or replaced, thereby creating a set end of bit patterns to be used as a set of secondary spreading codes. The optimization process uses a performance or cost function obtained from at least one of: (a) the autocorrelation function for a bit pattern, and / or (b) the cross-correlation function between bit patterns different.
It has been observed that the provision of different secondary codes for different satellites reduces the correlation between the codes of the different satellites, and therefore helps to improve the performance of the receiver. Using an optimization process to determine the secondary code set offers more flexibility than code sets based on mathematical algorithms (such as Gold codes), for example, in terms of the length of the secondary code, the number of codes available in a set, and the particular properties of the codes.
In one embodiment, the bit patterns in the initial set of bit patterns comprise random sequences of bits, although any other suitable starting patterns may be used, eg generated
ES 2 333 735 T3 by linear feedback shift registers or some other pseudo-random algorithm. It should be noted that the use of randomly created initial bit patterns generally helps to ensure good coverage of the overall search space for potential secondary codes. During the optimization process, the bit patterns can be modified by randomly inverting a bit in at least one of the bit patterns. For longer secondary codes, it may be desirable to invert multiple bits during at least the initial part of the optimization process to speed up convergence, although since secondary codes are typically relatively short (compared to the overall length of a code layered), it has generally been observed that reversing only a single bit of the code for each iteration provides a reasonable speed of convergence. Bit modifications can be reversed if they are found to lead to a reduction in performance (thus ensuring that the set of bit patterns does not deteriorate), although such a reduction in performance can be accepted in probabilistic terms (especially if the reduction is not too large), to provide the optimization with the ability to escape local maxima.
It will be appreciated that there are a wide variety of known optimization strategies, such as simulated annealing, genetic algorithms, and others, and any of these suitable strategies can be used to create the final set of bit patterns. In some of these strategies, optimization may involve generating a larger population of bit patterns followed by selection of the best examples (for example, survival of the fittest), while other strategies may be based on continuous modification. of individual bit patterns within a predetermined set.
In one embodiment, the optimization process includes rejecting bit patterns that do not meet a balance criterion, thereby ensuring that there is a relatively small DC component in the codes. The balance criterion can be based on the square root of the number of bits in a bit pattern, which reflects the expected dC component for a random code. It should be noted that, in other embodiments, code balancing could be included as part of formal optimization - that is, optimization works to reduce balance, rather than simply rejecting bit patterns with a balance that is greater than a certain threshold. Another possibility is that, once bit patterns have been identified that have good equilibrium properties, then the optimization process is arranged to leave the equilibrium unchanged (for example, by selecting the inversion of pairs of bits, which are one a 0 and another a 1). Other code criteria that could be considered in a similar way for balancing include the maximum length of the strings of a particular bit value (either one and / or zero).
The optimization process can use a performance (or cost) function obtained from the autocorrelation function for a bit pattern to select bit patterns that have good individual properties. A performance or cost function derived from the cross-correlation function can then be used to select a group of bit patterns that, in combination, form a good set of codes. It will be appreciated that minimal side lobes in the autocorrelation function result in better acquisition properties, for example, the signal can be more easily acquired under poor reception conditions, such as indoors and under tree canopy, whereas a Minimal cross-correlation with other codes reduces multiple access interference and internal system noise, thereby increasing the robustness of signal acquisition, monitoring, and data demodulation.
The optimization process may include a first phase of identifying bit patterns having good individual properties, and a second phase of selecting the set of secondary spreading codes from the identified bit patterns having good individual properties. The number of bit patterns identified as having good individual properties can be significantly greater than the number of satellites in the constellation. For example, the first phase can identify a group of 250 or more bit patterns that have good individual properties. This group then provides a good range to choose from during the second phase of optimization, as well as potential favorable uses of the codes outside of the satellite constellation itself - for example, in pseudolites (pseudo-satellites), as described above. more detailed later, which may lead to a requirement for a greater number of potential codes.
The use of the first and second stages for optimization has been found to be a convenient and efficient approach to performing optimization. However, other embodiments could only use a single optimization phase that is performed directly on groups of bit patterns.
In one embodiment, the second phase includes calculating the cross-correlation function between each pair of identified bit patterns that have good individual properties. This exhaustive search for all possible combinations has been found to be more computationally efficient than an iterative search for potential sets of bit patterns, although the latter approach could be used if appropriate (for example, if the number of identified bit patterns it is very big).
In one embodiment, the number of bits in a bit pattern for a secondary code is in the range of 25 to 512, more particularly in the range of 50 to 128. It should be noted that, for very short secondary code lengths, the available code space can be extensively searched to determine a suitable set of bit patterns (rather than using a form of optimization procedure as described herein ).
ES 2 333 735 T3
Another embodiment of the invention provides a receiver that incorporates a final set of bit patterns created using the above method. Bit patterns in the receiver can be protected by an error correcting code. The receiver may have at least one read-only memory (ROM) that stores the secondary code parts of the spreading codes, and optionally also the primary code parts. In some receivers, it may be possible to update this ROM, for example, to reflect any changes to the spreading codes broadcast from the satellites.
In some embodiments, the receiver can incorporate bit patterns for at least two satellite constellations, eg, Galileo and GPS. It should be noted that GPS spreading codes are Gold codes, and are typically generated within a receiver using a linear feedback shift register. However, the GPS codes could be stored as complete bit patterns if a single consistent approach is desired to be used for multiple satellite navigation systems.
It should be noted that there are several ways in which the bit patterns can be provided to the receiver. For example, in some embodiments, the bit patterns can be pre-installed in the receiver. In some embodiments, the bit patterns can be installed (or updated) in the receiver through some form of removable memory device, such as flash memory. In some embodiments, the bit patterns can be installed (or updated) in the receiver over a network, for example by downloading over the Internet or through a mobile phone network (the latter option is particularly convenient if the receiver itself is incorporated into some form of mobile phone device). With this last approach, it is not necessary to necessarily store the codes in the receiver itself, but instead, they can simply be accessed as and when required through the network.
Accordingly, another embodiment of the invention provides a method of operating a server communicating with receivers for use in conjunction with a satellite navigation system. The method comprises storing a set of bit patterns corresponding to secondary codes used by the satellite navigation system, and, in response to a request received from a receiver to access the set of stored bit patterns, supplying the bit patterns stored at the receiver to be used in acquiring signals from the satellite navigation system. The bit patterns can be supplied over the telephone network, the Internet, or any other suitable network.
Another embodiment of the invention provides a satellite that incorporates one or more bit patterns from a final set of bit patterns created using a method as described above. One or more of these bit patterns can also be incorporated into a pseudolite. (A pseudolite generates a positioning signal analogous to that of a navigation satellite, although a pseudolite is located on the ground, and is typically used in locations where high precision is required, for example around airports, to enhance the satellite positioning signals).
The approach described herein allows a decision on the final shape of the secondary spreading codes to be delayed until a very late stage of system development, since the hardware (for example, a memory device) does not need to be specific to a given code (as opposed to a particular LFSR). Furthermore, it may be possible to update the bit patterns stored in an already orbiting satellite. Such an update can be done in response to a detected error in the stored bit pattern (perhaps induced by a cosmic ray), as well as useful for in-orbit code testing during the last phase of deployment or commissioning. The update service is also beneficial in the case that it is desirable to transmit a different code with respect to the originally planned, for example, due to interference with other services, or due to the reassignment of certain slots. In such circumstances, a corresponding update will generally be required on the receivers, although another reason for the update may be to limit the set of users who can access the satellite spreading code (for either commercial or security reasons). .
It should be noted that although the approach described herein is primarily intended for use in satellite navigation systems (including pseudolites), it could also be used in other navigation or communication systems (satellite, terrestrial or maritime) that have previously used LFSR to generate tuning codes and the like.
Brief description of the drawings
Various embodiments of the invention will now be described in detail by way of example only with reference to the following drawings:
Figure 1A shows the simulated performance of the cross-correlation function (CCF) between the first two spreading codes sharing a common secondary code for the originally proposed Galileo E5A-Q pilots;
Figure 1B shows the simulated performance of the cross-correlation function between the first two spreading codes sharing a common secondary code for the originally proposed Galileo E5B-Q pilot signals;
ES 2 333 735 T3 Figure 2 shows the simulated performance of the cross correlation function (CCF) between the first two level spreading codes sharing a common secondary code for the Galileo E5A-Q pilot signals with a frequency drift 10 Hz Doppler;
Figure 3A shows the simulated performance of the cross-correlation function (CCF) using different secondary codes for the Galileo E5A-Q pilot signals according to an embodiment of the invention;
Figure 3B shows the simulated performance of the cross correlation function (CCF) using different secondary codes for the Galileo E5B-Q pilot signals according to an embodiment of the invention;
Figure 3C shows the simulated performance of the cross-correlation function (CCF) using different secondary codes for the Galileo E5A-Q pilot signals according to an embodiment of the invention, with the inclusion of a frequency drift (Doppler) of 10 Hz;
Figure 4 is a high-level flow chart showing a method for generating secondary spreading codes according to an embodiment of the invention;
Figure 5 is a flow chart showing part of the method of Figure 4 in more detail according to an embodiment of the invention;
Figure 6A is a representation of CCF performance for a group of 50 secondary code members for a zero Doppler shift generated in accordance with an embodiment of the invention;
Figure 6B is a representation of CCF performance for the same group of 50 secondary code members generated in accordance with one embodiment of the invention as shown in Figure 6A, albeit averaged over a range of Doppler shifts;
Figure 7 is a high-level schematic diagram of a subsystem for generating a layered code according to an embodiment of the invention;
Figure 8A is a high-level schematic diagram of a satellite system in accordance with one embodiment of the invention; and Figure 8B is a high-level schematic diagram of a receiver system in accordance with an embodiment of the invention.
Detailed description
The following abbreviations are used in the present description:
ACF Autocorrelation Function
BPSK Binary Phase Shift Modulation
CCF Cross Correlation Function
CRC Cyclic Redundancy Code
CS Commercial Service
CT Cross Interference
DC Direct Current (zero frequency component)
ECC Error Correction Code
ELW Excess Line Weight
HNV Highest Neighbor Value
LFSR Linear Feedback Displacement Register
MEWSD Mean Excess Welch Square Distance
MP Multipath
NV Neighbor Value
ES 2 333 735 T3
It should also be noted that, in this description, for convenience, code sequences are defined in the format of logic levels (0 and 1); in practice, these code sequences are translated into bipolar signal levels (± 1) for modulation and correlation purposes. Table 1 shows the mapping between the logic levels of the spreading code and the corresponding levels of the signal according to an embodiment of the invention.
TABLE 1
Correspondence between code logic and signal levels
PROM Programmable Read Only Memory
PSK Phase Shift Modulation
RMS Root Mean Square
ROM Read Only Memory.
<td>Logical Level</td><td>Signal Level</td>
<td> 1</td><td>-to</td>
<td> 0</td><td> +1,0</td>
Table 2 summarizes the proposed main ranging code parameters for each component of the Galileo signal for various services (OS = open service, CS = closed service, SoL = life safety service). This table excludes Public Regulated Service (PRS) spreading codes that use cryptographically generated pseudo-random sequences.
TABLE 2
Galileo spreading code summary
<td rowspan="2">Sign</td><td rowspan="2">Services)</td><td rowspan="2">Signal Type</td><td rowspan="2">Symbol Rate (per second)</td><td rowspan="2">Code Length (ms)</td><td rowspan="2">Segment Speed (Mcps)</td><td colspan="2">Code length (segments)</td>
<td>Primary</td><td>Secondary</td>
<td>E5A-I</td><td>YOU</td><td>Data</td><td> 50</td><td> 20</td><td> 10,23</td><td> 10230</td><td> 20</td>
<td>E5A-Q</td><td>YOU</td><td>Pilot</td><td>N / A</td><td> 100</td><td> 10,23</td><td> 10230</td><td> 100</td>
<td>E5B-I</td><td>OS / CS / So L</td><td>Data</td><td> 250</td><td> 4</td><td> 10,23</td><td> 10230</td><td> 4</td>
<td>E5B-Q</td><td>OS / CS / So L</td><td>Pilot</td><td>N / A</td><td> 100</td><td> 10,23</td><td> 10230</td><td> 100</td>
<td>E6-B</td><td>CS</td><td>Data</td><td> 1000</td><td> 1</td><td> 5,115</td><td> 5115</td><td> -</td>
<td>E6-C</td><td>CS</td><td>Pilot</td><td>N / A</td><td> 100</td><td> 5,115</td><td> 5115 (10230)</td><td> 100 (50)</td>
<td>L1-B</td><td>OS / CS / So L</td><td>Data</td><td> 250</td><td> 4</td><td> 1,023</td><td> 4092</td><td> -</td>
<td>L1-C</td><td>OS / CS / So L</td><td>Pilot</td><td>N / A</td><td> 100</td><td> 1,023</td><td> 4092</td><td> 25</td>
The proposed lengths of the Galileo spreading code sequences and construction method take into account various signal parameters and performance-related requirements. For all the signal codes shown above, the total sequence lengths have been selected to be equal to one symbol period for data signals or 100 ms for pilot signals. For GPS compatibility reasons, the segment speeds are all multiples of 1.023 MHz. As can be seen, most codes use a layered approach whereby a primary code is repeated to achieve the sequence length. required global code, which is equal to the product of the primary and secondary code lengths. The layered code approach simplifies the generation of long spreading codes and allows a receiver to acquire the signals simply by using the primary code sequences, if necessary, to minimize acquisition times.
It should be noted that at this time a primary code length of less than 5115 has been adopted for the commercial service (CS) pilot code in E6 to correspond to that of the corresponding data spreading code, which would be beneficial when both data and pilot signals are combined for acquisition-related purposes. As a consequence, the length of the 50-bit secondary code such as
ES 2 333 735 T3 has previously been proposed would be increased to 100 bits. Therefore, the 50-bit secondary code families described below may no longer be necessary for the Galileo signal currently proposed in E6-C, which could instead make use of the same 100-bit codes as developed. for E5 pilot signals (and as described in more detail later).
Each Galileo satellite uses a separate primary code for each signal component in order to provide basic CDMA operation. The proposed primary codes for the E5 signals are based on a family of Gold codes that are generated from the product of a pair of LFSRs (Linear Feedback Displacement Registers), while the currently proposed codes for E6-B & C and L1- B&C use a family of primary codes based on active random code optimization, as described in application PCT / EP2004 / 014488.
Table 3 lists the previously proposed secondary codes for the Galileo system, in which the indicated secondary code would be used as the common secondary code for all members of the corresponding primary code family. (It should be noted that only some of the codes have been assigned to particular Galileo signals, as indicated in Table 3; additionally, Table 3 does not reflect the change of the secondary code of the E6-C signal from 50 bits to 100 bits ).
TABLE 3
Summary of original secondary Galileo base codes
<td>Code Identifier</td><td>Code length (segments)</td><td>Sign</td><td>Code Sequence (Octal)</td>
<td>CS4a</td><td> 4</td><td>E5B-I</td><td> 16</td>
<td>CS20a</td><td> 20</td><td> -</td><td> 0 146 537</td>
<td>CS20b</td><td> 20</td><td>E5A-I</td><td> 2 041 351</td>
<td>CS25a</td><td> 25</td><td>L1-C</td><td> 34012662</td>
<td>CS50a</td><td> 50</td><td>E6-C</td><td> 31 353 022 416 630 457</td>
<td>CS50b</td><td> 50</td><td> -</td><td> 30 700 356 335 526 664</td>
<td>CS100a</td><td> 100</td><td> -</td><td> 1 325 627 352 355 616 455 613 377 214 003 321</td>
<td>CS100b</td><td> 100</td><td>E5A-Q</td><td> 1 736 526 276 160 463 054 356 046 605 322 257</td>
<td>CS100C</td><td> 100</td><td> -</td><td> 0 163 523 007 752 215 002 507 555 473 370 713</td>
<td>CS100d</td><td> 100</td><td>E5B-Q</td><td> 1 017 667 551 661 733 412 501 077 343 115 434</td>
Figure 1A shows the simulated performance of the cross-correlation function (CCF) between the first two level spreading codes for the E5 pilot signals, considering that the E5A-Q signal codes all share the same secondary code of 100 CS segments<sub>100b</sub>. The primary codes are all 10,230 segments long, so the overall length of the tiered codes is 1,023,000 segments (100 ms). Figure 1B shows similar CCF results for the first two codes of the E5B-Q pilot signals, which share the same secondary code CSi<sub>00d</sub>. No Doppler drift has been included in these simulations (ie, the plots have been calculated for a zero Doppler frequency drift between the two received spreading codes).
As can be seen, the performance of the CCF is generally very good (<- 50 dB) relative to the maximum peak of the ACF. However, using a common secondary code results in much poorer CCF performance (-30 dB) for code drifts of up to ± 0.01 x sequence length (= ± 10,230 segments segmentos ± 1 ms). This corresponds to the area in which the secondary codes are aligned, and therefore the performance of the CCF is limited to that precisely provided by the primary codes. It should be noted that, in practice, time drifts between satellites are expected to be in the range of about ± 20 ms (due to propagation delays). Therefore, although the full range of CCF drifts shown in Figures 2A and 2B should not occur in practice, this does not exclude the areas with the highest CCF peaks.
One possible approach to trying to eliminate the high peaks of the CCF could be to deliberately derive the common secondary code in time between different satellites. However, this would require code sequence time shifts of 40 ms between the different satellites, and since the maximum length of the tiered code is 100 ms (for pilot signals) then each code can only be reused twice. Even if it is also allowed to use the same codes for satellites of the antipodes, this is still only sufficient for a total of 4 satellites and not the 30 included in the Galileo constellation.
ES 2 333 735 T3
Another possible approach would be to further increase the lengths of the pilot codes. However, this option is not considered attractive, due to the long integration times required and the corresponding impact on the receiver design.
Long sequences of 100 ms pilot codes are sensitive to Doppler drift. In fact, a Doppler drift of only 10 Hz introduces a full cycle of phase shift on one sequence with respect to the other, thereby causing the reversal of half the sequence. This completely changes the CCF as can be seen in Figure 2, which shows the CCF for the E5A-Q pilot codes using a common secondary code with a 10 Hz Doppler frequency drift. The effect of the 10 Hz Doppler drift on these E5A pilots reduces the worst case CCF levels from -30 to -42 dB relative to the corresponding maximum ACF level for a single code. The distribution of Doppler frequency offsets between satellite pairs is approximately linear up to the maximum value of 6.7 kHz for the proposed Galileo satellite constellation.
The effective segment rate of the secondary codes depends on the repetition rates of the corresponding primary codes. As the secondary codes considered in Figure 2 are used for the components of the 100 ms pilot signals, the effective segment rate is simply Nx10 Hz, where N is the length of the secondary code, corresponding to 500 Hz and 1,000 Hz. for secondary codes of 50 bits and 100 bits respectively. When the Doppler frequency drift equals these effective segment velocities, then the phase shift per secondary code segment becomes 2π, after which the Doppler effect repeats. It should be noted that this condition does not apply for the underlying primary codes and therefore a CCF repetition of the total tiered code will not be observed in these frequency ranges.
Therefore, for tracking purposes, the combined probability that other satellites will have both a relative Doppler shift below 10 Hz and a relative timing error less than 1 ms is quite small. As a consequence, the overall impact of peak CCF peaks of -30 dB is significantly reduced. (It should be noted that for the shorter 50-bit secondary codes, the relevant time error area increases to 2 ms, although the impact is still quite low).
However, during initial acquisition modes, when a wide range of frequency and time offsets must be searched, relatively high secondary peaks in the CCF from the use of common secondary codes are likely to cause undesirable false detections. This can reduce performance under difficult acquisition conditions, such as for indoor applications, where large variations between satellite signal levels can be expected.
Figure 3A shows how CCF performance can be improved by using different secondary codes for each primary code. In Figure 3A, the tiered code for the E5A-Q 1 code has been modified to use the secondary code CS<sub>100th</sub> and the CCF has been recalculated. No Doppler frequency drift is included. As can be seen, the worst case CCF side lobes have dropped to less than -42 dB, which is a 12 dB improvement under this zero Doppler condition.
As confirmation, Figure 3B shows the CCF for the pilot codes E5B-Q 1 and 2 where the secondary code for the tiered code 1 has been changed to CS<sub>100c</sub>. Again, the worst case CCF side lobes have been reduced to approximately -42 dB, which is the same as previously shown for the E5A pilot codes when using different secondary codes.
Figure 3C depicts the CCF for the two E5A pilot signals using different secondary codes, albeit this time with a 10 Hz Doppler frequency drift. This shows slightly degraded CCF performance compared to Figure 3A, with a peak of the worst case of -40 dB.
To use different secondary codes for different satellites, enough code members of suitable quality must be found to be used with each satellite's primary code. For a code of N bits there is a total of 2<sup>N</sup> Possible code combinations, although only a limited number of them will have independent code properties. For example, each code can be reversed or reversed and will still have identical code properties; Similarly, each code sequence can be cyclically rotated according to the number of segments in the code length and can still maintain identical code properties. Therefore, for an N-bit code, the maximum number of independent codes (C<sub>N</sub>) it is:
Cn = 2<sup>N</sup>/(4.N) (It should be noted that this formula is approximate and represents only an upper bound, since it includes, for example, codes that are symmetric, that is, equal backwards and forwards, and / or that contain repeated sequences , which are unlikely to provide useful code). However, the above formula can be applied to the secondary code lengths considered for the Galileo signals in order to estimate the number of independent codes available for the secondary codes, as listed in Table 4.
ES 2 333 735 T3
TABLE 4
Number of independent secondary codes
<td>Secondary Code Length</td><td>Number of Independent Codes</td>
<td> 4</td><td> 1</td>
<td> 20</td><td> 13107</td>
<td> 25</td><td> 335544</td>
<td> 50</td><td>5.6 x 1012</td>
<td> 100</td><td>3.2 x 1027</td>
For shorter secondary codes of 25 bits or less, it is computationally feasible, with current capabilities, to carry out exhaustive searches of all code possibilities in order to find those with acceptable (or optimal) properties. However, for the longer 50-bit and 100-bit secondary codes, there are too many possible codes for exhaustive searching using current computational capabilities to be practical. However, good performance for 50-bit and 100-bit base codes can be obtained by using a random code starting point, and then performing a segment-level optimization process. In fact, as there are more options available for longer codes, this generally allows for stricter selection or optimization criteria with respect to those codes.
In order to find suitable families of secondary codes, according to an embodiment of the present invention, a two-stage search process was adopted as shown in the flow chart of Figure 4. First, it was found (405 ) a collection of candidate secondary codes, in which the candidates individually have good ACF, ELW and DC balancing properties (as described in more detail below). Second, from the collection of candidate codes found, (410) candidate codes that were not mutually independent were eliminated, and (415) a group or family of secondary codes was selected that had good mutual CCF properties (in fact, selected several groups, depending on different selection criteria).
One or more selection criteria are required to identify and select codes with good properties. Important parameters for such a selection are the autocorrelation function (ACF), excess line weight (ELW), and code balancing. The excess line weighting (ELW) criterion is defined as the power ratio in dB between the highest spectral line of the spreading code with respect to the total RMS value. A DC balancing criterion of the code is simply the sum of all the code segments, assuming a signal notation (± 1) is used, and corresponds to the zero frequency (DC) component of the code spectrum.
For ACF performance, two different sub-criteria can be used. The first of these is the highest neighbor value (HNV), which is an indication of the difference in height between the peak of the ACF and the next largest peak. In one embodiment, for pilot codes using long secondary codes, this criterion is defined as:
HNV<sub>p</sub> = (N / HNV)<sup>2</sup> where N = length of the code in segments.
The second criterion of the ACF is a factor of merit (MF), which is determined from the average of all neighboring values of the ACF.
MFp = N<sup>2</sup> / NV<sup>2</sup> where NV are the neighboring values.
You can then define a global selection criteria as follows:
Yield = HNVp + MFp / 100 - ELW
Although the code balance criterion does not appear directly within this global performance parameter, it is used to reject all codes where:
| DC balance | > VN where N = length of the code in segments.
(It should be noted that this threshold is the average of the DC value that is expected for a random code sequence).
ES 2 333 735 T3
Using these criteria, Table 5 shows the performance for the 50-bit and 100-bit secondary codes in Table
3. It should be noted that the actual ACF HNVs are 6 for the 50-bit codes and 8 for the 100-bit secondary codes.
TABLE 5
Galileo 50-bit and 100-bit base secondary code performance
<td>Code</td><td>Sign</td><td>Yield.</td><td>HNVp</td><td>Mfp</td><td>ELW (dB)</td><td>Equil. DC</td>
<td>CS50a</td><td>E6-C</td><td> 67,16</td><td> 69,44</td><td> 9,62</td><td> 2,38</td><td> 0</td>
<td>CS50b</td><td> -</td><td> 66,41</td><td> 69,44</td><td> 3,88</td><td> 3,07</td><td> -4</td>
<td>CS100a</td><td> -</td><td> 153,67</td><td> 156,25</td><td> 6,94</td><td> 2,65</td><td> -10</td>
<td>CS100b</td><td>E5A-Q</td><td> 154,05</td><td> 156,25</td><td> 8,22</td><td> 2,29</td><td> -6</td>
<td>CS100c</td><td> -</td><td> 153,92</td><td> 156,25</td><td> 7,18</td><td> 2,40</td><td> -4</td>
<td>CS100d</td><td>E5B-Q</td><td> 154,55</td><td> 156,25</td><td> 7,02</td><td> 1,77</td><td> -8</td>
As previously mentioned, the number of possible codes for the longer 50- and 100-bit secondary codes is too large for exhaustive search techniques with currently available computational capabilities (although this may of course change in the future). Therefore, an optimization process, as shown in the flow chart of Figure 5, has been used to obtain a final set of candidate secondary codes from an initial selection of random codes according to an embodiment of the invention (this corresponds to operation 405 of Figure 4).
To start the process, a random reference binary code (Cr) of the required length (N bits) is generated (510). First, the modulus of the DC balance value of the code is checked to verify if it exceeds the square root of the number of code bits (515). If so, then the code is rejected, and another random code is generated instead. When an acceptably balanced code is found, its performance is calculated as a reference value (Pr) (520). It should be noted that the optimization process used in the method of Figure 5 attempts to maximize a factor related to performance, although, alternatively, other embodiments may seek to minimize some type of cost function (for the purposes of the present description, they can be considered in general as the same thing).
Next, one or more bits of the reference code are randomly inverted to produce a new code (Cn) (525). The number of bits reversed controls the size of the "step" through the search space. One approach is to invert a relatively large number of bits initially, corresponding to large steps through the search space when the algorithm is supposedly far from a maximum, and then invert a smaller number of bits in iterations. later as we get closer to the maximum, in order to perform a more precise search. Under the current circumstances, it was generally considered acceptable to invert only a single bit at a time for the 525 operation. This is still a 1% change in sequence (for a sequence of 100 segments), and therefore it does not lead to unduly slow convergence.
Then it is checked whether the new code does not meet the DC balancing criterion (530). If so, the new code is rejected, and step 525 is returned to generate a new code by inverting a random bit (or bits) of the Cr code (not the Cn code).
However, assuming that the Cn code does not meet the DC balancing criterion in step 530, the performance of the new Cn code is measured as Pn (535). Next, an optimization decision process is performed (540) to check whether a linearly selected random number from the interval (0 <Aleat <1) is less than the exponential of the increase in the performance value between the new code and the code reference, that is, [exp (Pn - Pr)]. If the check in step 540 is false, the Cn code is rejected, and step 525 is returned to generate a new code by inverting a random bit (or bits) of the Cr code (not the Cn code). Alternatively, if the check in step 540 is true, then the new code is adopted as the current code (545), whereby Cr becomes equal to Cn, and Pr is set equal to Pn.
It should be noted that if Pn> Pr in step 540, then the performance of the code has been improved by bit shifting in step 525. In this case the check of step 540 is necessarily positive, leading to a code substitution in step 545 (since the random check number cannot be greater than unity). However, even if Pn <Pr, which indicates that the performance of the new code is actually worse than the performance of the old code, there is still some (exponentially decreasing) probability that the check for operation 540 will give a positive result. , leading to a code substitution at step 545. This capability can help the system avoid being trapped in a local maximum by allowing optimization, in some circumstances, to move away from the (local) maximum.
ES 2 333 735 T3
It should be noted that the sensitivity of the decision process can be modified by multiplying the increment yield value (Pn-Pr) by a sensitivity factor in step 540 (this is analogous to varying the temperature in a related search method of "annealing simulated"). If appropriate, the sensitivity factor can be modified between iterations. However, for the code searches described herein, a fixed factor of unity has been found to be satisfactory, as shown in Figure 5.
A check is then made to see if a target performance (Pt) has been achieved (550). If so, a suitable secondary code has been located, and the search may end (560). In one embodiment, the target performance level (Pt) is set approximately that of the worst base secondary code (from Table 3). Alternatively, if the check in step 550 determines that the performance threshold is not exceeded, the process returns to step 525 to invert an additional random bit of the (modified) code. It should be noted that this closed loop is subject to testing for a maximum number of iterations (555), which, in one embodiment, is set to 1 million. If this limit is reached, then there may be a problem with convergence, and it is decided to go back to step 510 to generate a completely new random reference code Cr.
It will be appreciated that the flow chart of Figure 5 is presented for illustration only, and those of skill will be aware of many potential variations and modifications. For example, instead of inverting a single bit in step 525, the procedure could randomly select a 0 and a 1 from the code to be inverted. So this would ensure that the balance of the code is maintained. Additionally, the optimization strategy may take into account one or more other criteria (in addition to or instead of those already described). For example, one possibility would be to require that the first side lobe (ie, corresponding to a one-position bit shift) of the autocorrelation function (ACF) be zero for each code. This is a useful property as it ensures that the ACF exhibits known (fixed) behavior in the vicinity of zero drift, which can help with strategies to mitigate multipath effects. Additionally, the optimization procedure may not necessarily exit once a certain performance threshold has been reached (at step 550), but may continue for at least a few additional iterations to try to find a bit pattern. even better.
The procedure depicted in Figure 5 was used to search for suitable 50 and 100 bit secondary codes. It should be noted that the mutual properties of the CCF between codes were not taken into account at this stage. The list of all codes found from the procedure in Figure 5 was then checked to ensure that it included only independent codes (corresponding to operation 410 in Figure 4). In particular, any discovered, inverse, inverted, or cyclically shifted codes were removed (in fact, several repeat codes were found and rejected while searching for suitable 50-bit secondary codes, although such repeats were not found during searches of the 100-bit code lengths, probably due to the much larger search space).
Table 6 shows the range of performance values on the 100 best 50-bit secondary codes that were found using the search procedure of Figure 5. The 100 codes were selected from a total of 1,304 codes that had been found that exceeded the performance threshold Pt (although this is not expected to be exhaustive).
TABLE 6
Summary of 50-bit secondary code search results
<td>Code</td><td>Rend,</td><td>NHVp</td><td>Mfp</td><td>HE W</td><td>Equil DC</td>
<td>CS501</td><td> 623,80</td><td> 625,00</td><td> 12,76</td><td> 1,33</td><td> 0</td>
<td>CS502</td><td> 623,80</td><td> 625,00</td><td> 12,76</td><td> 1,33</td><td> -6</td>
<td> -</td><td> -</td><td></td><td></td><td> -</td><td></td>
<td>CS5099</td><td> 623,37</td><td> 625,00</td><td> 12,76</td><td> 1,76</td><td> -2</td>
<td>CS50100</td><td> 623,37</td><td> 625,00</td><td> 12,76</td><td> 1,76</td><td> -2</td>
For comparison, the current 50-bit base subcodes CS50a and CS50b in Table 3 are respectively at positions 1,146 and 1,294 out of the total of 1,304 localized subcodes. It should be noted that the top 324 codes found have ACF HNVs of only 2, which represents much better performance than the two original reference codes that have HNVs of 6.
Similarly, Table 7 shows the range of performance values on the top 200 100-bit secondary codes out of the 981 found to exceed the performance threshold. In this case, the upper 200 codes are selected, since codes of this length are intended for both E5A-Q and E5B-Q pilots. It should be noted that the second best code in Table 7 is the current reference code CS100d from Table 3, while the other base codes CS100a-c are respectively at positions 981, 980 and 733.
ES 2 333 735 T3
TABLE 7
Summary of 100-bit secondary code search results
<td>Code</td><td>Yield.</td><td>NHVp</td><td>Mfp</td><td>HE W</td><td>Equil DC</td>
<td>CS1001</td><td> 154,60</td><td> 156,25</td><td> 8,12</td><td> 1,73</td><td> 4</td>
<td>CS1002</td><td> 154,55</td><td> 156,25</td><td> 7,02</td><td> 1,77</td><td> -8</td>
<td></td><td></td><td></td><td></td><td> -</td><td></td>
<td>CS100199</td><td> 154,29</td><td> 156,25</td><td> 5,53</td><td> 2,01</td><td> 8</td>
<td>CS100200</td><td> 154,29</td><td> 156,25</td><td> 5,21</td><td> 2,01</td><td> 6</td>
All of the above codes were selected without checking the performance of the CCF. Therefore, the next step consists in selecting, from among the complete sets of secondary codes found, a group of at least 50 codes (for each signal) that also have good mutual CCF properties. However, it should be noted that this performance should not be worse than the current situation, where all members of the code use the same secondary (common) code.
Testing all combinations of any 100 codes from a collection of only a few hundred candidates is not feasible using currently available computational capabilities, especially when multiple Doppler shifts are anticipated (which will affect CCF performance between different codes of satellites). Therefore, another optimization process was performed.
In one embodiment, two methods were used both using the same optimization procedure. Each of these methods begins with a randomly selected set of 100 codes chosen from the collection of approximately 1,000 codes found through the method of Figure 5 (as described above). The two methods then substitute one of the codes for each iteration, either by a random choice for one method, or by identifying the code that provided the worst CCF contribution for the other method. However, in this embodiment, it was found that it was relatively difficult to optimize (converge) the CCF of the total family, especially when Doppler shift effects were included, since the iteration speed was slow and the search program was slow. it was regularly embedded in local highs. In particular, the impact of the increase in changing a single code could be overwhelmed by variations in the performance of the CCF of the total family. One factor affecting speed was that the search program was continually recalculating almost the same CCFs for each iteration, although in fact only the CCFs involving the replaced code needed to actually be calculated for a new iteration. Therefore, the search program was modified to support this change in order to speed up the speed of iterations. Attempts were also made to improve the sensitivity to individual code changes by fine-tuning the performance criteria; however, the speed of convergence was still quite slow.
In another embodiment, a quite different approach was taken. In this embodiment, the CCFs of all code pair combinations were calculated for the entire code collection. The calculated CCF matrix further included a range of Doppler frequency drifts, namely 25 steps, each 20 Hz, for the 50-bit secondary codes, and 50 steps, each 20 Hz, for the secondary codes of 100 bits. These produced maximum offsets of 500 Hz and 1,000 Hz respectively for the 50-bit and 100-bit secondary codes, which coincide with the repetition rates of the corresponding primary codes. With these frequency drifts, the phase shift per secondary code segment becomes 2π, after which the Doppler effect is repeated on the secondary codes as previously described.
Although this embodiment uses a large amount of memory or storage media, it avoids repeating time-consuming CCF calculations. The subsequent optimization process is then much faster as it only involves finding the best set of codes using the pre-calculated CCF values and one or more suitable criteria combining the family of CCF values. For example, code groups can be constructed by removing codes that have been found to have poor CCF values, or by selecting codes that exhibit good CCF values.
In one embodiment, the adopted CCF optimization criteria focus on tracking performance, because the code collection has already been individually optimized in relation to the ACF properties, which control the performance of the acquisition. Three different performance criteria were defined, based on a merit factor (MF) approach, including cross-interference (CT) and multipath (MP) variants. Two criteria of the merit factor with cross interference (CT1 and CT2) were used. The CT2 criteria take into account that the time drift between satellites cannot exceed 20 ms and therefore do not need to include the full range of drifts possible up to the pilot code length of 100 ms. The third criterion (MP) uses a multipath variant of the merit factor. These criteria were used by the optimization algorithm to produce various code groups. For reference purposes the first (s)
ES 2 333 735 T3 code group (s) included repetitions of the common base secondary code. Another group of codes used the top set of codes from each code collection:
The various merit factors used are formally defined as follows:
<img file="ES2333735T3_D0001.tif" />
For CT2: = <sub>m</sub>ax {ccF<sub>± 20mJ</sub>} + ^ (ccf<sub>±20</sub>„Jf - (2x7V) | =<sup>N</sup> T .L to<sup>2</sup>
For MP: © ax {^ cr} J ioo ^^ cf<sup>:</sup>
Figure 6A presents a typical representation of CCF performance, using CT2 criteria, for a 50-member code set of 50-bit secondary codes with zero Doppler. This representation is repeated in Figure 6B for the same group of codes, although showing the average of the CCF through all the Doppler frequency drifts. It should be noted that the randomizing effect of the Doppler shift tends to smooth the total CCF to a value that is much less dependent on a specific code structure.
Table 8 summarizes the results of the code set selection procedure for 12 different groups of 50-bit secondary codes G1 to G12, each containing 50 code members.
TABLE 8
Results of optimization of 50-bit secondary code groups
<td>Code Group</td><td>Guy</td><td>CT1</td><td>CT2</td><td>MP</td><td>Classification</td>
<td>G1</td><td>CS50a</td><td> 4,0000</td><td> 29,0135</td><td> 67,1600</td><td> 12</td>
<td>G2</td><td>Top 50</td><td> 9,9617</td><td> 53,0550</td><td> 623,7,488</td><td> =4</td>
<td>G3</td><td></td><td> 9,9794</td><td> 53,2278</td><td> 556,8858</td><td> 3</td>
<td>G4</td><td></td><td> 10,0509</td><td> 53,3473</td><td> 189,6056</td><td> =4</td>
<td>G5</td><td></td><td> 10,6094</td><td> 53,5636</td><td> 134,0602</td><td> 1</td>
<td>G6</td><td></td><td> 10,0581</td><td> 53,1717</td><td> 111,8202</td><td> 8</td>
<td>G7</td><td></td><td> 10,0548</td><td> 53,1057</td><td> 200,8360</td><td> =4</td>
<td>G8</td><td></td><td> 10,0597</td><td> 53,5013</td><td> 66,9624</td><td> =4</td>
<td>G9</td><td></td><td> 9,9264</td><td> 52,6201</td><td> 211,8780</td><td> 11</td>
<td>G10</td><td></td><td> 9,9541</td><td> 54,5136</td><td> 212,0222</td><td> 2</td>
<td>G11</td><td></td><td> 9,9560</td><td> 52,9145</td><td> 200,8334</td><td> 10</td>
<td>G12</td><td></td><td> 9,9324</td><td> 53,4461</td><td> 178,5948</td><td> 9</td>
The first group G1 is a dummy group based on the same base (common) code CS50a, which indicates the baseline performance level if only a single common secondary code is used. The next group G2 contains the top 50 codes from the secondary code search list in Table 6. The next 10 groups G3 to G12 were generated by optimization against the three different CCF selection criteria previously described.
The three main columns of Table 8 (CT1, CT2 and MP) represent the results using the different criteria of cross and multipath interference. For these results, the larger values represent the best performance. Table 8 shows an overall ranking, determined by combining the individual rankings for each criterion. It should be noted that the common code (group G1) has been ranked last, and produces the worst score for each individual criterion. The G5 code group has been ranked first. A further evaluation of these 50-bit secondary codes is described below using a code evaluation tool.
ES 2 333 735 T3 (It will be appreciated that as the classification process in Table 8 includes two cross-interference criteria, this reduces the relative influence of the multipath criterion. This may or may not be appropriate, depending on the intended use and the circumstances of the signals).
Table 9 summarizes analogous results for 13 different groups G1 to G13, each containing 137 100-bit secondary codes.
TABLE 9
Results of optimization of 100-bit secondary code groups
<td>Code Group</td><td>Guy</td><td>CT1</td><td>CT2</td><td>MP</td><td>Classification</td>
<td>G1</td><td>CS100d</td><td> 5,0000</td><td> 30,5621</td><td> 154,5500</td><td> 11</td>
<td>G2</td><td>CS100b</td><td> 5,0000</td><td> 29,9568</td><td> 154,0500</td><td> 13</td>
<td>G3</td><td>Top 137</td><td> 16,7965</td><td> 56,7422</td><td> 154,3734</td><td> 6</td>
<td>G4</td><td></td><td> 16,8524</td><td> 56,7141</td><td> 154,2950</td><td> =8</td>
<td>G5</td><td></td><td> 16,8628</td><td> 56,7248</td><td> 154,1616</td><td> =8</td>
<td>G6</td><td></td><td> 17,2517</td><td> 56,8618</td><td> 154,1400</td><td> 3</td>
<td>G7</td><td></td><td> 17,0044</td><td> 56,8088</td><td> 154,1450</td><td> 4</td>
<td>G8</td><td></td><td> 16,8753</td><td> 56,7304</td><td> 154,1726</td><td> 5</td>
<td>G9</td><td></td><td> 16,8454</td><td> 56,8210</td><td> 154,3097</td><td> 2</td>
<td>G10</td><td></td><td> 16,8283</td><td> 56,4425</td><td> 154,1422</td><td> 12</td>
<td>G11</td><td></td><td> 16,9215</td><td> 57,1402</td><td> 154,1607</td><td> 1</td>
<td>G12</td><td></td><td> 16,8834</td><td> 56,7341</td><td> 154,1596</td><td> 7</td>
<td>G13</td><td></td><td> 16,8064</td><td> 56,8063</td><td> 154,1599</td><td> 10</td>
The first two groups in Table 9, G1 and G2 are fictitious groups based on common CS100d and CS100b base codes respectively. Therefore, these groups are indicative of benchmark performance levels where only a single common secondary code is used. The next G3 group contains the top 137 codes from the subcodes search list. The next 10 groups G4 to G13 were generated using a TLC optimization process analogous to that for the 50-bit code groups. Regarding the evaluation of the 50-bit code groups, a global classification has been included combining the individual classifications for each criterion. Again, the common codes (groups G1 and G2) have been classified poorly and occupy 2 of the 3 worst positions. The G11 code group has been ranked first. A further evaluation of the 100-bit secondary codes is then provided using a code evaluation tool.
Although the procedure described above in relation to Figures 4 and 5 is based on a two-phase approach, namely, first identifying a set of good individual codes (run 405), and secondly identifying good groups within From this set (step 415), a single integrated procedure could alternatively be used. For example, this could involve randomly generating a group of codes, and then performing an optimization process on this group that takes into account both the individual properties of the codes, as well as the mutual properties of different codes. in the group (especially its cross-correlation function). There are a range of alternative strategies available for this task, based on concepts such as genetic algorithms, simulated annealing, and others. For example, if there are N code patterns in the final group, then a set of P code patterns (P> N) could be generated initially. Each optimization cycle could then entail maintaining the best subset of (for example) N code patterns, and then generating other new PN code patterns for testing in conjunction with the maintained subset from the previous cycle. Some optimization strategies may combine this selection of a larger population with the updating of individual code patterns within the population (according to operation 525).
In evaluating the code groups identified in Tables 8 and 9, it will be appreciated that the two main criteria for code design are performance under acquisition and tracking modes of operation. Within these two modes, two additional performance aspects can be differentiated, namely the suppression of delayed versions of the same code (multipath case), and the rejection of all other satellite codes (cross-interference case). Any performance assessment should include the effects of the Doppler frequency shift, as appropriate. One or more additional criteria regarding the spectral properties of the code may also be adopted.
For the acquisition, as performance criteria, the ACF (case of multipath) of the codes or the mutual CCF (case of cross interference) can be used, considering the Doppler drift. Then they are
ES 2 333 735 T3 can be compared with the Welch limit (WB) appropriate for the length of the code and the size of the code family. These criteria measure the Mean Excess Average Squared Welch Distance (AMEWSD) for multipath and crosstalk cases. For the multipath case, normally only a limited range of Doppler shifts is checked, as only one satellite code is considered, and this represents the expected range of the acquisition search frequency compartment error. However, in the case of crosstalk, which includes other satellite codes, a maximum Doppler shift value of 6.7 kHz must be taken into account. It should be noted that both criteria mentioned take into account the effects of the correlation of even correlation and unpaired values (odd correlation).
For monitoring purposes, the ACFs (multipath case) of codes or mutual CCFs (cross-interference case) can be used directly to provide a performance measure such as Average Merit Factor (AMF). Regarding acquisition checks, the case of multipath can be restricted to a limited range of Doppler frequency shifts. Additionally, the ACF is evaluated only for ± 1 and ± 2 segment time drifts, in order to reflect the limited range of multipath delays expected while tracking a signal. This time drift interval is not strictly relevant for slow subcodes by themselves.
It is also desirable that the codes have a flat spectrum, similar to random noise. The presence of strong spectral lines increases cross-code interference, as well as susceptibility to external narrow-band interference. The criteria used here measure the Average Excess Line Weight (AELW) relative to the equivalent spectral power for a random code.
A code evaluation tool based on the five aforementioned check criteria was used to check the secondary code proposals in Tables 8 and 9. The tool performs two types of calculation, namely multipath (MP) and cross interference ( CT), which respectively involve a code and a code pair. In theory, to check the secondary codes, the assessment tool should be run with the full sets of tiered codes. However, this is not feasible with the currently available computational resources, and therefore the secondary codes were checked on their own. This approach is reasonable as the CCF performance of a tiered code can be viewed as the product of the individual primary and secondary codes, and further avoids the need to specify the primary codes themselves or assign a particular primary code to a particular secondary code, which may both be subject to change.
Table 10 summarizes the results for the 12 different groups of 50-bit secondary codes G1 to G12 of Table 8, each containing 50 code members.
TABLE 10
50-bit Secondary Codegroup Evaluation Results
<td rowspan="2">Code Group</td><td rowspan="2">Guy</td><td colspan="2">MEWSD</td><td colspan="2">MF</td><td rowspan="2">HE W</td><td rowspan="2">Classification</td>
<td>CT</td><td>MP</td><td>CT</td><td>MP</td>
<td>G1</td><td>CS50a</td><td> 0,6933</td><td> 0,6933</td><td> 1,3803</td><td></td><td> 2,9595</td><td> 12</td>
<td>G2</td><td>Top 50</td><td> 0,1346</td><td> 0,6789</td><td> 1,0069</td><td></td><td> 4,9600</td><td> 9</td>
<td>G3</td><td></td><td> 0,1340</td><td> 0,6783</td><td> 1,0079</td><td></td><td> 4,2627</td><td> 8</td>
<td>G4</td><td></td><td> 0,1336</td><td> 0,6851</td><td> 1,0051</td><td></td><td> 1,8422</td><td> 6</td>
<td>G5</td><td></td><td> 0,1287</td><td> 0,6803</td><td> 1,0009</td><td></td><td> 1,5997</td><td> 1</td>
<td>G6</td><td></td><td> 0,1337</td><td> 0,6813</td><td> 1,0061</td><td></td><td> 1,1732</td><td> =3</td>
<td>G7</td><td></td><td> 0,1342</td><td> 0,6830</td><td> 1,0063</td><td></td><td> 1,8302</td><td> 7</td>
<td>G8</td><td></td><td> 0,1329</td><td> 0,6846</td><td> 1,0033</td><td></td><td> 1,0411</td><td> 2</td>
<td>G9</td><td></td><td> 0,1380</td><td> 0,6807</td><td> 1,0147</td><td></td><td> 1,8349</td><td> 10</td>
<td>G10</td><td></td><td> 0,1325</td><td> 0,6839</td><td> 1,0014</td><td></td><td> 2,0446</td><td> 5</td>
<td>G11</td><td></td><td> 0,1346</td><td> 0,6897</td><td> 1,0076</td><td></td><td> 1,7825</td><td> 11</td>
<td>G12</td><td></td><td> 0,1336</td><td> 0,6817</td><td> 1,0006</td><td></td><td> 1,9106</td><td> =3</td>
The five main columns (MEWSD-CT and MP, MF-CT and MP, and ELW) represent the results of the code evaluation tool. They are all calculated as cost functions with the lowest values representing the best performance. (The tool does not provide any answer for the case of multipath on the merit factor (MF - MP) - this appears to be due to the short length of the secondary codes being evaluated). It should be noted that the MEWSD-CT and MEWSD-MP values are calculated according to the following definitions:
ES 2 333 735 T3
<img file="ES2333735T3_D0002.tif" />
As previously determined with respect to Table 8, the best group of 50-bit secondary codes is G5, while the reference set G1 is the worst. It should be noted that set G5 falls within the top 3 groups for all criteria.
Table 11 summarizes the results for the 13 different groups of 100-bit secondary codes G1 to G 13 of Table 9, each containing 137 code members.
TABLE 11
100-bit secondary codegroup evaluation results
<td rowspan="2">Code Group</td><td rowspan="2">Guy</td><td colspan="2">MEWSD</td><td colspan="2">MF</td><td rowspan="2">HE W</td><td rowspan="2">Classification</td>
<td>CT</td><td>MP</td><td>CT</td><td>MP</td>
<td>G1</td><td>CS100d</td><td> 0,5604</td><td> 0,5604</td><td> 1,2241</td><td></td><td> 0,8231</td><td> 12</td>
<td>G2</td><td>CS 100b</td><td> 0,5367</td><td> 0,5367</td><td> 1,1881</td><td></td><td> 0,9975</td><td> =6</td>
<td>G3</td><td>Top 137</td><td> 0,1123</td><td> 0,5465</td><td> 1,0025</td><td></td><td> 1,1874</td><td> 8</td>
<td>G4</td><td></td><td> 0,1117</td><td> 0,5476</td><td> 1,0018</td><td></td><td> 1,4235</td><td> =6</td>
<td>G5</td><td></td><td> 0,1114</td><td> 0,5469</td><td> 1,0010</td><td></td><td> 1,8527</td><td> 3</td>
<td>G6</td><td></td><td> 0,1106</td><td> 0,5483</td><td> 1,0021</td><td></td><td> 1,9435</td><td> 10</td>
<td>G7</td><td></td><td> 0,1112</td><td> 0,5468</td><td> 1,0010</td><td></td><td> 1,9876</td><td> 4</td>
<td>G8</td><td></td><td> 0,1118</td><td> 0,5482</td><td> 1,0021</td><td></td><td> 1,7864</td><td> 11</td>
<td>G9</td><td></td><td> 0,1116</td><td> 0,5464</td><td> 1,0016</td><td></td><td> 1,3836</td><td> 2</td>
<td>G10</td><td></td><td> 0,1121</td><td> 0,5490</td><td> 1,0027</td><td></td><td> 1,9751</td><td> 13</td>
<td>G11</td><td></td><td> 0,1110</td><td> 0,5463</td><td> 1,0007</td><td></td><td> 1,8404</td><td> 1</td>
<td>G12</td><td></td><td> 0,1115</td><td> 0,5471</td><td> 1,0013</td><td></td><td> 1,9000</td><td> 5</td>
<td>G13</td><td></td><td> 0,1118</td><td> 0,5479</td><td> 1,0013</td><td></td><td> 1,8667</td><td> 9</td>
(As for the 50-bit code checks, the tool did not produce any results for the multipath criterion in the factor of merit (MF - MP)). Comparing the results shown in Table 9, it was found that the best 100-bit secondary code group was G11. The first G1 reference set (common CS100d code) is the worst for all criteria except ELW. The second G2 reference set (common CS100b code) has better performance in the same 6<sup>to</sup> position, which can be attributed to having the best performance in the multipath criterion in MEWSD.
Therefore, in summary, a process has been described for optimizing secondary codes, especially for those codes used as part of the long layered codes for the pilot signal components. Previous Galileo base code specifications have adopted a common secondary code for all members of a family of primary codes, but this produces relatively high CCF sidelobes in which the signal delay between satellites is less than a few. few more. As this problem is only serious for low Doppler frequency drifts between satellites, it will mainly deteriorate the acquisition performance. The side lobes of the CCF can be significantly reduced by using separate secondary codes for each member of a primary code.
ES 2 333 735 T3
A two-stage optimization procedure has been used to find suitable groups of 50-bit and 100-bit secondary codes, as these relatively long secondary codes are expected to produce enough suitable codes, responding to the number of satellites in the Galileo system. The first phase located codes with good ACF and ELW properties, comparable to or better than the original base codes. This produced approximately 1,000 candidates for both the 50- and 100-bit secondary codes.
The second phase then selected a suitable group of codes with good mutual CCF properties from the total collection of codes found. In fact, several groups were selected depending on various optimization criteria. These groups were then compared to each other using a code assessment tool using an agreed (predetermined) set of performance criteria.
For 50-bit secondary codes, a particular group of codes is recommended (G5, see Table 8). This group contains 50 different codes, which can be assigned to the different satellites, instead of using a common secondary code according to the previous base proposal for the E6-C pilot signal (although as previously mentioned, the primary code destined to the E6-C pilot signal has now been shortened, so that the length of the corresponding secondary code will actually be increased from 50 bits to 100 bits).
For 100-bit secondary codes, a particular group of codes is recommended (G11, see Table 9), specifically to replace the use of the common CS50d secondary code for the E5A-Q pilot signal component and the common code CS50b for the E5B-Q pilot signal component. The G11 code group contains 137 compatible codes that allow the assignment of 50 codes for both E5A and E5B pilot signal components, plus 37 additional codes that could be assigned to the GPS L5 pilot signal. With the change to pilot signal E6-C, these 100-bit secondary codes can be used for this signal as well.
The Galileo L1-C signal component currently uses a layered pilot code with a common 25-bit secondary code. The procedure described herein should allow the identification of sufficient codes for this shorter secondary code length which would allow the use of separate secondary codes for different satellites, and this, in turn, should lead to consequential improvements in performance.
It will be appreciated that the number of codes to be included within a given code set depends on the particular requirements of the corresponding satellite navigation system. In general, such systems are designed to work with between 24 and 30 different satellites, usually with one or more additional satellites as potential spare parts in case of failure. The desired number of codes within a code set can be further increased to accommodate "pseudolite" signals. These are signals emitted from terrestrial locations, for example, near airports, which appear to a receiver as additional satellite navigation signals, and therefore can provide a more accurate and reliable determination of the position at those locations. .
Additionally, in some circumstances, it may be desired to change the set of spreading codes broadcast from a satellite on a regular basis. This can be useful for security or commercial reasons, for example when access to new codes is conditional upon payment of a license fee, or is limited to certain sets of government or military users. If the spreading codes are changed from time to time, then a larger number of code sets is required. However, it should be noted that with a layered code construction, code changes can potentially be implemented only by changing the primary codes, while maintaining the same secondary code throughout the change.
Figure 7 is a high-level schematic diagram of a subsystem 600 for generating a level spreading code in accordance with one embodiment of the invention. It should be noted that subsystem 600 can be incorporated into a satellite to generate a spreading code for transmission to ground. Additionally, subsystem 600 can be incorporated into a receiver to detect a satellite signal, for example, by cross-correlating the signal entering the receiver with the output of subsystem 600.
During operation, the N-bit secondary code corresponding to the spreading code is loaded into shift register 630. Prior to this, the secondary code can be stored on some non-volatile storage device (not shown), for example, a form of ROM or EEPROM (such as flash memory). Alternatively, the secondary code can be used directly from the storage device (that is, without first loading it into a shift register). The secondary code sequence available from shift register 630 is specific to the corresponding satellite for subsystem 600.
Component 620 is used to generate an M-bit primary code. In some embodiments, component 620 may be a linear feedback shift register (LFSR), such as that used to generate a Gold code for GPS signals. Alternatively, the complete M-bit primary code can also be stored in some form of storage device, for example, a ROM or EEPROM (such as flash memory). This last option is particularly appropriate when the primary code comprises some form of random bit code, rather than a pseudo-random sequence that can be (re) generated by appropriate logic.
The primary code generator 620 receives a clock signal 605 at the rate of the signal segments, and outputs the next bit of the primary code in response to this clock signal. Clock signal 605 is passed
ES 2 333 735 T3 also through a division-by-M unit 610 before taking it to the secondary code unit 630. Consequently, the secondary code sequence progresses a single bit for each complete cycle through the primary code. The output for the secondary code is then combined using an exclusive-OR operation 640 with the output corresponding to the primary code to produce the layered code 650.
It should be noted that in some embodiments, subsystem 600 may be used only for initial code generation, such as during satellite or receiver manufacturing. The layered code 650 would then be stored as a single (flat) bit stream on the satellite and / or receiver, despite having an underlying hierarchical structure. Such an approach could be helpful in simplifying the overall hardware design.
Figure 8A is a high-level schematic block diagram of a transmission system 601 for use in a satellite payload in accordance with one embodiment of the invention. (It will be appreciated that an analogous structure could also be used in a pseudolite or other such device that emulates a satellite). The transmission system 601 uses a spreading code that includes a secondary code such as that generated using the method of Figure 4. At least the secondary part of the spreading code 611 is stored in a memory device 610, which, in normal broadcast activities, functions as a read-only memory. In certain embodiments, the primary code may also be stored in memory 610 (or some other memory device), either separately or in conjunction with the secondary code, depending on how the primary code is implemented (such as has been described above with reference to Figure 7). In one implementation, the memory device 610 can be logically operated as a circular buffer, using a read pointer to cycle around the stored code sequence 611.
Since the typical size of current memory devices is very small, the bits stored in memory 610 can be vulnerable to cosmic ray impacts (especially in a space environment) and other possible contamination. Accordingly, in one embodiment, the output of the memory device 610 is passed through an error correction code (ECC) unit 612 to protect the accuracy of the code 611. The ECC unit 612 may detect an error in code 611 as it is read from memory 610, and may, in some circumstances, be able to automatically correct the error (depending on the nature of the code and the error). For example, memory 610 can store two copies of code 611, and read each bit simultaneously from both copies. If the two bits read from the different versions do not match, this signals (that is, detects) an error in one of the stored versions. If three copies of code 611 are stored in memory 610, then any detected errors can be automatically corrected based on a majority vote.
Experts will have knowledge of many ECC mechanisms of data storage and data communications applications, such as the use of convolutional coding, cyclic redundancy codes (CRC), and others. These, in general, are much more efficient than simply storing multiple copies of the 611 code - that is, they provide better error protection with lower overhead in terms of additional storage requirements.
After the code has passed through the ECC check 612, it is combined with the navigation data 617 via the channel generation subsystem 620. The channel generation subsystem 620 may also include a subsystem, such as that shown in Figure 7, for generating a layered code from the secondary code in memory 610 and from the primary code (either obtained from the memory 610 or generated by some other mechanism). Alternatively, the channel generation subsystem 620 may receive a layered code 650 in which the primary and secondary codes have already been combined, for example, if the stored code 611 already integrates both the primary and secondary codes.
The channel generation subsystem generally uses some form of modulo-2 (exclusive-OR) summation to combine the spreading code and navigation data. The resulting channel is then translated into a modulation unit 625, where it is superimposed on a carrier signal using some appropriate modulation mechanism, such as binary phase shift keying (BPSK). It should be noted that, in some satellite systems, multiple channels can be modulated on a single carrier signal. The carrier signal is then passed to transmitter 630 for broadcast to ground.
Although, in some embodiments, the code 611 can be "permanently stamped" into memory 610 prior to launch, it is more flexible for the memory device 610 to include a write capability - for example, it is implemented as some form of programmable read-only memory (PROM). For example, if the ECC check 612 discovers that the stored code 611 has been tampered with, then a write capability for the memory device 610 allows the correct version of the code (the version Correct code may be available from the ECC 612 unit itself, or may have to be provided by a ground control system). There may also be a number of other reasons for wanting to upgrade the 611 code stored in 610 memory. For example, new code could be installed to help improve performance during a test phase, perhaps if the original code is experiencing interference with some another service or satellite. There could also be commercial or security reasons for changing the 611 code, the former to perhaps increase license revenue, the latter to restrict access to the positioning signal to appropriately authorized personnel.
ES 2 333 735 T3
Figure 8B is a high-level schematic block diagram of a receiver 701 in accordance with one embodiment of the invention. The receiver 701 can be provided as a stand-alone unit, or it can be incorporated into some larger device, for example, a mobile (cellular) phone, a computer, a car or other form of vehicle, a hospital bed, an aircraft or a ship. , a cargo container, and others. During operation, receiver 701 includes an antenna 715 to receive a satellite signal such as that transmitted by satellite 601. Antenna 715 links to a demodulator 720, which, in turn, transfers the incoming demodulated signal to unit 725. channel acquisition.
Receiver 701 further includes a memory device 710 that stores at least the secondary code portions 611A, 611B ... 611N for the satellite constellation (s) supported by receiver 701. Additionally, analogously to the situation in Figure 8A, the primary code parts of these codes can also be stored in the relevant memory units 610A, 610B ... 610N, or alternatively they can be generated using an LFSR or another suitable device, depending on the particular choice of primary code.
The memory device 710 generally stores the complete bit patterns for the secondary codes 611A, 611B, ... 611N, since a more compact representation of said secondary codes is not normally possible in the absence of any formalized mathematical structure. In Appendix 1 there are examples of the possible bit patterns to be used as secondary codes 611A, 611B ... 611N and for storage in the memory device 710 (it is appreciated by those skilled in the art that the stored bit patterns 611 need not exactly match the bit patterns broadcast from the satellite, as long as they are close enough to ensure correlation strong for signal reception purposes).
The memory device 710 may be provided as read-only memory (ROM) or it may have some upgrade capability, for example, being implemented in the form of a programmable read-only memory (PROM). The latter is particularly suitable when codes 611A, 611B, ... 611N are subject to updating, for either commercial or security reasons. It should be noted that, in some circumstances, the memory 710 may represent some form of removable storage medium that can be inserted into and removed from the receiver 701. For example, the memory device 710 may comprise a smart card (analogous to a SIM card on a mobile phone) or a flash memory device. Thus, this would allow the 611 codes in the receiver 701 to be updated by replacing the removable memory device. An additional possibility is that the device 710 is capable of being able to download codes from a remote system (for example, a server) through some communication network, such as the Internet or a mobile phone connection, for storage in and use. from a local RAM. This download may be subject to an appropriate authorization from the user, to limit the use of the satellite navigation system for commercial, security or legal reasons.
In some embodiments, the memory output 710 is passed through an ECC unit 712 to perform error detection and / or correction as described above in connection with the satellite system 601, although, in For other receivers, the ECC checking mechanism 712 may be bypassed. Next, code 611 is supplied to channel acquisition unit 725 so that the channel can be acquired from the demodulated signal. Channel acquisition unit 725 is responsible for combining the primary and secondary codes for a satellite, for example using the subsystem shown in Figure 7, although, in other embodiments, this combination may be done at an earlier stage. (either in device 701 or before loading the codes into memory 710).
It should be noted that satellite acquisition can be done sequentially by testing a 611A code, then another 611B, and so on. Most commonly, multiple codes (potentially all of them) are correlated to the demodulated signal in parallel. Once the receiver has latched onto a sufficient number of incoming signals identifying the presence of their respective spreading codes 611A, 611B, the navigation data from those signals can be extracted and used by the position determining unit in conjunction with timing of received spreading codes to help calculate receiver location.
In many embodiments, receiver 701 may be capable of receiving signals from more than one satellite navigation system, for example, both Galileo and GPS, although the spreading codes for GPS comprise Gold codes that can be implemented as LFSR, it will be appreciated that such codes may also be stored in their entirety within the memory device 710. Accordingly, the individual architecture of memory 710 is compatible with specific or custom code patterns as well as conventional code patterns derived from LFSR.
In conclusion, although a variety of embodiments have been described herein, they are provided by way of example only, and the scope of the present invention is defined by the appended claims.
ES 2 333 735 T3
Appendix 1
Secondary codes search results by groups
A1.1 50-bit secondary codes
This list provides the group of 50 secondary 50-bit codes that performed best according to the code evaluation tool (ie group G5 of Table 8).
<td>Group Code No.</td><td>Code Sequence (Octal)</td><td>HNVp</td><td>Mfp</td><td>ELW (dB)</td><td>Balanced DC</td><td>Collection Code No.</td>
<td> 1</td><td> 25573627202363506</td><td> 625,00</td><td> 12,76</td><td> 1,53</td><td> 6</td><td> 61</td>
<td> 2</td><td> 12074531073715754</td><td> 625,00</td><td> 12,76</td><td> 1,66</td><td> 6</td><td> 73</td>
<td> 3</td><td> 26112131713246003</td><td> 625,00</td><td> 12,76</td><td> 1,94</td><td> -6</td><td> 189</td>
<td> 4</td><td> 22524764556376301</td><td> 625,00</td><td> 12,76</td><td> 2,13</td><td> 6</td><td> 251</td>
<td> 5</td><td> 14717210126407422</td><td> 625,00</td><td> 12,76</td><td> 2,41</td><td> -6</td><td> 274</td>
<td> 6</td><td> 16011403332415354</td><td> 625,00</td><td> 12,76</td><td> 2,41</td><td> -6</td><td> 275</td>
<td> 7</td><td> 02342206053427711</td><td> 69,44</td><td> 9,62</td><td> 1,49</td><td> -6</td><td> 309</td>
<td> 8</td><td> 33223527774215160</td><td> 69,44</td><td> 7,72</td><td> 1,49</td><td> 6</td><td> 333</td>
<td> 9</td><td> 34211130053273441</td><td> 69,44</td><td> 7,72</td><td> 1,49</td><td> -6</td><td> 334</td>
<td> 10</td><td> 02473476647427350</td><td> 69,44</td><td> 8,56</td><td> 1,64</td><td> -6</td><td> 349</td>
<td> 11</td><td> 36566345702370514</td><td> 69,44</td><td> 7,72</td><td> 1,87</td><td> -6</td><td> 458</td>
<td> 12</td><td> 33216077625561254</td><td> 69,44</td><td> 6,44</td><td> 1,87</td><td> -6</td><td> 466</td>
<td> 13</td><td> 03102573332127414</td><td> 69,44</td><td> 5,95</td><td> 1,88</td><td> 2</td><td> 479</td>
<td> 14</td><td> 22570434175547724</td><td> 69,44</td><td> 6,44</td><td> 1,89</td><td> -6</td><td> 487</td>
<td> 15</td><td> 00441255542176261</td><td> 69,44</td><td> 5,53</td><td> 1,90</td><td> 6</td><td> 512</td>
<td> 16</td><td> 32661705165044437</td><td> 69,44</td><td> 6,44</td><td> 1,93</td><td> -2</td><td> 565</td>
<td> 17</td><td> 12157442154505412</td><td> 69,44</td><td> 5,53</td><td> 1,93</td><td> 6</td><td> 577</td>
<td> 18</td><td> 17524453602203046</td><td> 69,44</td><td> 5,53</td><td> 1,93</td><td> 6</td><td> 582</td>
<td> 19</td><td> 21437573134427226</td><td> 69,44</td><td> 7,02</td><td> 1,96</td><td> -6</td><td> 618</td>
<td> 20</td><td> 31570116647735241</td><td> 69,44</td><td> 5,53</td><td> 1,95</td><td> -6</td><td> 663</td>
<td> 21</td><td> 01635506625303302</td><td> 69,44</td><td> 5,53</td><td> 1,96</td><td> 4</td><td> 681</td>
<td> 22</td><td> 16155564710520176</td><td> 69,44</td><td> 5,17</td><td> 1,96</td><td> -2</td><td> 709</td>
<td> 23</td><td> 34505150244730574</td><td> 69,44</td><td> 5,17</td><td> 1,96</td><td> 2</td><td> 749</td>
<td> 24</td><td> 06332151612766764</td><td> 69,44</td><td> 5,53</td><td> 1,98</td><td> -6</td><td> 815</td>
<td> 25</td><td> 06567264321730066</td><td> 69,44</td><td> 5,53</td><td> 1,98</td><td> -2</td><td> 816</td>
<td> 26</td><td> 06401655613267310</td><td> 69,44</td><td> 5,53</td><td> 1,99</td><td> 2</td><td> 848</td>
<td> 27</td><td> 33235230365000312</td><td> 69,44</td><td> 4,84</td><td> 1,98</td><td> 6</td><td> 867</td>
<td> 28</td><td> 21761427357265444</td><td> 69,44</td><td> 5,95</td><td> 2,00</td><td> -6</td><td> 886</td>
<td> 29</td><td> 14347403326712537</td><td> 69,44</td><td> 3,88</td><td> 2,01</td><td> -6</td><td> 899</td>
<td> 30</td><td> 02516217345404065</td><td> 69,44</td><td> 6,44</td><td> 2,11</td><td> 6</td><td> 925</td>
<td> 31</td><td> 17707251043155120</td><td> 69,44</td><td> 4,84</td><td> 2,10</td><td> 2</td><td> 929</td>
<td> 32</td><td> 05031745761203262</td><td> 69,44</td><td> 4,31</td><td> 2,18</td><td> 2</td><td> 963</td>
<td> 33</td><td> 32573570261546047</td><td> 69,44</td><td> 4,84</td><td> 2,20</td><td> -6</td><td> 989</td>
<td> 34</td><td> 16551660063411015</td><td> 69,44</td><td> 5,53</td><td> 2,21</td><td> 6</td><td> 996</td>
<td> 35</td><td> 21442417654542430</td><td> 69,44</td><td> 5,17</td><td> 2,25</td><td> 6</td><td> 1027</td>
<td> 36</td><td> 32234400341650556</td><td> 69,44</td><td> 4,56</td><td> 2,25</td><td> 6</td><td> 1036</td>
<td> 37</td><td> 12322702150221317</td><td> 69,44</td><td> 5,17</td><td> 2,27</td><td> 6</td><td> 1056</td>
<td> 38</td><td> 34157326212642370</td><td> 69,44</td><td> 4,08</td><td> 2,26</td><td> -2</td><td> 1063</td>
<td> 39</td><td> 14655410134643361</td><td> 69,44</td><td> 5,17</td><td> 2,32</td><td> 2</td><td> 1095</td>
<td> 40</td><td> 34332656472120076</td><td> 69,44</td><td> 4,31</td><td> 2,33</td><td> -2</td><td> 1148</td>
<td> 41</td><td> 12763542130347762</td><td> 69,44</td><td> 4,08</td><td> 2,33</td><td> -6</td><td> 1154</td>
<td> 42</td><td> 30335502270633721</td><td> 69,44</td><td> 3,38</td><td> 2,34</td><td> -2</td><td> 1177</td>
<td> 43</td><td> 37127575032146606</td><td> 69,44</td><td> 5,53</td><td> 2,37</td><td> -6</td><td> 1209</td>
<td> 44</td><td> 16332067277706150</td><td> 69,44</td><td> 4,31</td><td> 2,38</td><td> -6</td><td> 1254</td>
<td> 45</td><td> 20654425730130161</td><td> 69,44</td><td> 3,88</td><td> 2,38</td><td> 6</td><td> 1269</td>
<td> 46</td><td> 21453155234050053</td><td> 69,44</td><td> 3,88</td><td> 2,44</td><td> 6</td><td> 1281</td>
<td> 47</td><td> 24723712630336040</td><td> 69,44</td><td> 3,88</td><td> 2,45</td><td> 2</td><td> 1282</td>
<td> 48</td><td> 33166074103756644</td><td> 69,44</td><td> 2,99</td><td> 2,98</td><td> -4</td><td> 1292</td>
<td> 49</td><td> 02437576147522344</td><td> 69,44</td><td> 2,99</td><td> 3,12</td><td> -4</td><td> 1295</td>
<td> 50</td><td> 30556472024366346</td><td> 69,44</td><td> 2,43</td><td> 3,29</td><td> -2</td><td> 1300</td>
ES 2 333 735 T3
A1.2 100-bit secondary codes
This list provides the group of one hundred 100-bit secondary codes that performed best according to the code evaluation tool (ie group G11 in Table 9).
<td>Group Code No.</td><td>Code Sequence (Octal)</td><td>HNVp</td><td>Mfp</td><td>ELW (dB)</td><td>Balanced DC</td><td>Collection Code No.</td>
<td> 1</td><td> 1017667551661733412501077343115434</td><td> 156,25</td><td> 7,02</td><td> 1,77</td><td> -8</td><td> 2</td>
<td> 2</td><td> 0631254275171603073622720315202445</td><td> 156,25</td><td> 6,07</td><td> 1,86</td><td> -4</td><td> 12</td>
<td> 3</td><td> 0546401132470153603121556746501601</td><td> 156,25</td><td> 5,79</td><td> 1,89</td><td> -10</td><td> 19</td>
<td> 4</td><td> 1516431144017013675430711575652267</td><td> 156,25</td><td> 8,68</td><td> 1,92</td><td> 6</td><td> 25</td>
<td> 5</td><td> 1344376255356603020617513115105223</td><td> 156,25</td><td> 6,58</td><td> 1,92</td><td> 0</td><td> 37</td>
<td> 6</td><td> 1353073751147235710500741123737630</td><td> 156,25</td><td> 6,65</td><td> 1,92</td><td> 10</td><td> 38</td>
<td> 7</td><td> 0515674135705002223706553056463566</td><td> 156,25</td><td> 7,72</td><td> 1,95</td><td> 4</td><td> 47</td>
<td> 8</td><td> 1677125513313716051436624210453742</td><td> 156,25</td><td> 6,01</td><td> 1,93</td><td> 6</td><td> 52</td>
<td> 9</td><td> 0747706256407021657245260457576233</td><td> 156,25</td><td> 7,44</td><td> 1,95</td><td> 10</td><td> 57</td>
<td> 10</td><td> 1451213417724352010354300655462224</td><td> 156,25</td><td> 5,68</td><td> 1,94</td><td> -10</td><td> 61</td>
<td> 11</td><td> 0177031101014512426111573021362547</td><td> 156,25</td><td> 9,19</td><td> 1,98</td><td> -10</td><td> 66</td>
<td> 12</td><td> 1770124647537553042344131345351141</td><td> 156,25</td><td> 6,58</td><td> 1,96</td><td> 4</td><td> 77</td>
<td> 13</td><td> 1300603055605334314535265542676676</td><td> 156,25</td><td> 4,88</td><td> 1,96</td><td> -6</td><td> 99</td>
<td> 14</td><td> 1733034611447726307055750215351725</td><td> 156,25</td><td> 6,94</td><td> 1,98</td><td> 10</td><td> 103</td>
<td> 15</td><td> 0156627670553374441625605674742641</td><td> 156,25</td><td> 5,79</td><td> 1,97</td><td> 10</td><td> 107</td>
<td> 16</td><td> 0276220150372216146160215675527711</td><td> 156,25</td><td> 5,95</td><td> 1,98</td><td> 0</td><td> 111</td>
<td> 17</td><td> 0320261610337423553762522273755670</td><td> 156,25</td><td> 5,58</td><td> 1,97</td><td> 10</td><td> 112</td>
<td> 18</td><td> 0632503454710740637662677525422655</td><td> 156,25</td><td> 6,01</td><td> 1,98</td><td> 10</td><td> 115</td>
<td> 19</td><td> 1147255160054262220244567167416250</td><td> 156,25</td><td> 6,72</td><td> 1,99</td><td> 8</td><td> 120</td>
<td> 20</td><td> 1007270675334032323654627667063312</td><td> 156,25</td><td> 5,95</td><td> 1,99</td><td> 8</td><td> 139</td>
<td> 21</td><td> 1231242444016452363170033347237306</td><td> 156,25</td><td> 7,02</td><td> 2,00</td><td> -4</td><td> 141</td>
<td> 22</td><td> 1414713241003373327542171761335467</td><td> 156,25</td><td> 5,79</td><td> 1,99</td><td> 10</td><td> 143</td>
<td> 23</td><td> 1417245262043574667441043710240715</td><td> 156,25</td><td> 5,84</td><td> 1,99</td><td> -4</td><td> 144</td>
<td> 24</td><td> 0367771136534730271622313274242701</td><td> 156,25</td><td> 8,45</td><td> 2,03</td><td> 10</td><td> 156</td>
<td> 25</td><td> 1145110236016537270315707044201265</td><td> 156,25</td><td> 7,91</td><td> 2,02</td><td> -8</td><td> 160</td>
<td> 26</td><td> 1344702465244264214764030227755354</td><td> 156,25</td><td> 5,79</td><td> 2,00</td><td> -2</td><td> 162</td>
<td> 27</td><td> 1434325524470022212467004654710267</td><td> 156,25</td><td> 7,10</td><td> 2,01</td><td> -10</td><td> 165</td>
<td> 28</td><td> 0063334311717324772537266050054573</td><td> 156,25</td><td> 6,79</td><td> 2,02</td><td> 10</td><td> 170</td>
<td> 29</td><td> 0607057642245706574021210731444517</td><td> 156,25</td><td> 7,18</td><td> 2,02</td><td> -4</td><td> 180</td>
<td> 30</td><td> 0611401167361764743273227251722635</td><td> 156,25</td><td> 7,44</td><td> 2,03</td><td> 10</td><td> 181</td>
<td> 31</td><td> 1635052022776517365720176162323063</td><td> 156,25</td><td> 5,90</td><td> 2,01</td><td> 10</td><td> 192</td>
<td> 32</td><td> 0326225300407714272772344430710230</td><td> 156,25</td><td> 5,95</td><td> 2,03</td><td> -8</td><td> 217</td>
<td> 33</td><td> 0510502331203417345362344167330775</td><td> 156,25</td><td> 6,13</td><td> 2,03</td><td> 2</td><td> 220</td>
<td> 34</td><td> 0716636617025525357517720123554220</td><td> 156,25</td><td> 6,87</td><td> 2,04</td><td> 8</td><td> 227</td>
<td> 35</td><td> 1122770554407365643057311143401202</td><td> 156,25</td><td> 6,01</td><td> 2,03</td><td> -6</td><td> 230</td>
<td> 36</td><td> 1243036741530632004233026426632571</td><td> 156,25</td><td> 5,79</td><td> 2,03</td><td> -6</td><td> 231</td>
<td> 37</td><td> 1610777702672260241610533065537310</td><td> 156,25</td><td> 5,53</td><td> 2,03</td><td> 4</td><td> 239</td>
<td> 38</td><td> 1712544161633742356700326545406453</td><td> 156,25</td><td> 4,92</td><td> 2,02</td><td> 4</td><td> 242</td>
<td> 39</td><td> 0030310754076610523572244641505641</td><td> 156,25</td><td> 6,01</td><td> 2,04</td><td> -10</td><td> 244</td>
<td> 40</td><td> 0213267052355071371537771070013626</td><td> 156,25</td><td> 5,63</td><td> 2,04</td><td> 8</td><td> 247</td>
<td> 41</td><td> 0224610240314727531161745202365035</td><td> 156,25</td><td> 6,19</td><td> 2,04</td><td> -8</td><td> 248</td>
<td> 42</td><td> 1175714474304165137310064024653403</td><td> 156,25</td><td> 5,53</td><td> 2,03</td><td> 4</td><td> 269</td>
<td> 43</td><td> 1530514636531707114410170055122027</td><td> 156,25</td><td> 5,63</td><td> 2,04</td><td> -8</td><td> 276</td>
<td> 44</td><td> 1731455176510406725116501500203614</td><td> 156,25</td><td> 6,72</td><td> 2,04</td><td> -8</td><td> 279</td>
ES 2 333 735 T3 (Continued)
<td>Group Code no.</td><td>Code Sequence (Octal)</td><td>HNVp</td><td>Mfp</td><td>ELW (dB)</td><td>Balanced DC</td><td>Collection Code no.</td>
<td> 45</td><td> 0433636460207711146752572675712503</td><td> 156,25</td><td> 6,79</td><td> 2,05</td><td> 10</td><td> 292</td>
<td> 46</td><td> 1613437202250605536626635762462432</td><td> 156,25</td><td> 4,84</td><td> 2,04</td><td> -4</td><td> 312</td>
<td> 47</td><td> 1625101061520276320032063555360662</td><td> 156,25</td><td> 5,90</td><td> 2,05</td><td> -10</td><td> 313</td>
<td> 48</td><td> 0231343771024133644755705251603310</td><td> 156,25</td><td> 7,02</td><td> 2,07</td><td> 0</td><td> 329</td>
<td> 49</td><td> 0331121651726074044035500146353752</td><td> 156,25</td><td> 5,79</td><td> 2,06</td><td> -6</td><td> 331</td>
<td> 50</td><td> 1140205172423045411143501735117526</td><td> 156,25</td><td> 7,62</td><td> 2,07</td><td> -10</td><td> 339</td>
<td> 51</td><td> 1477710516707430223244477527456224</td><td> 156,25</td><td> 5,34</td><td> 2,05</td><td> 8</td><td> 340</td>
<td> 52</td><td> 1760613711523376143003426562555263</td><td> 156,25</td><td> 5,84</td><td> 2,06</td><td> -8</td><td> 344</td>
<td> 53</td><td> 1213526564555746063344050344771071</td><td> 156,25</td><td> 6,72</td><td> 2,11</td><td> 4</td><td> 360</td>
<td> 54</td><td> 0713625421401751534002627023374627</td><td> 156,25</td><td> 5,30</td><td> 2,11</td><td> 2</td><td> 377</td>
<td> 55</td><td> 0117435351167424434435023641124602</td><td> 156,25</td><td> 5,34</td><td> 2,12</td><td> -8</td><td> 383</td>
<td> 56</td><td> 0737002040127106621306646432273216</td><td> 156,25</td><td> 7,62</td><td> 2,14</td><td> 10</td><td> 387</td>
<td> 57</td><td> 1772742622672761515261007502731234</td><td> 156,25</td><td> 6,19</td><td> 2,13</td><td> 8</td><td> 394</td>
<td> 58</td><td> 0055112007374761467666612145025167</td><td> 156,25</td><td> 6,79</td><td> 2,15</td><td> -2</td><td> 395</td>
<td> 59</td><td> 1564161441406750752441323336653574</td><td> 156,25</td><td> 6,79</td><td> 2,15</td><td> -6</td><td> 404</td>
<td> 60</td><td> 0417365220724661101747462060621077</td><td> 156,25</td><td> 5,25</td><td> 2,15</td><td> -4</td><td> 414</td>
<td> 61</td><td> 0015465263176005475557522747327030</td><td> 156,25</td><td> 5,21</td><td> 2,15</td><td> 6</td><td> 428</td>
<td> 62</td><td> 1147145677526111026276143606752455</td><td> 156,25</td><td> 5,34</td><td> 2,16</td><td> -8</td><td> 438</td>
<td> 63</td><td> 1215063222171677372121730077166442</td><td> 156,25</td><td> 6,25</td><td> 2,17</td><td> -6</td><td> 439</td>
<td> 64</td><td> 0151223437105233715215355636333760</td><td> 156,25</td><td> 6,01</td><td> 2,17</td><td> -10</td><td> 442</td>
<td> 65</td><td> 0310045153562155116432132341274540</td><td> 156,25</td><td> 6,51</td><td> 2,17</td><td> 10</td><td> 446</td>
<td> 66</td><td> 0313701655650355314713767030507133</td><td> 156,25</td><td> 5,58</td><td> 2,17</td><td> 10</td><td> 447</td>
<td> 67</td><td> 0341617660661166673525175330236301</td><td> 156,25</td><td> 6,07</td><td> 2,18</td><td> -8</td><td> 461</td>
<td> 68</td><td> 0650745737745531150576004734743105</td><td> 156,25</td><td> 6,13</td><td> 2,18</td><td> 10</td><td> 468</td>
<td> 69</td><td> 0257150230423207277702063713557073</td><td> 156,25</td><td> 5,04</td><td> 2,18</td><td> -6</td><td> 485</td>
<td> 70</td><td> 0371112147751520500271450263267614</td><td> 156,25</td><td> 7,18</td><td> 2,20</td><td> -4</td><td> 489</td>
<td> 71</td><td> 0626161466671766300237415525122401</td><td> 156,25</td><td> 5,58</td><td> 2,18</td><td> 2</td><td> 493</td>
<td> 72</td><td> 1665024117150505606367344643102604</td><td> 156,25</td><td> 8,56</td><td> 2,22</td><td> 8</td><td> 499</td>
<td> 73</td><td> 0247546351041540626257053617372721</td><td> 156,25</td><td> 5,53</td><td> 2,19</td><td> -4</td><td> 509</td>
<td> 74</td><td> 0425546367775115236520720751604372</td><td> 156,25</td><td> 5,79</td><td> 2,20</td><td> 10</td><td> 514</td>
<td> 75</td><td> 1755653714474143136002576156045632</td><td> 156,25</td><td> 5,53</td><td> 2,19</td><td> -8</td><td> 534</td>
<td> 76</td><td> 0532061051521546021113610232743774</td><td> 156,25</td><td> 6,58</td><td> 2,23</td><td> 8</td><td> 562</td>
<td> 77</td><td> 0700121323113650246113366752501470</td><td> 156,25</td><td> 6,44</td><td> 2,22</td><td> -8</td><td> 565</td>
<td> 78</td><td> 0110205063026464732407660523135077</td><td> 156,25</td><td> 6,87</td><td> 2,23</td><td> -8</td><td> 584</td>
<td> 79</td><td> 0416167101027513676674673025262672</td><td> 156,25</td><td> 6,31</td><td> 2,24</td><td> -8</td><td> 593</td>
<td> 80</td><td> 0456273114610526560766076766441453</td><td> 156,25</td><td> 6,94</td><td> 2,24</td><td> 6</td><td> 597</td>
<td> 81</td><td> 1374372137673215312254747423144006</td><td> 156,25</td><td> 5,73</td><td> 2,22</td><td> -8</td><td> 611</td>
<td> 82</td><td> 1551022504037643667054043343540644</td><td> 156,25</td><td> 4,92</td><td> 2,22</td><td> -8</td><td> 613</td>
<td> 83</td><td> 1670544005364760264631537214777321</td><td> 156,25</td><td> 5,43</td><td> 2,22</td><td> 8</td><td> 619</td>
<td> 84</td><td> 0262136575407127060737522611032221</td><td> 156,25</td><td> 5,39</td><td> 2,24</td><td> -2</td><td> 628</td>
<td> 85</td><td> 0344362273327420764601241467345332</td><td> 156,25</td><td> 6,01</td><td> 2,24</td><td> 2</td><td> 632</td>
<td> 86</td><td> 0346373452475266641311030373173760</td><td> 156,25</td><td> 6,51</td><td> 2,25</td><td> -10</td><td> 633</td>
<td> 87</td><td> 1114030775724542174216407124223414</td><td> 156,25</td><td> 4,92</td><td> 2,23</td><td> 8</td><td> 645</td>
<td> 88</td><td> 1352003024305541633405722565345467</td><td> 156,25</td><td> 5,68</td><td> 2,23</td><td> -2</td><td> 646</td>
<td> 89</td><td> 1511014217420521165422075130776464</td><td> 156,25</td><td> 4,77</td><td> 2,23</td><td> 8</td><td> 649</td>
<td> 90</td><td> 1527665213541007307470160226446712</td><td> 156,25</td><td> 6,25</td><td> 2,25</td><td> -2</td><td> 650</td>
<td> 91</td><td> 0076445040276065660210641072571147</td><td> 156,25</td><td> 5,58</td><td> 2,25</td><td> 10</td><td> 658</td>
<td> 92</td><td> 0234564411765657062441274230761130</td><td> 156,25</td><td> 6,01</td><td> 2,25</td><td> 2</td><td> 664</td>
<td> 93</td><td> 0315607465514722221202410627744026</td><td> 156,25</td><td> 5,12</td><td> 2,24</td><td> 10</td><td> 666</td>
<td> 94</td><td> 0523574541055522406215541601610037</td><td> 156,25</td><td> 5,39</td><td> 2,25</td><td> 10</td><td> 671</td>
<td> 95</td><td> 1570643707544776556110736140465053</td><td> 156,25</td><td> 5,79</td><td> 2,25</td><td> -10</td><td> 689</td>
ES 2 333 735 T3 (Continued)
<td>Group Code no.</td><td>Code Sequence (Octal)</td><td>HNVp</td><td>Mfp</td><td>ELW (dB)</td><td>Balanced DC</td><td>Collection Code no.</td>
<td> 96</td><td> 0006613354515760641656021426704504</td><td> 156,25</td><td> 6,65</td><td> 2,26</td><td> 10</td><td> 695</td>
<td> 97</td><td> 0141246667206500167224661761664355</td><td> 156,25</td><td> 6,19</td><td> 2,27</td><td> 0</td><td> 698</td>
<td> 98</td><td> 0243440306411441633414640545775264</td><td> 156,25</td><td> 5,21</td><td> 2,25</td><td> 10</td><td> 699</td>
<td> 99</td><td> 0571026031342702231523571253640063</td><td> 156,25</td><td> 4,66</td><td> 2,25</td><td> 6</td><td> 707</td>
<td> 100</td><td> 0620610272661655331556160621527401</td><td> 156,25</td><td> 5,95</td><td> 2,26</td><td> 4</td><td> 708</td>
<td> 101</td><td> 1206513735602311260065342343203071</td><td> 156,25</td><td> 5,17</td><td> 2,25</td><td> 8</td><td> 718</td>
<td> 102</td><td> 1570733065450270342220373002426211</td><td> 156,25</td><td> 5,30</td><td> 2,26</td><td> -10</td><td> 728</td>
<td> 103</td><td> 0265214066570427616613767556012326</td><td> 156,25</td><td> 5,04</td><td> 2,26</td><td> 6</td><td> 742</td>
<td> 104</td><td> 0363566600733245256340445033033203</td><td> 156,25</td><td> 6,19</td><td> 2,27</td><td> -4</td><td> 744</td>
<td> 105</td><td> 0674666571201520325403111470541124</td><td> 156,25</td><td> 6,25</td><td> 2,27</td><td> 10</td><td> 751</td>
<td> 106</td><td> 1046701175774741642455251231432605</td><td> 156,25</td><td> 5,58</td><td> 2,26</td><td> 2</td><td> 755</td>
<td> 107</td><td> 1257114556512306460054022777234303</td><td> 156,25</td><td> 5,39</td><td> 2,27</td><td> 2</td><td> 759</td>
<td> 108</td><td> 1262105671017066267376636522403674</td><td> 156,25</td><td> 5,73</td><td> 2,27</td><td> 8</td><td> 760</td>
<td> 109</td><td> 1656531732636700560644267344203443</td><td> 156,25</td><td> 5,43</td><td> 2,27</td><td> 4</td><td> 774</td>
<td> 110</td><td> 0723664517751027171750574225014335</td><td> 156,25</td><td> 5,48</td><td> 2,27</td><td> 10</td><td> 795</td>
<td> 111</td><td> 0743702765222166513602030677546766</td><td> 156,25</td><td> 4,73</td><td> 2,27</td><td> -10</td><td> 797</td>
<td> 112</td><td> 1164440624007176306154576025105322</td><td> 156,25</td><td> 4,88</td><td> 2,26</td><td> 10</td><td> 802</td>
<td> 113</td><td> 1266016704113115647535727614134135</td><td> 156,25</td><td> 6,01</td><td> 2,28</td><td> -6</td><td> 809</td>
<td> 114</td><td> 0101217303334460522575336163144175</td><td> 156,25</td><td> 5,08</td><td> 2,28</td><td> 0</td><td> 822</td>
<td> 115</td><td> 0274301166372435736571122307027322</td><td> 156,25</td><td> 4,81</td><td> 2,28</td><td> -6</td><td> 830</td>
<td> 116</td><td> 0275141273623024672306211335776374</td><td> 156,25</td><td> 4,96</td><td> 2,28</td><td> -10</td><td> 831</td>
<td> 117</td><td> 1203343244647367667542074320617642</td><td> 156,25</td><td> 5,48</td><td> 2,29</td><td> -6</td><td> 854</td>
<td> 118</td><td> 1365371454244701230766136356766015</td><td> 156,25</td><td> 4,73</td><td> 2,28</td><td> -10</td><td> 862</td>
<td> 119</td><td> 1376444436364355662102640714510772</td><td> 156,25</td><td> 6,72</td><td> 2,30</td><td> 4</td><td> 863</td>
<td> 120</td><td> 1527066404205537545560776611427221</td><td> 156,25</td><td> 4,70</td><td> 2,28</td><td> 4</td><td> 873</td>
<td> 121</td><td> 1601470055517463637652625165122367</td><td> 156,25</td><td> 5,30</td><td> 2,28</td><td> -10</td><td> 876</td>
<td> 122</td><td> 1641233373027257634717204611057260</td><td> 156,25</td><td> 7,10</td><td> 2,30</td><td> -6</td><td> 878</td>
<td> 123</td><td> 0002766647502723115324430352103441</td><td> 156,25</td><td> 5,79</td><td> 2,30</td><td> -10</td><td> 880</td>
<td> 124</td><td> 0041656331720051502611055505703563</td><td> 156,25</td><td> 5,17</td><td> 2,29</td><td> 8</td><td> 882</td>
<td> 125</td><td> 0240556211652765420554656032002171</td><td> 156,25</td><td> 5,04</td><td> 2,29</td><td> 10</td><td> 886</td>
<td> 126</td><td> 0573266271464266242172052161604400</td><td> 156,25</td><td> 6,13</td><td> 2,30</td><td> 10</td><td> 906</td>
<td> 127</td><td> 0641161577235151013464342354001264</td><td> 156,25</td><td> 4,50</td><td> 2,28</td><td> -8</td><td> 912</td>
<td> 128</td><td> 1037214410012710166663614531455045</td><td> 156,25</td><td> 5,12</td><td> 2,29</td><td> -10</td><td> 920</td>
<td> 129</td><td> 1043167621357072453307654755445341</td><td> 156,25</td><td> 4,46</td><td> 2,29</td><td> -10</td><td> 921</td>
<td> 130</td><td> 1514653210667447525577634114164407</td><td> 156,25</td><td> 5,73</td><td> 2,30</td><td> -8</td><td> 929</td>
<td> 131</td><td> 1534475063251532370627177552073440</td><td> 156,25</td><td> 5,39</td><td> 2,30</td><td> -10</td><td> 930</td>
<td> 132</td><td> 1770704615227406351055415253726547</td><td> 156,25</td><td> 5,43</td><td> 2,29</td><td> 8</td><td> 939</td>
<td> 133</td><td> 0161556341340536226042251442276610</td><td> 156,25</td><td> 6,01</td><td> 2,31</td><td> 10</td><td> 945</td>
<td> 134</td><td> 1572121634320260166747333116740553</td><td> 156,25</td><td> 6,38</td><td> 2,31</td><td> -6</td><td> 976</td>
<td> 135</td><td> 1665140542147013614441405352772443</td><td> 156,25</td><td> 5,39</td><td> 2,30</td><td> 6</td><td> 978</td>
<td> 136</td><td> 1731650013522017114426450706056235</td><td> 156,25</td><td> 4,84</td><td> 2,29</td><td> 8</td><td> 979</td>
<td> 137</td><td> 1325627352355616455613377214003321</td><td> 156,25</td><td> 6,94</td><td> 2,65</td><td> -10</td><td> 981</td>
Contents25
10 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10
22 members in 13 offices
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 2005007235 | European Patent Office (EPO) | W | |
| 2005007235 | European Patent Office (EPO) | W | |
| 05764218 | – | – | – |
| WO2005EP07235 | – | – | – |
Members22
| Document | Office | Kind | |
|---|---|---|---|
| CA2613583A1 | Canada | A1 | |
| WO2007003213A1 | World Intellectual Property Organization (WIPO) | A1 | |
| EP1899742A1 | European Patent Office (EPO) | A1 | |
| CN101278207A | China | A | |
| JP2008547338A | Japan | A | |
| HK1122866A1 | Hong Kong, China | A1 | |
| US2009196329A1 | United States of America | A1 | |
| RU2008103141A | Russian Federation | A | |
| EP1899742B1 | European Patent Office (EPO) | B1 | |
| AT441123T | Austria | T | |
| ATE441123T1 | Austria | T1 | |
| BRPI0520410A2 | Brazil | A2 | |
| DE602005016315D1 | Germany | D1 | |
| PT1899742E | Portugal | E | |
| ES2333735T3This record | Spain | T3 | |
| RU2416101C2 | Russian Federation | C2 | |
| JP4796626B2 | Japan | B2 | |
| US8090005B2 | United States of America | B2 | |
| CA2613583C | Canada | C | |
| CN101278207B | China | B | |
| BRPI0520410A8 | Brazil | A8 | |
| BRPI0520410B1 | Brazil | B1 |
Numbers
- Publication, DOCDB
- 2333735
- Publication, EPODOC
- ES2333735T
- Application
- 5764218
- Application, DOCDB
- 05764218
- Application, EPODOC
- ES20050764218T
Titles2
- Spanish
- CODIGOS DE ENSANCHAMIENTO PARA UN SISTEMA DE NAVEGACION POR SALTELITE.
- English
- SPREADING CODES FOR A SALTELITE NAVIGATION SYSTEM.
Classification
- CPC, 3
- H04J13/10
- H04B2201/70715
- G01S19/02
- IPC, 4
- G01S1 00
- G01S19 02
- H04B1 707
- H04J13 00