Shared read-only memory architecture for pseudo-random code generation in satellite navigation system architecture

By sharing read-only memory and optimization architecture in the receiver based on satellite navigation system, the computational complexity and resource occupation problems when generating PRN codes are solved, and efficient and low-power PRN code generation is achieved, suitable for multi-navigation systems and Multi-tracking channel application.

CN119148168APending Publication Date: 2024-12-17STMICROELECTRONICS INT NV
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410743183.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-06-14
Filing Date
2024-06-11
Publication Date
2024-12-17

AI Technical Summary

Technical Problem

Existing satellite navigation system-based receivers face computational complexity and resource occupancy problems when generating pseudo-random codes (PRN codes), especially when supporting multiple tracking channels and multiple navigation systems, resulting in silicon area and power consumption. Increase.

Method used

Shared read-only memory (ROM) to share Lejeunde sequence values ​​between multiple tracking channels, store the code sequences required by multiple navigation systems through a single ROM, reduce the number of ROMs required for each tracking channel, and pass parameters The architecture optimizes clock frequency and ROM quantity to balance power consumption and accuracy.

Benefits of technology

It significantly reduces the silicon area and power consumption required to support multiple navigation systems and tracking channels, improves the efficiency and accuracy of PRN code generation, and meets the demand for high-performance navigation systems to quickly generate unique PRN codes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119148168A_ABST
    Figure CN119148168A_ABST
Patent Text Reader

Abstract

The embodiment of the invention relates to a shared read-only memory architecture for pseudo-random code generation in a satellite navigation system architecture. An apparatus, method and portable navigation device are provided for determining a PRN code on a satellite-based navigation system receiver to correlate with a ranging code. An example satellite-based navigation system receiver may include a plurality of tracking channels, wherein each tracking channel of the plurality of tracking channels is configured to generate a pseudo-random code based at least in part on a first code value from a first position in a code sequence and a second code value from a second position in the code sequence. The example satellite-based navigation system receiver may also include a read-only memory configured to store a code sequence. A second plurality of trace channels of the plurality of trace channels may be configured to receive the first code value and the second code value from the read only memory.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present disclosure relate generally to generating pseudorandom (PRN) codes in a satellite-based navigation system, and more particularly, to generating PRN codes in a satellite-based navigation system receiver architecture utilizing a shared read-only memory (ROM). Background Art

[0002] A satellite-based navigation system receiver determines its position by processing signals broadcast by the various satellites within range, and determines the distance to each satellite by extracting the propagation time of the incoming signal through space at the speed of light.

[0003] In the past decade, different countries have developed a variety of navigation systems, such as the Global Positioning System (GPS), GLONASS (Russian satellite navigation system), Galileo system, BeiDou Satellite Navigation System (BDS), etc., as part of the Global Navigation Satellite System (GNSS). Most GNSS satellites use code division multiple access (CDMA) technology to multiplex multiple satellite signals onto the same frequency. To achieve this, each satellite is assigned a PRN code, which modulates the transmission signal. The GNSS receiver has a priori knowledge of the PRN code of each satellite and correlates the incoming signal with a local code copy generated on the satellite-based navigation system (GNSS) receiver to determine whether a given satellite is visible and determine the accurate distance to the satellite.

[0004] Applicants have recognized the many technical challenges and difficulties associated with generating PRN codes on satellite-based navigation system receivers. Through effort, ingenuity and innovation, Applicants have solved the problems associated with generating PRN codes on satellite-based navigation system receivers by developing the solutions embodied in the present disclosure, which will be described in detail below. Summary of the invention

[0005] Various embodiments relate to example apparatus, methods, and portable navigation devices for determining a PRN code that correlates with a ranging code on a satellite-based navigation system receiver. According to some embodiments of the present disclosure, an example satellite-based navigation system receiver is provided. In some embodiments, the example satellite-based navigation system receiver may include a plurality of tracking channels, wherein each of the plurality of tracking channels is configured to generate a pseudo-random code based at least in part on a first code value and a second code value, the first code value being from a first position in a code sequence, and the second code value being from a second position in the code sequence. The example satellite-based navigation system receiver may also include a read-only memory configured to store a code sequence, wherein a second plurality of tracking channels in the plurality of tracking channels is configured to receive the first code value and the second code value from the read-only memory.

[0006] In some embodiments, each tracking channel of the plurality of tracking channels may be configured to generate a pseudo-random code based on a plurality of satellite-based navigation systems.

[0007] In some embodiments, each pseudorandom code of a plurality of satellite-based navigation systems may be generated based at least in part on an associated code sequence.

[0008] In some embodiments, each associated code sequence associated with a plurality of satellite-based navigation systems may be stored in a read-only memory.

[0009] In some embodiments, each of the plurality of tracking channels may be configured to generate a pseudo-random code based on a navigation system based on a global positioning system (GPS) satellite and a navigation system based on a BeiDou satellite.

[0010] In some embodiments, a pseudorandom code may be transmitted as part of the ranging code.

[0011] In some embodiments, a pseudorandom code transmitted according to a GPS satellite-based navigation system may be transmitted as part of an L1C signal, and a pseudorandom code transmitted according to a BDS satellite-based navigation system may be transmitted as part of a B1C signal.

[0012] In some embodiments, the code sequence may be a Legendre sequence.

[0013] In some embodiments, the satellite-based navigation system receiver may further include a plurality of read-only memories, wherein each of the plurality of read-only memories is configured to store a code sequence. In addition, the satellite-based navigation system receiver may further include a clock having a clock frequency, wherein the clock is configured to synchronize one or more operations on the satellite-based navigation system receiver.

[0014] In some embodiments, a number of read-only memories in the plurality of read-only memories may be determined based at least in part on a clock frequency of the clock.

[0015] In some embodiments, the clock frequency may be determined based at least in part on the number of read-only memories in the plurality of read-only memories.

[0016] An example method for determining a pseudorandom noise (PRN) code on a satellite-based navigation system is also provided. In some embodiments, the method may include: requesting a first code value at a first memory location from a read-only memory configured to store a code sequence, wherein the first memory location corresponds to a first index in the code sequence; and requesting a second code value at a second memory location from the read-only memory, wherein the second memory location corresponds to a second index in the code sequence. The method may also include: generating a first pseudorandom code based at least in part on the first code value and the second code value; wherein the plurality of tracking channels are configured to generate the pseudorandom code based at least in part on the plurality of code values ​​stored in the read-only memory.

[0017] In some embodiments, each tracking channel of the plurality of tracking channels may be configured to generate a pseudo-random code based on a plurality of satellite-based navigation systems.

[0018] In some embodiments, each pseudorandom code of a plurality of satellite-based navigation systems may be generated based at least in part on an associated code sequence.

[0019] In some embodiments, each associated code sequence associated with a plurality of satellite-based navigation systems may be stored in a read-only memory.

[0020] In some embodiments, each of the plurality of tracking channels may be configured to generate a pseudo-random code based on a navigation system based on a global positioning system (GPS) satellite and a navigation system based on a BeiDou satellite.

[0021] In some embodiments, a pseudorandom code may be transmitted as part of the ranging code.

[0022] In some embodiments, a pseudorandom code transmitted according to a GPS satellite-based navigation system may be transmitted as part of an L1C signal, and a pseudorandom code transmitted according to a BDS satellite-based navigation system may be transmitted as part of a B1C signal.

[0023] In some embodiments, the code sequence may be a Legendre sequence.

[0024] An example portable navigation device for determining a position using a satellite-based navigation system receiver is also provided. In some embodiments, the example portable navigation device may include: an antenna configured to receive an acquisition signal from a remote satellite; and a satellite-based navigation system receiver electrically connected to the antenna. The satellite-based navigation system receiver may include a plurality of tracking channels, wherein each of the plurality of tracking channels is configured to generate a pseudo-random code based at least in part on a first code value from a first position in a code sequence and a second code value from a second position in the code sequence. In addition, the example satellite-based navigation system receiver may include a read-only memory configured to store a code sequence, wherein a second plurality of tracking channels in the plurality of tracking channels is configured to receive the first code value and the second code value from the read-only memory. In some embodiments, the portable navigation device may be configured to determine a position based at least in part on a comparison of the pseudo-random code with the acquisition signal. BRIEF DESCRIPTION OF THE DRAWINGS

[0025] Reference will now be made to the drawings. The components shown in the drawings may or may not be present in certain embodiments described herein. Some embodiments may include fewer (or more) components than those shown in the drawings according to example embodiments of the present disclosure.

[0026] Figure 1 A satellite-based navigation system including an example satellite-based navigation system receiver according to one or more embodiments of the present disclosure is illustrated.

[0027] Figure 2 An example satellite-based navigation system receiver including a PRN code generator module in accordance with one or more embodiments of the present disclosure is illustrated.

[0028] Figure 3 An example PRN code generator module including a shared read-only memory according to one or more embodiments of the present disclosure is illustrated.

[0029] Figure 4 An example read-only memory including two code sequences according to one or more embodiments of the present disclosure is illustrated.

[0030] Figure 5 An example PRN code generator module including a plurality of shared read-only memories according to one or more embodiments of the present disclosure is illustrated.

[0031] Figure 6 An example parameterized PRN code generator module supporting 96 tracking channels according to one or more embodiments of the present disclosure is illustrated.

[0032] Figure 7A process for generating a PRN code at a satellite-based navigation system receiver in accordance with one or more embodiments of the present disclosure is illustrated.

[0033] Figure 8 An example timing diagram of an example PRN code generator module according to one or more embodiments of the present disclosure is illustrated.

[0034] Fig. 9 An example timing diagram of an example PRN code generator module according to one or more embodiments of the present disclosure is illustrated.

[0035] Fig.10 An example portable navigation device including a satellite-based navigation system receiver is illustrated in accordance with one or more embodiments of the present disclosure. DETAILED DESCRIPTION

[0036] Example embodiments will be described more fully below with reference to the accompanying drawings, in which some but not all embodiments of the invention of the present disclosure are shown. Indeed, embodiments of the present disclosure may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that the present disclosure satisfies applicable legal requirements. Like reference numerals refer to like elements throughout the text.

[0037] Various example embodiments address technical issues associated with generating PRN codes on a satellite-based navigation system receiver, particularly on a satellite-based navigation system receiver that supports multiple tracking channels and / or multiple satellite-based navigation systems. As will be appreciated by those skilled in the art to which the present disclosure pertains, there are many example scenarios in which a user may need to generate PRN codes for multiple tracking channels and / or multiple satellite-based navigation systems.

[0038] For example, many satellite-based navigation system receivers utilize multiple tracking channels to acquire one or more transmission signals, correlate the transmission signals with each other, determine the range to each satellite transmitting the transmission signal, and track the acquired signals. Having multiple tracking channels can further speed up the acquisition and reacquisition processes by dividing the search sequence among multiple different tracking channels.

[0039] In addition, many satellite-based navigation system receivers are configured to support multiple GNSS satellite-based navigation systems. In the past decade, different countries have developed a variety of navigation systems, such as the Global Positioning System (GPS), GLONASS (Russian satellite navigation system), Galileo system, Beidou Satellite Navigation System (BDS), etc. Most GNSS satellites use code division multiple access (CDMA) technology to multiplex multiple satellite signals on the same frequency. To achieve this, each satellite is assigned a pseudo-random noise (PRN) code, which modulates the transmission signal. The satellite-based navigation system receiver has a priori knowledge of all possible satellite PRN codes, and correlates the incoming signal with a local code copy generated on the satellite-based navigation system receiver to determine whether a given satellite is visible and determine the exact distance to the satellite. In addition, once a signal from a satellite is acquired, a tracking channel on the receiver is used to continuously and accurately track the signal from the satellite. One aspect of continuously tracking satellites on a tracking channel is to generate a PRN code for each satellite and correlate the received signal with the PRN code.

[0040] As described herein, PRN code generation is an integral part of the acquisition and tracking of transmission signals from satellite-based navigation system satellites. Satellites within a satellite-based navigation system can generate a number of signals (also referred to as ranging codes) to support position determination. Such codes include the L1C code (or civil code) from GPS satellites and the B1C code from BDS satellites. The ranging code provides a sequence of bits (or PRN sequence) unique to a particular satellite that allows a receiver to identify a particular satellite and determine the distance to that satellite. Utilizing distance determination from multiple satellites enables a receiver to triangulate its position.

[0041] A common aspect of PRN code generation is the generation of Legendre sequence values. For example, both GPS and BDS compatible receivers need to generate two Legendre sequence values ​​during the generation of each bit (or chip) of the PRN code. The Legendre sequence can be defined such that if there exists an integer x such that index i in the sequence is equal to x 2 If the sequence is congruent modulo an odd prime (e.g., 10223), the value at index i in the sequence is 1, otherwise the value at index i in the sequence is 0. For example, in a GPS satellite-based navigation system, the following pseudocode can be used to determine the Legendre sequence (L(t)):

[0042] L(0) = 0;

[0043] L(t) = 1 if there exists an integer x such that t is equal to x. 2 Modulo 10223 congruence;

[0044] L(t) = 0 if there is no integer x such that t is equal to x.2 Modulo 10223 congruence;

[0045] Similarly, the Legendre sequence in a BDS satellite-based navigation system can be determined using the following pseudo code:

[0046] LEGENDRE_SEQ([1:10243])=0;

[0047] for t=1:(10243-1 / 2)

[0048] LEGENDRE_SEQ(1+mod((t*t),10243))=1;

[0049] end

[0050] Weil codes can be based on one or more Legendre sequences. For example, in GPS, Weil codes can be generated by inserting a fixed spreading sequence at a unique position within an intermediate code generated based on an exclusive-or of a Legendre sequence with a shifted copy of the Legendre sequence, where the shift is unique to a particular satellite. Similarly, Weil codes in a BDS satellite-based navigation system can be based on operations performed on two values ​​from a position in a generated Legendre sequence.

[0051] As described herein, the determination of Weil codes, and in particular the determination of values ​​within a Legendre sequence that includes a Weil code, can be time and computationally intensive. Furthermore, as the demand for more accurate, higher performance receivers increases, the number of tracking channels continues to increase. For example, some GNSS receivers have implemented more than 96 tracking channels. Furthermore, as the number of tracking channels increases and the number of satellite-based navigation systems and the number of satellites supported by each satellite-based navigation system increases, the need to quickly generate Legendre sequences that support unique PRN codes also increases.

[0052] To handle the computational complexity associated with the generation of PRN codes, some examples have pre-generated one or more Legendre sequences and stored them in a read-only memory (ROM) associated with each tracking channel. For satellite-based navigation systems that require multiple Legendre sequences when generating PRN codes, multiple ROMs have been created and populated for each tracking channel, each storing a Legendre sequence. On a high-performance receiver (e.g., a receiver supporting 96 or more tracking channels), such an example may require up to 192 read-only memories. The silicon area and power consumption of a GNSS receiver required to support the associated ROMs may be limited.

[0053] Various example embodiments described herein utilize various techniques for sharing a read-only memory (ROM) between various tracking channels of a satellite-based navigation system receiver when generating PRN codes. For example, in some embodiments, a single ROM may include one or more Legendre sequences to support the generation of PRN codes by enabling simultaneous access to a first code value at a first position in a Legendre sequence and a second code value at a second position in the code sequence, wherein the second position is shifted from the first position by a fixed position. Additionally, in some embodiments, a single ROM may store Legendre sequences generated for more than one satellite-based navigation system. For example, a single ROM may store the Legendre sequences necessary to generate PRN codes for a GPS satellite-based navigation system, and the single ROM may also store the Legendre sequences necessary to generate PRN codes for a BDS satellite-based navigation system.

[0054] Furthermore, given a shared ROM architecture, in some embodiments, the architecture of a satellite-based navigation receiver can be parameterized and the architecture can be determined at build time. For example, a satellite-based navigation system receiver can determine an optimal architecture that balances latency, accuracy, and power consumption during system architecture build. To illustrate parameterization, for correct operation, each tracking channel of a satellite-based navigation system receiver needs to access a ROM every 1 / F0 clock cycle, where F0 is the frequency of satellite-based navigation system signal transmission. The parameterized architecture can be determined in at least one of the following two ways: (1) fixing the clock frequency and determining the number of ROMs required to meet the timing requirements of the clock frequency; (2) fixing the number of ROMs and determining the clock frequency required to utilize the available number of ROMs. Parameterizing the build of a satellite-based navigation system receiver enables the balance between various factors (e.g., power consumption, silicon area, latency, etc.) to be determined when building a satellite-based navigation system receiver.

[0055] As a result of the example embodiments described herein and in some examples, the silicon area required to support multiple satellite-based navigation systems and multiple tracking channels can be greatly reduced. In addition, the power consumption required to generate PRN codes for multiple tracking channels supporting multiple navigation systems can also be reduced.

[0056] Reference now Figure 1 , an example satellite-based navigation system 100 is provided. Figure 1 As shown, satellite-based navigation system 100 includes a plurality of satellites 104a-104n in a space environment 106. Each satellite 104a-104n is configured to communicate with a receiver 102 on Earth 108 via a communication link 103a-103n.

[0057] like Figure 1As shown, the receiver 102 can communicate with one or more satellite-based navigation systems 100. The satellite-based navigation system 100 can be any satellite constellation that provides signals from the space environment 106 so that the receiver 102 on the earth 108 can determine the position of the receiver 102. The satellite-based navigation system 100 may include one or more global navigation satellite systems (GNSS). For example, the satellite-based navigation system 100 may include a global positioning system (GPS), GLONASS (a Russian satellite navigation system), a Galileo system, a BeiDou satellite navigation system (BDS), or other navigation systems. For example, the satellite-based navigation system 100 may include a GPS with up to 32 medium earth orbit satellites (e.g., satellites 104a-104n) in various orbital planes. As another example, the satellite-based navigation system 100 may include a BDS with 24 satellites in medium earth orbit and additional satellites in geostationary orbit. In some embodiments, the satellite-based navigation system 100 may include satellites 104a-104n from a plurality of GNSSs, for example, the receiver 102 may be configured to communicate with the satellites 104a-104n in the GPS and the satellites in the BDS.

[0058] like Figure 1 As further shown, the example satellite-based navigation system 100 includes a plurality of satellites 104a-104n located in a space environment 106. The satellites 104a-104n may be any device, apparatus, or system of apparatuses located in the space environment 106 and configured to transmit one or more signals to the earth 108 so that the receiver 102 can determine a physical location. Each satellite 104a-104n in the satellite-based navigation system 100 may be positioned to provide communication with at least a portion of the earth 108. For example, the GPS system may be composed of up to 32 satellites 104a-104n in a medium earth orbit. Each satellite in the GPS system orbits the earth 108 twice a day in one of the six equally spaced orbital planes around the earth 108 to provide continuous global coverage. This arrangement ensures that the receiver 102 can receive signals from at least four satellites 104a-104n at any point in time from almost any point on the earth 108. In a BDS system, in addition to satellites 104a-104n orbiting the earth 108 in medium earth orbit, additional satellites 104a-104n may orbit the earth 108 in geostationary orbits and inclined geosynchronous orbits to provide additional accuracy in position determination.

[0059] Each satellite 104a-104n can transmit one or more signals at a designated frequency or frequency band through a communication channel (e.g., communication links 103a-103n). For example, GPS satellites 104a-104n can transmit various signals on the L1 band (1575.42 MHz, bandwidth of 15.345 MHz), L2 band (1227.6 MHz, bandwidth of 11 MHz), and L5 band (1176.45 MHz, bandwidth of 12.5 MHz). Similarly, BDS satellites 104a-104n can transmit various signals on the B1 band (1575.42 MHz, bandwidth of 32.736 MHz), B2 band (1176.45 MHz, bandwidth of 20.46 MHz), and B3 band (1268.52 MHz, bandwidth of 20.46 MHz). Receiver 102 on Earth 108 may be configured to receive and decode the signal in each of the transmitted frequency bands to determine the transmitted ranging code and data.

[0060] The signal transmitted by each satellite 104a-104n on each communication link 103a-103n can enable the receiver 102 on the earth 108 to determine the distance from the transmitting satellite 104a-104n. For example, the satellite 104a-104n can transmit one or more signals indicating the position and status of the satellite 104a-104n and the precise time from the onboard atomic clock. In some embodiments, multiple satellites 104a-104n can transmit ranging codes and data on a single channel or frequency band. In such an embodiment, the satellite-based navigation system 100 can use code division multiple access (CDMA) to coordinate transmissions on the frequency band. Each satellite 104a-104n in the satellite-based navigation system 100 can be assigned a pseudo-random noise code (PRN code), which uniquely identifies the ranging code used by a specific satellite 104a-104n. The receiver 102 can identify the satellite 104a-104n based on the transmitted PRN code.

[0061] like Figure 1 As further shown, the satellite-based navigation system 100 can communicate with a receiver 102 (e.g., a satellite-based navigation system receiver). The receiver 102 can be any system, device, or apparatus configured to receive transmissions from one or more satellites 104a-104n of one or more satellite-based navigation systems 100 and determine a position based on the received transmissions. The receiver 102 can be configured to receive navigation data necessary to determine the precise position of the transmitting satellites 104a-104n, and further, the receiver 102 can be configured to receive ranging codes to uniquely identify the transmitting satellites 104a-104n and determine the distance to the transmitting satellites 104a-104n (based on a time offset).

[0062] Reference now Figure 2 , an example satellite-based navigation system receiver 102 is provided. Figure 2 As shown, the example satellite-based navigation system receiver 102 includes a frequency Doppler wipe module configured to receive in-phase and quadrature components of a transmission signal 226 on a communication link (e.g., communication links 103a-103n). The frequency Doppler wipe module also receives in-phase and quadrature components of the signal from a digitally controlled oscillator and is configured to output a combined signal 228 based on the in-phase and quadrature components of the received transmission signal 226. The combined signal 228 is received by a plurality of IQ correlators.

[0063] like Figure 2 As further shown, the satellite-based navigation system receiver 102 also includes a PRN code generator module 222 configured to receive the output of the PRN code numerically controlled oscillator and generate a PRN code 224. The PRN code 224 is altered by the GNSS PRN delay sequence generator to produce a delayed, advanced, and / or unaltered copy of the PRN code 224. The delayed, advanced, or unaltered copy of the PRN code 224 is transmitted to each IQ correlator by the delay sequence generator 229 and compared with the combined signal 228 to determine the correlation. The delayed, advanced, and / or unaltered copy of the PRN code with the highest correlation is used as an indicator of the offset of the received transmission signal 226.

[0064] like Figure 2 As shown, the example satellite-based navigation system receiver 102 receives a transmission signal 226. The transmission signal 226 can be any signal transmitted by a satellite-based navigation system satellite (e.g., satellites 104a-104n). For example, GPS satellites typically transmit multiple signals on the L1 band, the L2 band, and the L5 band. These signals include coarse / acquisition codes (C / A codes), precise codes (P codes), navigation messages, L2C codes, L1C codes, and other similar signals. Similarly, BDS satellites typically transmit multiple signals on the B1 band, the B2 band, and the B3 band. These signals may include B1C signals, B1I signals, B2a signals, and B3I signals. In some embodiments, the transmission signal 226 may include a PRN code or a ranging code transmitted simultaneously to uniquely identify the satellite (e.g., satellites 104a-104n) transmitting the transmission signal 226.

[0065] like Figure 2 As shown, the example satellite-based navigation system receiver 102 includes a PRN code generator module 222 configured to output a PRN code 224. The PRN code generator module 222 may be any device, module, or apparatus configured to output a PRN code 224. Figure 22 is described as generating a single PRN code 224, but as described herein, the PRN code generator module 222 may be configured to generate one or more PRN codes 224 for multiple tracking channels. Additionally, the PRN code generator module 222 may be configured to generate PRN codes 224 for one or more satellite-based navigation systems (e.g., GPS, BDS, GLONASS, Galileo, etc.).

[0066] like Figure 2 As further shown, the PRN code 224 can be used to determine the correlation with the ranging code of the transmission signal 226. The PRN code 224 can be any digital sequence used to uniquely identify the transmitting satellite. In some embodiments, the PRN code 224 can be generated so that the resulting signal looks like noise. In this way, interference with other transmission signals can be minimized. In addition, the PRN code 224 can be generated so that the PRN code 224 exhibits good autocorrelation with other signals that also contain the PRN code 224. In this way, the correlation with the transmission signal 226 can be quickly and accurately determined.

[0067] In some embodiments, the PRN code 224 may include one or more mathematical bit sequences, such as a Legendre sequence. For example, in some embodiments, a GPS satellite may support the transmission of an L1C signal. The L1C signal may be transmitted by a GPS satellite to achieve interoperability between GPS and other international satellite-based navigation systems. For example, interoperability between a GPS system and a BDS system. Like other transmission signals 226, the L1C signal may include a ranging code. As defined, the L1C ranging code consists of a Weil code. The Weil code of the L1C signal is a sequence of length 10223 constructed via shifting and adding a Legendre sequence (e.g., a code sequence) and one of its shifts. In addition, a fixed 7-bit (chip) extension sequence is inserted at a unique position based on the satellite in the Weil code to create a 10230 chip code. As described herein, the generation of the Weil code includes using two Legendre sequence values, a first index, and a fixed shift relative to the first index. The Legendre sequence is based on which integers are square modulo the prime length of the sequence. The determination of the Legendre sequence can be computationally and time intensive. Furthermore, storing the Legendre sequence for each tracking channel may require a large amount of storage space.Therefore, there is a need to quickly and efficiently generate PRN codes for tracking channels on a satellite-based navigation system receiver 102.

[0068] Similarly, a B1C signal may be transmitted by a BDS satellite to enhance position determination. Like the other transmission signals 226, the B1C signal includes a ranging code. As defined, the B1C ranging code utilizes a separately defined Legendre sequence of length 10243 and a shift of the Legendre sequence to determine the B1C Weil code. As described herein, due to the complexity of determining the Legendre sequence, there is a need to quickly and efficiently generate PRN codes based on the Legendre sequence, particularly on a satellite-based navigation system receiver 102 that supports multiple tracking channels and multiple satellite-based navigation systems 100.

[0069] Reference now Figure 3 , an example PRN code generator module 322 is provided. Figure 3 As shown, the example PRN code generator module 322 includes a memory interface circuit device 332 that is electrically connected to a read-only memory 334 (ROM) and is configured to manage requests for a plurality of electrically connected trace channels 330a-330n. Figure 3 As further shown, each trace channel 330a-330n is configured to generate two addresses and receive corresponding data values ​​for each address.

[0070] like Figure 3As shown, the PRN code generator module 322 includes a read-only memory 334. The read-only memory 334 can be any data storage device that communicates with one or more tracking channels (e.g., tracking channels 330a-330n) and is configured to return data components required to generate one or more PRN codes. In some embodiments, the read-only memory 334 is non-transitory and can include, for example, one or more volatile and / or non-volatile memories. In other words, for example, the read-only memory 334 in some embodiments includes or embodies an electronic storage device (e.g., a computer-readable storage medium). In some embodiments, the read-only memory 334 is configured to store information, data, content, applications, instructions, etc. In some embodiments, the read-only memory 334 may include a lookup table (LUT). The LUT can be any data structure or memory device implemented in software, firmware, hardware, and / or any combination thereof that enables direct addressing of a memory location or a stored data value via a provided index. For example, in some embodiments, the Legendre sequence can be calculated during startup or initialization and stored in the read-only memory 334, where the memory address in the LUT corresponds to the index within the Legendre sequence. For example, the value of the Legendre sequence associated with index 1 may be stored at memory location 1, the value of the Legendre sequence associated with index 2 may be stored at memory location 2, and so on to, for example, the value of the Legendre sequence associated with index 10223 (or 10243). By determining the Legendre sequence during startup or configuration and storing the associated values ​​in a lookup table prior to operation, the Legendre sequence value (e.g., first code value) at a particular index (e.g., first location) and a shift of the Legendre sequence value (e.g., second code value) at a second index (e.g., second location) may be accessed via direct addressing, thereby speeding up the determination of the PRN code value.

[0071] like Figure 3As further shown, the example PRN code generator module includes multiple tracking channels 330a-330n. Tracking channels 330a-330n can be any hardware, software, firmware and / or combination thereof configured to acquire transmission signals, demodulate any data contained on the transmission signals, and track transmission satellites and associated transmission signals. A satellite-based navigation system receiver may include 1 tracking channel 330a-330n, 6 tracking channels 330a-330n, 12 tracking channels 330a-330n, 96 tracking channels 330a-330n or more tracking channels. More tracking channels enable a satellite-based navigation system receiver to acquire signals from one or more transmission satellites faster. For example, the acquisition process including looping through various possible PRN codes and offsets can be parallelized based on the number of available tracking channels 330a-330n. Additionally, during operation, a portion of tracking channels 330a-330n may be dedicated to tracking already acquired signals while another portion of tracking channels 330a-330n is dedicated to acquiring new transmissions from new satellites or from additional satellite-based navigation systems.

[0072] In some embodiments, tracking channels 330a-330n may be configured to acquire and track transmissions from one or more satellite-based navigation systems (e.g., GPS and BDS). Thus, tracking channels 330a-330n may generate a PRN code (e.g., PRN code 224) for each possible satellite in each satellite-based navigation system and attempt to correlate the PRN code with the transmission, as described in detail in the accompanying drawings. Figure 2 As described herein, both the L1C and B1C signals contain a Weil code that includes two values ​​from the Legendre sequence for each bit of the PRN code. Therefore, in order to attempt to correlate with the transmitted signal, the PRN code generator module 322 may generate or access pairs of Legendre sequence values ​​for each bit of the PRN code. Due to the number of tracking channels and possible transmitting satellites, the computational time to generate the PRN code may be prohibitive. In addition, creating a LUT for each tracking channel 330a-330n may require excessive silicon area. Therefore, as Figure 3 As shown, sharing the read-only memory 334 between the multiple trace channels 330a-330n can reduce the silicon area required to support the multiple trace channels 330a-330n and reduce the time to access sequence values ​​to support PRN code generation.

[0073] like Figure 3As further shown, the example PRN code generator module 322 may include a memory interface circuit device 332. The memory interface circuit device 332 may be any hardware, firmware, software, or combination thereof configured to arbitrate requests for and service requests for one or more trace channels 330a-330n and associated read-only memory 334 or multiple read-only memories 334. In some embodiments, the memory interface circuit device 332 may receive one or more address requests from the multiple trace channels 330a-330n. In such an embodiment, the memory interface circuit device 332 may be configured to service the request when the read-only memory 334 becomes available. In some embodiments, the memory interface circuit device 332 may provide data for a new address at each clock cycle.

[0074] Reference now Figure 4 , provides an example architecture of the read-only memory 334. Figure 4 As shown, the length (e.g., the number of directly addressable memory locations) of the example read-only memory 334 is sufficient to store complete code sequences, such as complete Legendre sequences for each supported satellite-based navigation system (e.g., L1C Legendre sequence 440, B1C Legendre sequence 442). Figure 4 As further shown, the data width at each memory location in the example read-only memory 334 is wide enough to store bits (chips) for each supported satellite-based navigation system type. Figure 4 As shown, the example read-only memory 334 includes a directly address accessible L1C Legendre sequence 440 and a B1C Legendre sequence 442 .

[0075] like Figure 4 As shown, one or more tracking channels utilizing the read-only memory 334 may be configured to support acquisition and tracking of L1C signals (such as L1C signals transmitted by GPS satellites) and B1C signals (such as B1C signals transmitted by BDS satellites). As defined, the L1C PRN code requires a Legendre sequence of 10223 chips, and the B1C PRN code requires a Legendre sequence of 10243 chips. Therefore, the read-only memory 334 may be configured to support a minimum of 10243 access addresses in order to support storage of a complete Legendre sequence for the B1C PRN code. Figure 4As further shown, the data width of the read-only memory 334 is wide enough to support at least one chip for each supported satellite-based navigation system. Thus, the described read-only memory 334 is at least 2 bits wide, one bit for the Legendre sequence required for the L1C PRN code and one bit for the Legendre sequence for the B1C PRN code. Thus, in an example supporting a GPS satellite-based navigation system and a BDS satellite-based navigation system, a tracking channel may require a read-only memory 334 having a minimum size of 10243 by 2 chips.

[0076] In another example, in an instance where the satellite-based navigation system receiver is configured to support only GPS satellite-based navigation systems, the size of the Legendre code sequence required to generate the L1C PRN code is only 10223, and therefore, the read-only memory 334 may be configured to have a minimum length of 10223 chips. In an instance where only GPS satellite-based navigation systems are supported, the tracking channel may only require 10223 times 1 chip of the read-only memory 334.

[0077] Reference now Figure 5 , an example PRN code generator module 500 utilizing a plurality of read-only memories 534a-534n is provided. Figure 5 As shown, a plurality of tracking channels 530a-530n are configured to support the generation of L1C PRN codes or B1C PRN codes depending on the type of navigation system based on the currently selected satellite. Each tracking channel is electrically connected to a memory interface circuit device 532 and is configured to request multiple addresses and receive multiple data values ​​based on the requested data addresses. The memory interface circuit device 532 is also electrically connected to a memory interface circuit device having a plurality of data addresses. Figure 4 The described architecture is similar to the architecture of the plurality of read-only memories 534a-534n. Figure 5 As further shown, the memory interface circuit device 532 includes a rearrangement module 550 configured to receive requests from each of the trace channels 530a-530n, and a plurality of ROM managers 552a-552n, each of which is configured to interface with one of the read-only memories 534a-n.

[0078] like Figure 5 As shown, the example PRN code generator module 500 includes a plurality of tracking channels 530a-530n. Figure 5 Each of the example tracking channels 530a-530n supports the generation of L1C PRN codes and B1C PRN codes for transmission to a delay sequence generator (eg, Figure 2The delay sequence generator 229 of the satellite-based navigation system is transmitted to a plurality of correlators to be correlated with a transmission signal (eg, transmission signal 226) received from a satellite of the satellite-based navigation system. Figure 5 As shown, the request address can be transmitted to the rearrangement module 550 based on the type of satellite-based navigation system (e.g., GPS, BDS) and the current index of the generated PRN code chip. In some embodiments, two addresses can be provided to the rearrangement module 550, corresponding to the two Legendre sequences required to calculate the PRN code. For example, an address associated with a first index (e.g., a first position) and an address associated with an offset of the first index (e.g., a second position) can be requested, such as to determine an L1C PRN code. Similarly, a first address associated with a first index (bd1) in a BDS Legendre sequence and a second address associated with a second index (bd2) in a BDS Legendre sequence can be requested, such as to determine a B1C PRN code.

[0079] like Figure 5 As further shown, the example PRN code generator module 500 includes a rearrangement module 550. The rearrangement module 550 can be any hardware, firmware, software, or combination thereof configured to receive one or more address requests from a plurality of tracking channels 530a-530n and route data requests specified by the one or more address requests to one or more electrically connected ROM managers 552a-552n. In addition, the rearrangement module 550 can also be configured to route the return of data received from the read-only memory 534a-534n to the request tracking channel 530a. Once the read request is serviced by the associated ROM manager 552, the rearrangement module 550 can route the read data to the request tracking channel 530a-530n.

[0080] like Figure 5 As further shown, the example PRN code generator module 500 includes a plurality of ROM managers 552a-552n, each ROM manager 552a-552n being associated with a read-only memory 534a-534n. The ROM managers 552a-552n can be configured to service requests issued by one or more trace channels 530a-530n and routed by the rearrangement module 550 by reading the associated read-only memory 534a-534n at the appropriate address and returning the associated data. Figure 4 As described, data associated with a given address may be correlated with a code sequence value (e.g., Legendre code value) at a given index. In some embodiments, the ROM managers 552a-552n may also indicate to the rearrangement module 550 the availability and / or next availability of the associated read-only memories 534a-534n.

[0081] As further described herein, the PRN code generator module 500 may need to meet specified timing constraints in order to support multiple tracking channels. For example, each tracking channel 530a-530n may generate chips of a PRN code at a code rate F0 to match the band frequency (F0) of an associated transmission band (e.g., L1 band). In the GPS system, the L1C signal is transmitted at a frequency of 1.023 MHz on the L1 band. Similarly, in the BDS system, the B1C signal is also transmitted at a frequency of 1.023 MHz on the B1 band. Therefore, each tracking channel 530a-530n may generate bits of an associated PRN code at a rate of 1 / 1.023 MHz, or approximately every 1 microsecond. In order to Each tracking channel 530a-530n can access the read-only memory 534a-534n and generate bits of the associated PRN code at a rate of 1 second. The desired value of a code sequence (eg, Legendre code sequence) is received at a rate of seconds.

[0082] The architecture of the PRN code generator module 500 may be determined and parameterized at construction time of the PRN code generator module 500 using known required access rates based on a particular satellite-based navigation system and the satellite-based navigation system supported by a particular set of tracking channels 530a-530n.

[0083] As an example, assume that one clock cycle is required to access data at a particular address in a read-only memory (e.g., read-only memory 534a-534n). The number of data accesses that can be performed in DA ) depends on the clock speed (F) of the PRN code generator module (eg, the PRN code generator module 500). CLK ), so that In addition, each tracking channel (e.g., tracking channels 530a-530n) may need to access the read-only memory twice per navigation system cycle because the PRN code requires two Legendre sequence values ​​for each PRN code value. TRK )The number of read-only memories required (N ROM ) and the given clock speed (F CLK ) can be determined by the following equation:

[0084]

[0085] For example, on a PRN code generator module running at a clock speed of 64 times the band frequency (F0) speed, the number of read-only memories required to support 64 trace channels can be determined by the following equation:

[0086]

[0087] Thus, in instances where the PRN code generator clock frequency is fixed and the desired number of tracking channels is determined, the number of ROMs can be determined so that the generation of the PRN code generator can be parameterized and configured for that number of ROMs at build time.

[0088] Similarly, in instances where the number of ROMs is fixed, for example, where silicon area is limited and the number of desired trace channels is determined, the required clock frequency may be determined by:

[0089]

[0090] The parameterized PRN code generator module described in this article represents a significant silicon area savings. For example, previous solutions require ROMs to store each Legendre sequence value for each tracking channel. Therefore, to support 64 tracking channels, two ROMs are required for each tracking channel, and the PRN code generator module requires 128 ROMs. By sharing the read-only memories across the tracking channels, according to the calculations above, when the clock frequency of the PRN code generator module is at least 64 times the code rate (F0), only 2 read-only memories are required to support 64 tracking channels.

[0091] Now refer to Figure 6 , an example parameterized PRN code generator module 600 supporting 96 tracking channels 630-1-96 is provided. Figure 6 As shown, the example parameterized PRN code generator module 600 is configured to generate a clock at 64 times the band frequency (F CLK =64*F o )operate. Figure 6 The example parameterized PRN code generator module 600 includes 96 tracking channels 630-1-96, which are configured to support the generation of PRN codes (e.g., PRN code 224) for both L1C signals and B1C signals depending on the navigation system based on the currently selected satellite. Each tracking channel 630-1-96 is electrically connected to a rearrangement module 650 and is configured to transmit two address requests corresponding to two code sequence (e.g., Legendre sequence) indices required to generate code chips of the PRN code and receive corresponding code values ​​associated with the requested indices. The rearrangement module 650 is configured to receive requests from the 96 tracking channels 630-1-96 and distribute the requests among three electrically connected ROM managers 652a-652c. The ROM managers 652a-652c are each also electrically connected to a read-only memory 634a-634c, which is configured to store the code sequences required to generate the PRN code. As shown in FIG. Figure 6 As further shown, the rearrangement module 650 and the ROM managers 652 a - 652 c may include a memory interface circuit device 632 .

[0092] like Figure 6 As shown, the example parameterized PRN code generator module 600 includes 96 tracking channels 630-1-96 and three read-only memories 634a-634c. As described herein, the parameterized PRN code generator module 600 can ensure that the operating clock frequency (F) based on running at a 64-fold band frequency is met. CLK =64*F o ) timing. For example, when the operating clock (F CLK ) operates at 64 times the band frequency (F0), the number of ROMs required to ensure timing for 96 tracking channels can be determined by the following formula:

[0093]

[0094] While the parameterized PRN code generator module 600 parameterized according to the description provided herein requires only 3 ROMs, other examples may require as many as 192 ROMs. Thus, the silicon area savings achieved by the parameterized PRN code generator module 600 may be significant.

[0095] Reference now Figure 7 , a process 700 for determining a PRN code on a satellite-based navigation system receiver is provided. At block 702, a satellite-based navigation system receiver (e.g., satellite-based navigation system receiver 102) may request a first code value at a first memory location from a read-only memory (e.g., read-only memory 334, 534a-534n, 634a-634c) configured to store a code sequence (e.g., a Legendre sequence), wherein the first memory location corresponds to a first index in the code sequence. As described herein, a satellite-based navigation system receiver may include one or more read-only memories configured to each store one or more code sequences. For example, as described for Figure 4 As depicted, the example read-only memory 334 includes an L1C Legendre sequence 440 to support generation of a PRN code to be correlated with an L1C GPS signal, and includes a B1C Legendre sequence 442 to support generation of a PRN code to be correlated with a B1C BDS signal. As described herein, the read-only memory may be a directly accessible memory, such as a LUT, where a code value may be retrieved by a tracking channel by supplying an address associated with a desired index in the code sequence.

[0096] At block 704, the satellite-based navigation system receiver may request from the read-only memory a second code value at a second memory location, wherein the second memory location corresponds to a second index in the code sequence. To generate a PRN code for both the L1C GPS signal and the B1C BDS signal, two code sequence (e.g., Legendre sequence) values ​​are required. For example, the L1C Weil code requires a first Legendre sequence value at a first index (t) and a second Legendre sequence value at a second index (t+w). Similarly, the B1C Weil code requires a first Legendre sequence value at a first index (bd1) and a second Legendre sequence value at a second index (bd2). In some embodiments, such as in Figure 5-Figure 6 As described in , two code sequence values ​​may be requested simultaneously via two address line requests to a memory interface circuit device (eg, memory interface circuit device 332, 532, 632).

[0097] At block 706, the satellite-based navigation system receiver may generate a first pseudo-random code (e.g., PRN code 224) based at least in part on the first code value and the second code value; wherein the plurality of tracking channels are configured to generate the pseudo-random code based at least in part on the plurality of code values ​​stored in the read-only memory. As described herein, the satellite-based navigation system receiver may be configured such that the plurality of tracking channels are configured to share a single read-only memory. In some embodiments, (e.g., Figure 5-Figure 6 (described in ) multiple tracking channels can be configured to share multiple read-only memories, where the multiple read-only memories are smaller than the multiple tracking channels. In some embodiments, one or more PRN codes can be based on two code values ​​received from the read-only memory. In some embodiments, one or more of the multiple tracking channels can be configured to generate PRN codes for multiple satellite-based navigation systems (e.g., GPS and BDS). In such an instance, the read-only memory can include multiple code sequences, each code sequence associated with a different satellite-based navigation system. In some embodiments, the tracking channels can be configured to switch between satellite-based navigation systems, and can request associated code values ​​based on the selected satellite-based navigation system.

[0098] Reference now Figure 8 , timing diagram 800 depicts a navigation system cycle 802 at a frequency band frequency (F0) A response of a read-only memory (eg, read-only memory 334, 534a-534n, 634a-634c) to a request for a plurality of code values ​​at a specified index is provided.

[0099] The navigation system period 802 may be correlated to the duration of one clock cycle according to the frequency (F0) of the navigation system frequency band. For example, if the satellite-based navigation system receiver is configured to receive L1C signals on the L1 band of GPS, the navigation band frequency may be at or near 1.023 MHz, and the navigation system period may be Or about 1 microsecond.

[0100] As described herein, the number of data accesses (N) that may be performed in the navigation system cycle 802 DA ) depends on the clock speed (F) of the PRN code generator module (e.g., the PRN code generator module 500, 600) CLK (804)), so that For example, if the frequency of the operating clock (F CLK (804)) is 64 times the band frequency (F0), then N DA is 64 and 64 data accesses can be made from the ROM during one navigation system cycle 802 of the frequency band. Figure 8 As shown, N DA The requests are based on the N PRN codes during a single navigation system cycle 802. DA N DA Each of the requests asserts an address associated with a code sequence value required by a trace channel (e.g., trace channels 330a-330n, 530a-530n, 630-1-96) to generate a chip of a PRN code. As depicted by signals ADDR_ROM and DATA_ROM of timing diagram 800, the read-only memory services one address per clock cycle, providing data associated with the requested index. Figure 8 As shown, N may be serviced during navigation system cycle 802. DA Tracking channel requests.

[0101] Reference now Fig. 9 , a timing diagram 900 is provided to describe the generation of an L1C code based on data received from a read-only memory (eg, read-only memory 334, 534a-534n, 634a-634c). Fig. 9 As shown, during a first navigation system cycle 802, a set of requested data values ​​(DATA1(x), DATA2(x)) may be received by a tracking channel (e.g., tracking channels 330a-330n, 530a-530n, 630-1-96). During a second navigation system cycle 802, the tracking channel may buffer the data values ​​and calculate the chips of a PRN code (e.g., PRN code 224) using the buffered data values. Fig. 9As shown, a new chip of the PRN code is generated based on the updated address request and the received data in each navigation system cycle 802. A complete PRN code may be generated in a PRN generation cycle 902.

[0102] Reference now Fig.10 , an example portable navigation device 1000 is provided. Fig.10 As shown, the example portable navigation device 1000 includes a satellite-based navigation system receiver 1002 electrically connected to an antenna 1010. The satellite-based navigation system receiver 1002 can determine a location based on signals received at the antenna 1010 and transmit the location to a host processor 1006. The host processor 1006 can receive the location and prepare to display the location on a display screen 1008.

[0103] like Fig.10 Other components of the example portable navigation device 1000 shown may include a power management module; a USB connector, a lithium-ion battery, and / or a car adapter; memory components such as SRAM and NAND flash memory; audio components such as an audio codec and an audio amplifier; and display control components such as a touch screen controller.

[0104] like Fig.10 As shown, the example portable navigation device 1000 includes an antenna 1010. The antenna 1010 can be any device designed to receive radio signals transmitted according to a satellite-based navigation system (e.g., GPS, BDS, GLONASS, Galileo, etc.). The antenna 1010 can also be configured to convert the received radio signals into electronic signals to be utilized by the satellite-based navigation system receiver 1002. As described herein, the antenna 1010 can be configured to receive electronic signals on multiple different frequency bands (e.g., L1 band, L2 band, L5 band) and across multiple different satellite-based navigation system types (e.g., GPS, BDS, etc.). As described herein, the radio signals received and converted into electronic signals can be transmitted to the satellite-based navigation system receiver 1002 and correlated with one or more ranging codes / PRN codes.

[0105] Although this detailed description has described some embodiments of the invention, the appended claims cover other embodiments of the invention that are different from the described embodiments according to various modifications and improvements. For example, those skilled in the art will recognize that such principles can be applied to any electronic device that utilizes multiple code sequences (e.g., Legendre sequences) to generate PRN codes for correlating with satellite-based navigation system signals. For example, portable navigation devices, mobile phones, smart phones, tracking devices, watches, cars, or any other device that needs to obtain real-time location through a satellite-based navigation system.

[0106] In the following claims, unless the specific terms "means for" or "step for" are used in a given claim, it is not intended that the claim be interpreted under 35 USC 112, paragraph 6.

[0107] The use of broader terms such as "comprising," "including," and "having" should be understood to provide support for narrower terms such as "consisting of," "consisting essentially of," and "consisting essentially of." The use of the terms "optionally," "may," "might," "probably," and the like with respect to any element of an embodiment means that the element is not required, or, alternatively, the element is required, both alternatives being within the scope of the embodiment. Furthermore, references to examples are provided for illustrative purposes only and are not intended to be exclusive.

Claims

1. A satellite-based navigation system receiver, comprising: Multiple tracking channels, wherein each tracking channel of the plurality of tracking channels is configured to generate a pseudo-random code based at least in part on a first code value from a first position in a code sequence and a second code value from a second position in the code sequence; a read-only memory configured to store the code sequence, Wherein a second plurality of the plurality of trace channels is configured to receive the first code value and the second code value from the read-only memory.

2. The satellite-based navigation system receiver of claim 1, wherein each of the plurality of tracking channels is configured to generate a pseudo-random code based on a plurality of satellite-based navigation systems.

3. The satellite-based navigation system receiver of claim 2, wherein each pseudorandom code of the plurality of satellite-based navigation systems is generated based at least in part on an associated code sequence.

4. The satellite-based navigation system receiver of claim 3, wherein each associated code sequence associated with the plurality of satellite-based navigation systems is stored in the read-only memory.

5. The satellite-based navigation system receiver of claim 2, wherein each of the plurality of tracking channels is configured to generate a pseudo-random code according to a navigation system based on a global positioning system (GPS) satellite and a navigation system based on a BeiDou satellite.

6. The satellite-based navigation system receiver of claim 1, wherein the pseudorandom code is transmitted as part of a ranging code.

7. The satellite-based navigation system receiver of claim 5, wherein the pseudo-random code transmitted according to the GPS satellite-based navigation system is transmitted as part of an L1C signal, and the pseudo-random code transmitted according to the BDS satellite-based navigation system is transmitted as part of a B1C signal.

8. The satellite-based navigation system receiver of claim 7, wherein the code sequence is a Legendre sequence.

9. The satellite-based navigation system receiver of claim 1 , further comprising: a plurality of read-only memories, wherein each of the plurality of read-only memories is configured to store the code sequence; as well as A clock having a clock frequency, wherein the clock is configured to synchronize one or more operations on the satellite-based navigation system receiver.

10. The satellite-based navigation system receiver of claim 9, Wherein a number of read-only memories in the plurality of read-only memories is determined based at least in part on the clock frequency of the clock.

11. The satellite-based navigation system receiver of claim 9, wherein the clock frequency is determined based at least in part on a number of read-only memories in the plurality of read-only memories.

12. A method for determining a pseudo-random noise (PRN) code on a satellite-based navigation system, the method comprising: requesting a first code value at a first memory location from a read-only memory configured to store a code sequence, wherein the first memory location corresponds to a first index in the code sequence; requesting a second code value at a second memory location from the read-only memory, wherein the second memory location corresponds to a second index in the code sequence; generating a first pseudorandom code based at least in part on the first code value and the second code value; The plurality of tracking channels are configured to generate a pseudo-random code based at least in part on a plurality of code values ​​stored in the read-only memory.

13. The method of claim 12, wherein each of the plurality of tracking channels is configured to generate a pseudorandom code based on a plurality of satellite-based navigation systems.

14. The method of claim 13, wherein each pseudorandom code of the plurality of satellite-based navigation systems is generated based at least in part on an associated code sequence.

15. The method of claim 14, wherein each associated code sequence associated with the plurality of satellite-based navigation systems is stored in the read-only memory. 16 . The method of claim 13 , wherein each of the plurality of tracking channels is configured to generate a pseudo-random code according to a navigation system based on a global positioning system (GPS) satellite and a navigation system based on a BeiDou satellite.

17. The method of claim 12, wherein the pseudorandom code is transmitted as part of a ranging code.

18. The method of claim 16, wherein the pseudo-random code transmitted according to the GPS satellite-based navigation system is transmitted as part of an L1C signal, and the pseudo-random code transmitted according to the BDS satellite-based navigation system is transmitted as part of a B1C signal.

19. The method of claim 18, wherein the code sequence is a Legendre sequence.

20. A portable navigation device comprising: an antenna configured to receive an acquisition signal from a remote satellite; as well as A satellite-based navigation system receiver, the satellite-based navigation system receiver being electrically connected to the antenna, the satellite-based navigation system receiver comprising: Multiple tracking channels, wherein each tracking channel of the plurality of tracking channels is configured to generate a pseudo-random code based at least in part on a first code value from a first position in a code sequence and a second code value from a second position in the code sequence; a read-only memory configured to store the code sequence, wherein a second plurality of the plurality of tracking channels is configured to receive the first code value and the second code value from the read-only memory; Wherein the portable navigation device is configured to determine a position based at least in part on a comparison of the pseudo-random code and the acquisition signal.