EP4689728A1 - Locally maintaining global navigation satellite system (gnss) time based on cellular radio signals - Google Patents
Locally maintaining global navigation satellite system (gnss) time based on cellular radio signalsInfo
- Publication number
- EP4689728A1 EP4689728A1 EP24738190.8A EP24738190A EP4689728A1 EP 4689728 A1 EP4689728 A1 EP 4689728A1 EP 24738190 A EP24738190 A EP 24738190A EP 4689728 A1 EP4689728 A1 EP 4689728A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- gnss
- processor
- time
- computing device
- mobile computing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/13—Receivers
- G01S19/24—Acquisition or tracking or demodulation of signals transmitted by the system
- G01S19/25—Acquisition or tracking or demodulation of signals transmitted by the system involving aiding data received from a cooperating element, e.g. assisted GPS
- G01S19/256—Acquisition or tracking or demodulation of signals transmitted by the system involving aiding data received from a cooperating element, e.g. assisted GPS relating to timing, e.g. time of week, code phase, timing offset
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/03—Cooperating elements; Interaction or communication between different cooperating elements or between cooperating elements and receivers
- G01S19/05—Cooperating elements; Interaction or communication between different cooperating elements or between cooperating elements and receivers providing aiding data
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/13—Receivers
- G01S19/23—Testing, monitoring, correcting or calibrating of receiver elements
- G01S19/235—Calibration of receiver components
Definitions
- Smartphones, wearable computing devices, vehicle navigation systems, and other types of devices often include a receiver configured to perform location determination using the Global Positioning System (GPS), and other GNSS (Global Navigation Satellites Systems).
- GPS Global Positioning System
- GNSS Global Navigation Satellites Systems
- GPS is a satellite- based navigation system that involves a network of satellites configured to transmit positioning signals (i.e., signals) to Earth while circling Earth in a precise orbit.
- Each satellite transmits signals that include information for receivers to use, such as an indication of the time that each signal was transmitted by the satellite and position information for the satellite.
- Each satellite may include a high precision clock that is synchronized to clocks of other satellites in the same constellation.
- Other GNSS constellations such as GLONASS, Galileo, BeiDou, QZSS, and IRNSS, operate similarly, and may also be used for location determination.
- a GNSS receiver in a mobile computing device may receive and use information within signals from multiple satellites to estimate a location of the mobile computing device. For example, the receiver may use trilateration to estimate the user’s location on the surface of Earth by timing signals obtained from at least four GNSS satellites. Upon receiving a signal from a satellite, the receiver may determine the time that the signal was received at the receiver and compare that time to the time that the signal was transmitted by the satellite as indicated within the signal. The receiver may then determine the distance to the satellite based on the determined time difference. By using signals from multiple satellites, the receiver may determine its location.
- aspects of this disclosure are directed to mobile computing devices that maintain GNSS clocks based on received cellular signals.
- a mobile computing device may acquire a first fix.
- the mobile computing device may process satellite signals received from satellites of a GNSS constellation.
- the satellite signals may be relatively weak (e.g., have a low signal to noise ratio (SNR)).
- SNR signal to noise ratio
- the mobile computing device may perform integration operations across windows of time. Wider windows of time may take longer for the mobile computing device to process and/or may require more processing power than narrower windows of time.
- the width of the windows of time may be a function of an accuracy of a time used relative to GNSS time. The more accurate the time used by the mobile computing device, the narrower windows of time may be used. As such, increases in time accuracy may desirably improve time to first fix (TTFF).
- TTFF time to first fix
- a mobile computing device may maintain a local clock.
- the mobile computing device may include a crystal and maintain the local based on vibrations of a crystal subject to an electrical signal. While accuracy of the local clock may be sufficient for most local operations, the accuracy of the local clock may be less than the accuracy of GNSS time (e.g., as the satellites may maintain GNSS time based on higher precision instruments, such as atomic clocks). As such, time maintained by the local clock may drift relative to GNSS time. This drift may yield inaccuracies that increase the width of windows used when acquiring a first fix using GNSS.
- Cellular base stations may maintain clocks that are synchronized to clocks of satellites in the GNSS constellation. The time maintained by these clocks may be referred to as GNSS time.
- Cellular base stations may transmit frames of cellular data at regular pre-determined intervals, synchronized to GNSS time. For instance, a cellular base station may transmit frames at 10 millisecond (ms) intervals that are synchronized to GNSS time.
- ms millisecond
- a mobile computing device may maintain, based on received cellular signals, a GNSS clock and utilize time from the GNSS clock to refine windows when acquiring a first fix. For instance, when actively tracking its position using GNSS, the mobile computing device may maintain the GNSS clock based on received satellite signals. However, when tracking is lost, the mobile computing device may maintain the GNSS clock based on the pre-determined spacing of cellular frames. For instance, where the pre-determined spacing of cellular frames is X ms and the mobile computing device has received 10 frames since tracking was lost, the mobile computing device may advance the GNSS clock by 10X ms.
- the mobile computing device may utilize a time from the updated GNSS clock when next attempting to acquire a first fix using GNSS. As the timing of the frames is synchronized to GNSS time, maintaining the GNSS clock in this way may enable the mobile computing device to use a higher accuracy clock (e.g., as compared to the local clock). In this way, aspects of this disclosure may desirably reduce a TTFF or improve acquisition sensitivity.
- a method includes responsive to receiving, by a cellular modem of a mobile computing device, a cellular radio frame of a plurality of cellular radio frames, outputting, by the cellular modem, a hardware pulse of a plurality of hardware pulses to a GNSS time processor of the mobile computing device; maintaining, by the GNSS time processor and based on the hardware pulse, a GNSS clock; and acquiring, by a GNSS processor and based on a current GNSS time of the GNSS clock, a first fix for the mobile computing device.
- a mobile computing device includes a cellular modem configured to output, responsive to receiving a cellular radio frame of a plurality of cellular radio frames, a hardware pulse of a plurality of hardware pulses to a GNSS time processor of the mobile computing device; the GNSS time processor configured to maintain, based on the hardware pulse, a GNSS clock; and a GNSS processor configured to acquire, based on a current GNSS time of the GNSS clock, a first fix for the mobile computing device.
- a computer-readable storage medium stores instructions that, when executed, cause one or more processors of a mobile computing device to: receive, from a cellular modem of the mobile computing device, a hardware pulse of a plurality of hardware pulses output by the cellular modem in response to receiving cellular radio frames; maintain, based on the hardware pulse, a GNSS clock; and acquire, based on a current GNSS time of the GNSS clock, a first fix for the mobile computing device
- FIG. 1 is a conceptual diagram illustrating an example system that includes a mobile computing device that maintains a GNSS clock, in accordance with one or more aspects of this disclosure.
- FIGS. 2A-2D are conceptual diagrams illustrating example mobile computing devices that maintain a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
- FIG. 3 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
- FIG. 4 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
- FIG. 5 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
- FIG. 6 is a flowchart illustrating example operations of an example mobile computing device in accordance with one or more aspects of the present disclosure.
- FIG. 1 is a conceptual diagram illustrating an example system that includes a mobile computing device that maintains a GNSS clock, in accordance with one or more aspects of this disclosure.
- system 100 may include GNSS constellation 102, cellular network 108, and mobile computing device 116.
- GNSS constellation 102 may include a plurality of GNSS satellites 104A-104N (collectively, “GNSS satellites 104”) that each transmit a respective GNSS signal of GNSS signals I06A-106N (collectively, “GNSS signals 106”).
- GNSS satellites 104 may be included in any GNSS constellation, such as GPS, GLONASS, Galileo, BeiDou, QZSS, and IRNSS.
- Wireless network 108 (“network 108”) may represent components configured to wirelessly exchange data with computing devices, such as mobile computing deGee 116.
- wireless network 108 may include one or more nodes 110A- 11 ON (collectively, “nodes 110”) of network 108.
- Nodes 110 may represent any type of radio network node or any network node. Examples of nodes 110 may include Node B, base station (BS), multi-standard radio (MSR) radio node (e.g., MSR BS), gNB, eNode B (eNB), network controller, radio network controller (RNC), base station controller (BSC), etc.
- Nodes 110 may each transmit/receive a respective cellular signal of cellular signals 112A- 112N (collectively, “cellular signals 112”).
- Wireless network 108 may be compliant with one or more standards, such as GSM, CDMA, and LTE.
- Nodes 110 may maintain clocks that are synchronized to clocks of GNSS satellites 104. For instance, nodes 110 may themselves have GNSS receivers that are nearly always in tracking mode (e.g., and therefore have accurate GNSS time). In operation, nodes 110 may transmit frames of cellular data at regular pre-determined intervals, synchronized to GNSS time. For instance, nodes 110 may transmit frames at 10 millisecond (ms), 20 ms, 30 ms, etc. intervals that are synchronized to GNSS time. The time between frame boundaries is well established by the cellular protocols, and thus known a-priori.
- ms millisecond
- Mobile computing device 116 may be a portable device that includes components that determine a position of mobile computing device (e.g., a latitude and a longitude). As shown in FIG. 1, mobile computing device 116 may include one or more system processors 118, cellular modem 120, GNSS processor 122, and storage device 124, which may include GNSS clock module 126 and location service 128. Examples of mobile computing device 116 include, but are not limited to, mobile phones, gaming devices, vehicles, tablets, cameras, laptops, wearable computing devices, e-book readers, etc.
- System processors 118 may implement functionality and/or execute instructions within mobile computing device 116. Examples of system processors 118 include, but are not limited to, one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In some examples, system processors 118 may be an application processor, and may be included in a system on a chip (SoC).
- SoC system on a chip
- Cellular modem 120 may communicate with a cellular network, such as wireless network 108.
- Cellular modem 120 may include one or more antennas, receivers, transmitters, and processors that exchange cellular signals 112 with nodes 110.
- Receivers of cellular modem 120 may receive cellular signals 112 from nodes 110
- processors of cellular modem 120 may process the received signals and output data to one or more components of mobile computing device 116, such as system processors 118.
- processors of cellular modem 120 may process the received cellular signals 112 to identify frames of cellular data, and output payloads of the frames of cellular data to system processors 118.
- Cellular modem 120 may be a separate component within mobile computing device 116 from system processors 118 (e.g., cellular modem 120 may be a separate chip from processors 118).
- GNSS processor 122 may be a processor of mobile computing device 116 that performs GNSS operations, such as acquisition and tracking.
- GNSS processor 122 may be a separate component within mobile computing device 116 from system processors 118 (e.g., GNSS processor 122 may be a separate chip from processors 118).
- GNSS processor 122 may be its own chip, or may be included in a baseband or modem chip.
- GNSS processor 122 may be a special purpose section of one of system processors 118 (e.g., separate from an application processor). As such, GNSS processor 122 may be considered to be a different processor than processors 118.
- Storage device 124 may include one or more computer-readable storage media.
- storage device 124 may be configured for long-term, as well as short-term storage of information, such as instructions, data, or other information used by mobile computing device 116.
- storage device 124 may include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard disks, optical discs, solid state discs, and/or the like.
- storage device 124 in place of, or in addition to the non-volatile storage elements, storage device 124 may include one or more so-called “temporary” memory devices, meaning that a primary purpose of these devices may not be long-term data storage.
- the devices may comprise volatile memory devices, meaning that the devices may not maintain stored contents when the devices are not receiving power.
- Location service 128 may, with explicit user permission, provide a location of mobile computing device 116 (e.g., a latitude, longitude, and/or elevation of mobile computing device 116) to one or more applications and/or other modules of mobile computing device 116.
- location service 128 may be a service executed by processors 118.
- Location sendee 128 may receive the location of mobile computing device 116 from one or more other components of mobile computing device 116, such as GNSS processor 122.
- GNSS processor 122 may initially perform an acquisition phase to determine a first fix of mobile computing deGee 116. To determine the first fix, GNSS processor 122 may determine a respective code phase, frequency, and time for a plurality of GNSS satellites 104. For instance, GNSS processor 122 may receive a stream of I/Q samples from a GNSS RF front end (e.g., one or more antennas and associated processing components), and process the stream of I/Q samples to determine the respective code phase, frequency, and time for each GNSS satellite of the plurality of GNSS satellites 104.
- a GNSS RF front end e.g., one or more antennas and associated processing components
- GNSS processor 122 may search for the code phases, frequencies, and times by searching a correlation peak across a search window (e.g., potential PRN codes). GNSS processor 122 may utilize different times to perform the correlations. Longer times may provide higher noise suppression, but also increase the TTFF. GNSS processor 122 may determine that a particular GNSS satellite of GNSS satellites 104 is acquired/detected if a highest correlation peak is greater than a threshold.
- a search window e.g., potential PRN codes
- GNSS processor 122 may determine the first fix for mobile computing device 116. For instance, GNSS processor 122 may utilize the determined code phases, frequencies, and times for the plurality of GNSS satellites 104 to decode navigation messages (e.g., navbits) encoded in GNSS signals 106, and determine the first fix based on the decoded navigation messages.
- navigation messages e.g., navbits
- GNSS processor 122 may enter a tracking mode in which GNSS processor 122 tracks/monitors the position of mobile computing device 116. As part of operating in the tracking mode, GNSS processor 122 may generate a time that is synchronized to clocks in GNSS satellites 104 (e.g., GNSS time). The tracking mode may be substantially simpler and/or less complex than the acquisition mode. [0030] As discussed above, when acquiring the first fix, GNSS processor 122 may utilize a time to process GNSS signals 106. For instance, GNSS processor 122 may utilize a time to select a search window in which to integrate GNSS signals 106.
- Wider windows of time may take longer for GNSS processor 122 to process and/or may require more processing power than narrower windows of time.
- the width of the windows of time may be a function of an accuracy of a time used relative to GNSS time. The more accurate the time used by GNSS processor 122, the narrower windows of time may be used. As such, increases in time accuracy may desirably decrease the TTFF.
- Mobile computing device 116 may maintain a local clock.
- mobile computing device 116 may include a crystal and maintain the local based on vibrations of a crystal subject to an electrical signal. While accuracy of the local clock may be sufficient for most local operations, the accuracy of the local clock may be less than the accuracy of GNSS time (e.g., as the satellites may maintain GNSS time based on higher precision instruments, such as atomic clocks). As such, time maintained by the local clock may drift relative to GNSS time. This drift may yield inaccuracies that increase the width of windows used when acquiring a first fix using GNSS.
- mobile computing device 116 may include GNSS clock module 126 that may maintain, based on received cellular signal 112, a GNSS clock and GNSS processor 122 may utilize time from the GNSS clock to refine windows when acquiring a first fix. For instance, when actively tracking its position using GNSS, a GNSS time processor of mobile computing device 116 (e.g., a processor of system processors 118 or GNSS processor 122) may execute GNSS clock module 126 to maintain the GNSS clock based on received satellite signals. However, when tracking is lost, GNSS clock module 126 may maintain the GNSS clock based on the pre-determined spacing of cellular frames.
- GNSS clock module 126 may maintain the GNSS clock based on the pre-determined spacing of cellular frames.
- cellular modem 120 may output a hardware pulse to a GNSS time processor (e.g., an analog electrical pulse via a trace connecting the GNSS time processor and cellular modem 120).
- GNSS clock module 126 may maintain the GNSS clock. For instance, where the pre-determined spacing of cellular frames is X ms and the mobile computing device has received 10 frames since tracking was lost, GNSS clock module 126 may advance the GNSS clock by 10*X ms.
- GNSS processor 122 may utilize a time from the updated GNSS clock when next attempting to acquire a first fix using GNSS. For instance, when attempting to acquire the first fix, GNSS processor 122 may utilize a current time on the GNSS clock maintained by GNSS clock module 126. As the timing of the frames is synchronized to GNSS time, maintaining the GNSS clock in this way may enable mobile computing device 116 to use a higher accuracy clock (e.g., as compared to the local clock). In this way, aspects of this disclosure may desirably reduce a TTFF.
- FIGS. 2A-2D are conceptual diagrams illustrating example mobile computing devices that maintain a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
- Mobile computing devices 216A-2I6D of FIGS. 2A-2D may each be an example of mobile computing device 116 of FIG. 1.
- application processor 218, cellular modem 220, GNSS processor 222, GNSS clock module 226, and location service 228 may respectively be examples of processors 118, cellular modem 120, GNSS processor 122, GNSS clock module 126, and location service 128 of FIG. 1.
- a GNSS time processor may maintain a GNSS clock.
- the GNSS time processor may be logically/physically located at different locations of a mobile computing device.
- FIG. 2A illustrates the GNSS time processor as being a part of GNSS processor 222 (e.g., in the example of FIG. 2A, GNSS processor 222 is the GNSS time processor).
- FIG. 2B illustrates mobile computing device 216B as including GNSS time processor 223 (e.g., in the example of FIG. 2B, the GNSS time processor is separate from GNSS processor 222 and application processor 218).
- FIG. 1A illustrates the GNSS time processor as being a part of GNSS processor 222 (e.g., in the example of FIG. 2A, GNSS processor 222 is the GNSS time processor).
- FIG. 2B illustrates mobile computing device 216B as including GNSS time processor 223 (e.g., in the example of FIG. 2B, the GNSS
- FIG. 2C illustrates the GNSS time processor as being a part of application processor 218 (e.g., in the example of FIG. 20, application processor 218 is the GNSS time processor).
- FIG. 2D illustrates the GNSS time processor as being a part of cellular modem 220 (e.g., in the example of FIG. 2D, cellular modem 220 is the GNSS time processor).
- GNSS tracking module 221 and GNSS clock module 226 are illustrated as being within GNSS processor 222.
- GNSS processor 222 may execute GNSS tracking module 221 and GNSS clock module 226.
- GNSS tracking module 221 is illustrated as being within GNSS processor 222 and GNSS clock module 226 is illustrated as being within GNSS time processor 223.
- GNSS processor 222 may execute GNSS tracking module 221 and GNSS time processor 223 may execute GNSS clock module 226.
- FIG. 2A GNSS tracking module 221 and GNSS clock module 226 are illustrated as being within GNSS processor 222.
- GNSS tracking module 221 is illustrated as being within GNSS processor 222 and GNSS clock module 226 is illustrated as being within application processor 218.
- GNSS processor 222 may execute GNSS tracking module 221 and application processor 218 may execute GNSS clock module 226.
- GNSS tracking module 221 is illustrated as being within GNSS processor 222
- GNSS clock module 226 is illustrated as being within cellular modem 220.
- GNSS processor 222 may execute GNSS tracking module 221 and cellular modem 220 may execute GNSS clock module 226.
- location service 228 and user application 230 are illustrated as being within application processor 218.
- application processor 218 may execute location service 228 and user application 230.
- cellular modem 220 may exchange cellular data 238 with application processor 218. For instance, cellular modem 220 may receive cellular frames and output payloads of the frames (e.g., data carried within the frames) to application processor 218. Similarly, application processor 218 may output cellular data 238 to cellular modem 220 for cellular modem 220 to package into frames for output via a cellular network.
- cellular modem 220 may exchange cellular data 238 with application processor 218. For instance, cellular modem 220 may receive cellular frames and output payloads of the frames (e.g., data carried within the frames) to application processor 218. Similarly, application processor 218 may output cellular data 238 to cellular modem 220 for cellular modem 220 to package into frames for output via a cellular network.
- GNSS processor 222 may execute GNSS tracking module 221 to utilize signals from satellites (e.g., signals 106 from GNSS satellites 104), to track a position of mobile computing device 216.
- GNSS processor 222 may output the tracked location to application processor 218 as location 242.
- Location 242 may include one or more of a latitude, a longitude, and an elevation.
- cellular modem 220 may output hardware pulses responsive to receiving cellular frames. For instance, cellular modem 220 may output hardware pulses to GNSS time processor 223, GNSS processor 222, and/or application processor 218. In some examples, cellular modem 220 may output a pulse responsive to receiving each cellular frame (e.g., one pulse per frame). In other examples, cellular modem 220 may output a pulse responsive to receiving every Nth cellular frame (e.g., one pulse every N frames). By sending pulses every Nth frame (where N is greater than 1), cellular modem 220 may save power (e.g., as sending a pulse may consume power).
- N is greater than 1
- GNSS clock module 226 may maintain a GNSS clock, such as GNSS clock 232. While GNSS processor 222 is in tracking mode, GNSS clock module 226 may maintain GNSS clock 232 with the GNSS time that is implicitly calculated by GNSS tracking module 221 as part of the GNSS tracking process (e.g., set the time on GNSS clock 232 equal to the GNSS time calculated by GNSS tracking module 221). However, when GNSS processor 222 loses tracking or is otherwise unable to calculate GNSS time directly based on received GNSS signals, GNSS clock module 226 may maintain GNSS clock 232 based on received cellular signals.
- GNSS clock module 226 may maintain GNSS clock 232 based on received cellular signals.
- GNSS clock module 226 may determine the offset based on hardware pulses 236. As hardware pulses 236 are output by cellular modem 220 based on received cellular radio frames and GNSS clock module 226 maintain GNSS clock 232 based on the offset, GNSS clock module 226 may be considered to determine the offset, and therefore maintain GNSS clock 232, based on received cellular radio frames. In some examples, GNSS clock module 226 may determine the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames.
- GNSS clock module 226 may maintain GNSS clock 232 by adding 10 ms to the value of GNSS clock 232 responsive to receiving each hardware pulse of hardware pulses 236. Further details of examples of ways GNSS clock module 226 may determine the offset are discussed below with reference to FIGS. 3-5.
- GNSS processor 222 may utilize a current time of GNSS clock 232 (e.g., GNSS time 241) to obtain a first fix of mobile computing device 216, which may be a location of mobile computing device 216. GNSS processor 222 may output this determined location to location service 228 as location 242. GNSS processor 222 may continue to track mobile computing device 216 and update location 242. Location service 228, as discussed above, may provide location 242 (or another indication of the location of mobile computing device 216, with user consent) to one or more other components of mobile computing device 216, such as user application 230.
- GNSS clock 232 e.g., GNSS time 241
- GNSS processor 222 may output this determined location to location service 228 as location 242.
- GNSS processor 222 may continue to track mobile computing device 216 and update location 242.
- Location service 228, as discussed above, may provide location 242 (or another indication of the location of mobile computing device 216, with user consent) to one or more other components of mobile computing
- Application processor 218 may maintain a local clock, such as system clock 234. For instance, application processor 218 may increment a value of system clock 234 based on vibration of a crystal onboard mobile computing device 216. As discussed above, system clock 234 may have a lower accuracy relative to GNSS time. Application processor 218 mayoutput a value of system clock 234 to other components of mobile computing device 216, such as GNSS processor 222 and/or GNSS time processor 223 as local time 240 (e.g., as shown in FIGS. 2A and 2B).
- GNSS time processor 223 may be a processor of mobile computing device 216B that maintains a GNSS clock.
- GNSS time processor 223 may be a separate component within mobile computing device 216B from application processor 218.
- GNSS time processor 223 may be its own chip.
- GNSS time processor 223 may be a special purpose section of one of system processors 118 (e.g., separate from an application processor).
- GNSS time processor 223 may be included on a system on a chip (SoC) along with application processor 218.
- SoC system on a chip
- GNSS time processor 223 may be an ‘"always on computer” processor, which may be a relatively small (e.g., when compared with application processor 218) processor that manages sensors that are “always on.”
- the GNSS time processor may be located within cellular modem 220.
- cellular modem 220 may not output the aforementioned pulse.
- GNSS clock module 226 may maintain GNSS clock 232 based on the received cellular signals (e.g., frame spacing) without the pulses being output to other components.
- hardware pulses 236 are omitted.
- Cellular modem 220 may output GNSS time 241 to GNSS processor 222 (either directly, or via other components such as application processor 218).
- FIG. 3 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
- FIG. 3 includes graph 350 that illustrates a time series of received cellular frames 360A-360F (collectively, “cellular frames 360”) and graph 352 that illustrates a time series of hardware pulses 336A-336F (collectively, “hardware pulses 336”) output by a modem of the mobile computing device responsive to receiving the cellular frames.
- Cellular frames 360 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 336 may be an example of hardware pulses 236 of FIG. 2.
- modem 220 may output hardware pulse 336A responsive to receiving cellular frame 360A (e.g., at an edge of cellular frame 360A). Modem 220 may similarly output hardware pulses 336B-336F at times T2-T6 responsive to receiving cellular frames 360B-360F. As such, in the example of FIG. 3, modem 220 may output, for each respective cellular radio frame of cellular radio frames 360, a respective hardware pulse of hardware pulses 336.
- a GNSS processor may maintain a GNSS clock, such as GNSS clock 232 based on hardware pulses 336. For instance, if GNSS processor 222 loses GNSS tracking and switches to maintaining GNSS clock 232 based on hardware pulses 336, GNSS processor 222 may increment a value of GNSS clock 232 based on a pre-determined time interval between successive cellular radio frames cellular radio frames 360 (e.g., 10 ms in the example of FIG. 3). In the example of FIG.
- GNSS processor 222 may utilize a GNSS time value that is 40 ms larger than the GNSS time value when tracking (and thereby GNSS clock maintenance based on said tracking) was lost at time T2.
- FIG. 4 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
- FIG. 4 includes graph 450 that illustrates a time series of received cellular frames 460A-460F (collectively, “cellular frames 460”) and graph 452 that illustrates a time series of hardware pulses 436A-436C (collectively, “hardware pulses 436”) output by a modem of the mobile computing device responsive to receiving the cellular frames.
- Cellular frames 460 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 436 may be an example of hardware pulses 236 of FIG. 2.
- modem 220 may output hardware pulses of hardware pulses 436 for a subset of radio frames 460.
- modem 220 may output, for every Nth cellular radio frame of cellular radio frames 460, a respective hardware pulse of hardware pulses 436 (e.g., and not output hardware pulses of hardware pulses 436 for cellular radio frames other than every Nth cellular radio frame).
- N may be 2.
- Modem 220 may determine a value of N to achieve a balance between power consumption and GNSS time maintenance accuracy.
- FIG. 5 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. FIG.
- cellular frames 560 illustrates a time series of received cellular frames 560A-560F (collectively, “cellular frames 560”) and graph 552 that illustrates a time series of hardware pulses 536A-536F (collectively, “hardware pulses 536”) output by a modem of the mobile computing device responsive to receiving the cellular frames.
- Cellular frames 560 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 536 may be an example of hardware pulses 236 of FIG. 2.
- modem 220 may “miss” (e.g., not receive) one or more radio frames of cellular radio frames 560. For instance, in the example of FIG. 5, modem 220 may not receive cellular frames 550B, 550C, and 550D (shown as dashed lines in FIG. 5). Modem 220 may not output hardware pulses for missed cellular frames. As such, in the example of FIG. 5, modem 220 may not output hardware pulses 536B, 536C, and 536D. As GNSS time still continues, it may be desirable for GNSS processor 222 to be able to maintain GNSS clock 232 based on hardware pulses generated by modem 220 while taking missed pulses into account.
- GNSS processor 222 may determine the offset (e.g., the offset used to maintain GNSS clock 232) by estimating a quantity of missed pulses based on a system clock of mobile computing device 216. For instance, GNSS processor 222 may determine, based on a value of the system clock, an amount of time elapsed on the system clock since the most recent hardware pulse and divide the determined amount of time elapsed by the pre-determined time interval between successive pulses (which may the pre-determined time interval between successive radio frames scaled by N as discussed above) to obtain the estimated quantity of missed hardware pulses. For instance, if GNSS processor 222 determines that 35 milliseconds have passed on the system clock since receipt of a hardware pulse and the pre-determined time interval is 10 ms, GNSS processor 222 may determine the estimated quantity of missed hardware pulses as 3.
- GNSS processor 222 may determine whether any hardware pulses were missed responsive to receiving each new hardware pulse. For instance, in the example of FIG. 5, responsive to receiving hardware pulse 536E, GNSS processor 222 may determine what 42 ms have elapsed on the system clock (which in this example has ran 2 ms faster than GNSS time) since receipt of hardware pulse 536A (i.e., the most recently received hardware pulse), determine that 3 hardware pulses were missed, and determine that GNSS time at time T5 is GNSS time at time T1 plus 4 times the pre-determined time interval between successive pulses (1 may be added to the determined quantity of missed pulses when performing the operation responsive to receiving a new hardware pulse). In this way, GNSS processor 222 may utilize the system clock to compensate for missed cellular frames and their corresponding hardware pulses.
- GNSS processor 222 may receive the value of the system clock as local time 240 in FIG. 2 as coming from application processor 218. However, in some examples GNSS processors 222 may receive local time 240 from other components of mobile computing device 216 such as cellular modem 220. In some examples, application processor 218 may also receive hardware pulses from cellular modem 220. The receipt of such hardware pulses by application processor 218 may enable application processor 218 to more accurately calculate the amount of time elapsed on system clock 234 between hardware pulses. As such, in some examples, GNSS processor 222 may receive the calculated elapsed time (e.g., as opposed to calculating the elapsed time itself).
- the local time from system clock 234 may be less accurate than GNSS time.
- mobile computing device 216 may perform one or more operations to compensate for the reduced accuracy of system clock 234 (e.g., when calculating the estimated quantity of missed pulses and''or when generally maintaining GNSS clock 232).
- GNSS processor 222 or another component may adjust based on a rate ratio (R) of system clock 234, the determined amount of time elapsed on system clock 234.
- the rate ratio R may be a ratio of time passage of system clock 234 relative to GNSS clock 232.
- GNSS processor 222 may multiply the determined amount of time elapsed on system clock 234 by 1 .1. In this way, aspects of this disclosure may compensate for inaccuracies of system clock 234, which may improve an accuracy of maintaining GNSS clock 232.
- FIG. 6 is a flowchart illustrating example operations of an example mobile computing device in accordance with one or more aspects of the present disclosure. Although the example operation of FIG. 6 is described as being performed by mobile computing device 116 of FIG. 1, in other examples some or all of the example operation may be performed by another computing device.
- GNSS processor 122 may track, based on signals received from GNSS satellites, a position of mobile computing device 116 (602). For instance, GNSS processor 122 may operate in a tracking mode in which GNSS processor 122 continually determines, based on signals 106, a latitude, longitude, and elevation of mobile computing device 116. As part of operating in the tracking mode, GNSS processor 122 may necessarily determine a GNSS time that is synchronized to GNSS clocks of GNSS satellites 104. As discussed above, when operating in the tracking mode, GNSS processor 122 may maintain a GNSS clock, such as GNSS clock 232 of FIG. 2, based on the determined GNSS time (e.g., keep GNSS clock 232 updated with the currently determined GNSS time).
- GNSS clock 232 such as GNSS clock 232 of FIG. 2
- GNSS processor 122 may determine whether tracking has been lost (604). For instance, GNSS processor 122 may determine whether or not signals 106 are strong enough for GNSS processor 122 to continue tracking the location of mobile computing device 116. Responsive to determining that tracking has not been lost (“No” branch of 604), GNSS processor 122 may continue to operate in the tracking mode (602).
- a GNSS time processor may maintain, based on hardware pulses output by modem 120, the GNSS clock (606).
- the GNSS time processor may be GNSS processor 122, may be one of system processors 118, or may be a discrete processor (e.g., separate from GNSS processor 122 and separate from an application processor of processors 118).
- the GNSS time processor may determine an offset, and determine a current time on GNSS clock 232 by adding the offset to a previous time on GNSS clock 232.
- the GNSS time processor may determine the offset based on hardware pulses output by modem 120 (e.g., temporal spacing between the pulses). For instance, modem 120 may output hardware pulses (e.g., to the GNSS time processor) responsive to receiving cellular radio frames, which may be spaced based on GNSS time maintained at cellular base stations.
- modem 120 may output hardware pulses (e.g., to the GNSS time processor) responsive to receiving cellular radio frames, which may be spaced based on GNSS time maintained at cellular base stations.
- GNSS processor 122 may acquire, based on a current time of GNSS clock 232, a first fix for the position of mobile computing device 116 (608). For instance, GNSS processor 122 may utilize the current time of GNSS clock 232 to select a search window for processing of received GNSS signals.
- the GNSS time processor may maintain the GNSS clock based on software pulses (e.g., a software message or event) in addition to or in place of hardware pulses.
- software pulses e.g., a software message or event
- cellular modem 220 may output such software pulses via one or more data busses
- the GNSS time processor may receive the software pulses and maintain the GNSS clock in a similar fashion to the hardware pulses.
- While maintaining the GNSS clock based on hardware pulses may provide various advantages (e.g., avoiding software latency issues), maintaining the GNSS clock based on software pulses may also provide advantages (e.g., design simplification as an electrical route between the modem and the GNSS time processor may be omitted).
- Example 1 A method comprising: responsive to receiving, by a cellular modem of a mobile computing device, a cellular radio frame of a plurality of cellular radio frames, outputting, by the cellular modem, a pulse of a plurality of pulses to a global navigation satellite system (GNSS) time processor of the mobile computing device; maintaining, by the GNSS time processor and based on the pulse, a GNSS clock; receiving, by a GNSS processor, a GNSS time via the GNSS clock; and acquiring, by the GNSS processor and based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.
- GNSS global navigation satellite system
- Example 2 The method of example 1, wherein maintaining the GNSS clock comprises: determining a previous GNSS time of the GNSS clock; determining, based on the pulse, an offset; and adding the offset to the previous GNSS time to determine the GNSS time.
- Example 3 The method of example 2, wherein determining the offset comprises determining the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames.
- Example 4 The method of example 2, wherein determining the offset comprises: determining, based on a system clock of the mobile computing device, an estimated quantity of missed pulses since the pulse; and determining, based on a product of a pre-determined time interval between successive pulses and the estimated quantity of missed pulses, the offset.
- Example 5 The method of example 4, wherein determining the estimated quantity of missed pulses comprises: determining an amount of time elapsed on the system clock since the pulse; and dividing the amount of time elapsed by the pre-determined time interval between successive pulses to obtain the estimated quantity of missed pulses.
- Example 6 The method of example 5, wherein determining the amount of time elapsed on the system clock since the pulse comprises: adjusting, based on a rate ratio of the system clock, the determined amount of time elapsed on the system clock.
- Example 7 The method of example 6, further comprising: determining the rate ratio as a ratio of time passage of the system clock relative to the GNSS clock.
- Example 8 The method of example 1 , wherein outputting the pulse further comprises outputting, by the cellular modem, the pulse to an application processor of the mobile computing device.
- Example 9 The method of example 1 , wherein outputting the pulse comprises outputting, for each respective cellular radio frame of the plurality of cellular radio frames, a respective pulse of the plurality of pulses.
- Example 10 The method of example 1, wherein outputting the pulse comprises: outputting, for every' Nth cellular radio frame of the plurality of cellular radio frames, a respective pulse of the plurality of pulses, wherein N is greater than 1; and not outputting pulses of the plurality of pulses for cellular radio frames other than the every Nth cellular radio frame.
- Example 11 The method example 1, further comprising: tracking, by the GNSS processor and based on the first fix, a position of the mobile computing device.
- Example 12 The method of example 1, wherein the plurality of pulses comprise a plurality of hardware pulses.
- a mobile computing device comprising: a cellular modem configured to output, responsive to receiving a cellular radio frame of a plurality of cellular radio frames, a pulse of a plurality of pulses to a global navigation satellite system (GNSS) time processor of the mobile computing device; and a GNSS time processor configured to maintain, and based on the pulse, a GNSS clock; and a GNSS processor configured to acquire, based on a GNSS time of the GNSS clock, a first fix for the mobile computing device.
- GNSS global navigation satellite system
- Example 14 The mobile computing device of example 13, wherein, to maintain the GNSS clock, the GNSS time processor is configured to: determine a previous GNSS time of the GNSS clock; determine, based on the pulse and a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames, an offset; and add the offset to the previous GNSS time to determine the GNSS time.
- Example 15 The mobile computing device of example 14, further comprising a system clock, wherein, to determine the offset, the GNSS time processor is configured to: determine, based on the system clock, an estimated quantity of missed pulses since the pulse; and determine, based on a product of a pre-determined time interval between successive pulses and the estimated quantity of missed pulses, the offset.
- Example 16 The mobile computing device of example 13, wherein the GNSS processor is the GNSS time processor.
- Example 17 The mobile computing device of example 13, wherein the GNSS processor is different than the GNSS time processor.
- Example 18 The mobile computing device of example 17, wherein the GNSS time processor is a different processor than an application processor of the mobile computing device.
- Example 19 The mobile computing device of example 17, wherein the GNSS time processor is a discrete processor located on a system on a chip (SoC) along with an application processor of the mobile computing device.
- SoC system on a chip
- Example 20 A computer-readable storage medium storing instructions that, when executed, cause a global navigation satellite system (GNSS) time processor of a mobile computing device to: receive, from a cellular modem of the mobile computing device, a pulse of a plurality of pulses output by the cellular modem in response to receiving cellular radio frames; maintain, based on the pulse, a GNSS clock; and provide a GNSS time of the GNSS clock to a GNSS processor that acquires, based on the GNSS time of the GNSS clock, a first fix for the mobile computing device.
- GNSS global navigation satellite system
- Example 21 A method comprising: maintaining, by a cellular modem of a mobile computing device and based on temporal spacing of a plurality of cellular radio frames, a global navigation satellite system (GNSS) clock; receiving, by a GNSS processor, a GNSS time via the GNSS clock; and acquiring, by the GNSS processor and based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.
- GNSS global navigation satellite system
- Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol.
- computer-readable media generally may correspond to (1) tangible computer-readable storage media, which is non-transitory or (2) a communication medium such as a signal or carrier wave.
- Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure.
- a computer program product may include a computer-readable medium.
- such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium.
- coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave are included in the definition of medium.
- DSL digital subscriber line
- computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media.
- Disk and disc includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
- processors such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitiy.
- DSPs digital signal processors
- ASICs application specific integrated circuits
- FPGAs field programmable logic arrays
- processors may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein.
- the functionality described herein may be provided within dedicated hardware and/or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.
- the techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set).
- IC integrated circuit
- a set of ICs e.g., a chip set.
- Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware.
Landscapes
- Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Position Fixing By Use Of Radio Waves (AREA)
Abstract
An example method includes responsive to receiving, by a cellular modem of a mobile computing device, a cellular radio frame of a plurality of cellular radio frames, outputting, by the cellular modem, a pulse of a plurality of pulses to a global navigation satellite system (GNSS) processor of the mobile computing device; maintaining, by the GNSS processor and based on the pulse, a GNSS clock; and acquiring, by the GNSS processor and based on a current GNSS time of the GNSS clock, a first fix for the mobile computing device.
Description
LOCALLY MAINTAINING GLOBAL NAVIGATION SATELLITE SYSTEM (GNSS) TIME BASED ON CELLULAR RADIO SIGNALS
BACKGROUND
[0001] Smartphones, wearable computing devices, vehicle navigation systems, and other types of devices often include a receiver configured to perform location determination using the Global Positioning System (GPS), and other GNSS (Global Navigation Satellites Systems). GPS is a satellite- based navigation system that involves a network of satellites configured to transmit positioning signals (i.e., signals) to Earth while circling Earth in a precise orbit. Each satellite transmits signals that include information for receivers to use, such as an indication of the time that each signal was transmitted by the satellite and position information for the satellite. Each satellite may include a high precision clock that is synchronized to clocks of other satellites in the same constellation. Other GNSS constellations, such as GLONASS, Galileo, BeiDou, QZSS, and IRNSS, operate similarly, and may also be used for location determination.
[0002] A GNSS receiver in a mobile computing device may receive and use information within signals from multiple satellites to estimate a location of the mobile computing device. For example, the receiver may use trilateration to estimate the user’s location on the surface of Earth by timing signals obtained from at least four GNSS satellites. Upon receiving a signal from a satellite, the receiver may determine the time that the signal was received at the receiver and compare that time to the time that the signal was transmitted by the satellite as indicated within the signal. The receiver may then determine the distance to the satellite based on the determined time difference. By using signals from multiple satellites, the receiver may determine its location.
SUMMARY
[0003] In general, aspects of this disclosure are directed to mobile computing devices that maintain GNSS clocks based on received cellular signals. When establishing a position of itself using GNSS, a mobile computing device may acquire a first fix. To acquire the first fix, the mobile computing device may process satellite signals received from satellites of a GNSS constellation. The satellite signals may be relatively weak (e.g., have a low signal to noise ratio (SNR)). As such, to process the signals, the mobile computing device may perform integration operations across windows of time. Wider windows of time may take longer for the mobile computing device to process and/or may require more processing power than narrower windows of time. The width of the windows of time may be a function of an
accuracy of a time used relative to GNSS time. The more accurate the time used by the mobile computing device, the narrower windows of time may be used. As such, increases in time accuracy may desirably improve time to first fix (TTFF).
[0004] A mobile computing device may maintain a local clock. For instance, the mobile computing device may include a crystal and maintain the local based on vibrations of a crystal subject to an electrical signal. While accuracy of the local clock may be sufficient for most local operations, the accuracy of the local clock may be less than the accuracy of GNSS time (e.g., as the satellites may maintain GNSS time based on higher precision instruments, such as atomic clocks). As such, time maintained by the local clock may drift relative to GNSS time. This drift may yield inaccuracies that increase the width of windows used when acquiring a first fix using GNSS.
[0005] Cellular base stations (e.g., “cell towers”) may maintain clocks that are synchronized to clocks of satellites in the GNSS constellation. The time maintained by these clocks may be referred to as GNSS time. Cellular base stations may transmit frames of cellular data at regular pre-determined intervals, synchronized to GNSS time. For instance, a cellular base station may transmit frames at 10 millisecond (ms) intervals that are synchronized to GNSS time.
[0006] In accordance w’ith one or more aspects of this disclosure, in addition to a local clock, a mobile computing device may maintain, based on received cellular signals, a GNSS clock and utilize time from the GNSS clock to refine windows when acquiring a first fix. For instance, when actively tracking its position using GNSS, the mobile computing device may maintain the GNSS clock based on received satellite signals. However, when tracking is lost, the mobile computing device may maintain the GNSS clock based on the pre-determined spacing of cellular frames. For instance, where the pre-determined spacing of cellular frames is X ms and the mobile computing device has received 10 frames since tracking was lost, the mobile computing device may advance the GNSS clock by 10X ms. The mobile computing device may utilize a time from the updated GNSS clock when next attempting to acquire a first fix using GNSS. As the timing of the frames is synchronized to GNSS time, maintaining the GNSS clock in this way may enable the mobile computing device to use a higher accuracy clock (e.g., as compared to the local clock). In this way, aspects of this disclosure may desirably reduce a TTFF or improve acquisition sensitivity.
[0007] As one example, a method includes responsive to receiving, by a cellular modem of a mobile computing device, a cellular radio frame of a plurality of cellular radio frames, outputting, by the cellular modem, a hardware pulse of a plurality of hardware pulses to a
GNSS time processor of the mobile computing device; maintaining, by the GNSS time processor and based on the hardware pulse, a GNSS clock; and acquiring, by a GNSS processor and based on a current GNSS time of the GNSS clock, a first fix for the mobile computing device.
[0008] As another example, a mobile computing device includes a cellular modem configured to output, responsive to receiving a cellular radio frame of a plurality of cellular radio frames, a hardware pulse of a plurality of hardware pulses to a GNSS time processor of the mobile computing device; the GNSS time processor configured to maintain, based on the hardware pulse, a GNSS clock; and a GNSS processor configured to acquire, based on a current GNSS time of the GNSS clock, a first fix for the mobile computing device.
[0009] As another example, a computer-readable storage medium stores instructions that, when executed, cause one or more processors of a mobile computing device to: receive, from a cellular modem of the mobile computing device, a hardware pulse of a plurality of hardware pulses output by the cellular modem in response to receiving cellular radio frames; maintain, based on the hardware pulse, a GNSS clock; and acquire, based on a current GNSS time of the GNSS clock, a first fix for the mobile computing device
[0010] The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.
BRIEF DESCRIPTION OF DRAWINGS
[0011] FIG. 1 is a conceptual diagram illustrating an example system that includes a mobile computing device that maintains a GNSS clock, in accordance with one or more aspects of this disclosure.
[0012] FIGS. 2A-2D are conceptual diagrams illustrating example mobile computing devices that maintain a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
[0013] FIG. 3 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
[0014] FIG. 4 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
[0015] FIG. 5 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.
[0016] FIG. 6 is a flowchart illustrating example operations of an example mobile computing device in accordance with one or more aspects of the present disclosure.
DETAILED DESCRIPTION
[0017] FIG. 1 is a conceptual diagram illustrating an example system that includes a mobile computing device that maintains a GNSS clock, in accordance with one or more aspects of this disclosure. As shown in FIG. 1, system 100 may include GNSS constellation 102, cellular network 108, and mobile computing device 116.
[0018] GNSS constellation 102 may include a plurality of GNSS satellites 104A-104N (collectively, “GNSS satellites 104”) that each transmit a respective GNSS signal of GNSS signals I06A-106N (collectively, “GNSS signals 106”). GNSS satellites 104 may be included in any GNSS constellation, such as GPS, GLONASS, Galileo, BeiDou, QZSS, and IRNSS.
[0019] Wireless network 108 (“network 108”) may represent components configured to wirelessly exchange data with computing devices, such as mobile computing deGee 116. As shown in FIG. 1 , wireless network 108 may include one or more nodes 110A- 11 ON (collectively, “nodes 110”) of network 108. Nodes 110 may represent any type of radio network node or any network node. Examples of nodes 110 may include Node B, base station (BS), multi-standard radio (MSR) radio node (e.g., MSR BS), gNB, eNode B (eNB), network controller, radio network controller (RNC), base station controller (BSC), etc. Nodes 110 may each transmit/receive a respective cellular signal of cellular signals 112A- 112N (collectively, “cellular signals 112”). Wireless network 108 may be compliant with one or more standards, such as GSM, CDMA, and LTE.
[0020] Nodes 110 may maintain clocks that are synchronized to clocks of GNSS satellites 104. For instance, nodes 110 may themselves have GNSS receivers that are nearly always in tracking mode (e.g., and therefore have accurate GNSS time). In operation, nodes 110 may transmit frames of cellular data at regular pre-determined intervals, synchronized to GNSS time. For instance, nodes 110 may transmit frames at 10 millisecond (ms), 20 ms, 30 ms, etc. intervals that are synchronized to GNSS time. The time between frame boundaries is well established by the cellular protocols, and thus known a-priori.
[0021] Mobile computing device 116 may be a portable device that includes components that determine a position of mobile computing device (e.g., a latitude and a longitude). As shown in FIG. 1, mobile computing device 116 may include one or more system processors 118, cellular modem 120, GNSS processor 122, and storage device 124, which may include GNSS clock module 126 and location service 128. Examples of mobile computing device 116 include, but are not limited to, mobile phones, gaming devices, vehicles, tablets, cameras, laptops, wearable computing devices, e-book readers, etc.
[0022] System processors 118 may implement functionality and/or execute instructions within mobile computing device 116. Examples of system processors 118 include, but are not limited to, one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In some examples, system processors 118 may be an application processor, and may be included in a system on a chip (SoC).
[0023] Cellular modem 120 may communicate with a cellular network, such as wireless network 108. Cellular modem 120 may include one or more antennas, receivers, transmitters, and processors that exchange cellular signals 112 with nodes 110. Receivers of cellular modem 120 may receive cellular signals 112 from nodes 110, processors of cellular modem 120 may process the received signals and output data to one or more components of mobile computing device 116, such as system processors 118. For instance, processors of cellular modem 120 may process the received cellular signals 112 to identify frames of cellular data, and output payloads of the frames of cellular data to system processors 118. Cellular modem 120 may be a separate component within mobile computing device 116 from system processors 118 (e.g., cellular modem 120 may be a separate chip from processors 118).
[0024] GNSS processor 122 may be a processor of mobile computing device 116 that performs GNSS operations, such as acquisition and tracking. GNSS processor 122 may be a separate component within mobile computing device 116 from system processors 118 (e.g., GNSS processor 122 may be a separate chip from processors 118). For example, GNSS processor 122 may be its own chip, or may be included in a baseband or modem chip. In some examples, GNSS processor 122 may be a special purpose section of one of system processors 118 (e.g., separate from an application processor). As such, GNSS processor 122 may be considered to be a different processor than processors 118.
[0025] Storage device 124 may include one or more computer-readable storage media. For example, storage device 124 may be configured for long-term, as well as short-term storage of information, such as instructions, data, or other information used by mobile computing device 116. In some examples, storage device 124 may include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard disks, optical discs, solid state discs, and/or the like. In other examples, in place of, or in addition to the non-volatile storage elements, storage device 124 may include one or more so-called “temporary” memory devices, meaning that a primary purpose of these devices may not be long-term data storage. For example, the devices may comprise volatile memory devices, meaning that the devices may not maintain stored contents when the devices are not receiving power. Examples of volatile memory devices include random-access memories (RAM), dynamic random-access memories (DRAM), static random-access memories (SRAM), etc. [0026] Location service 128 may, with explicit user permission, provide a location of mobile computing device 116 (e.g., a latitude, longitude, and/or elevation of mobile computing device 116) to one or more applications and/or other modules of mobile computing device 116. In some examples, location service 128 may be a service executed by processors 118. Location sendee 128 may receive the location of mobile computing device 116 from one or more other components of mobile computing device 116, such as GNSS processor 122.
[0027] In operation, GNSS processor 122 may initially perform an acquisition phase to determine a first fix of mobile computing deGee 116. To determine the first fix, GNSS processor 122 may determine a respective code phase, frequency, and time for a plurality of GNSS satellites 104. For instance, GNSS processor 122 may receive a stream of I/Q samples from a GNSS RF front end (e.g., one or more antennas and associated processing components), and process the stream of I/Q samples to determine the respective code phase, frequency, and time for each GNSS satellite of the plurality of GNSS satellites 104. To process the stream of I/Q samples, GNSS processor 122 may search for the code phases, frequencies, and times by searching a correlation peak across a search window (e.g., potential PRN codes). GNSS processor 122 may utilize different times to perform the correlations. Longer times may provide higher noise suppression, but also increase the TTFF. GNSS processor 122 may determine that a particular GNSS satellite of GNSS satellites 104 is acquired/detected if a highest correlation peak is greater than a threshold.
[0028] Based on the determined code phases, frequencies, and times for the plurality of GNSS satellites 104, GNSS processor 122 may determine the first fix for mobile computing device 116. For instance, GNSS processor 122 may utilize the determined code phases,
frequencies, and times for the plurality of GNSS satellites 104 to decode navigation messages (e.g., navbits) encoded in GNSS signals 106, and determine the first fix based on the decoded navigation messages.
[0029] Once GNSS processor 122 acquires the first fix, GNSS processor 122 may enter a tracking mode in which GNSS processor 122 tracks/monitors the position of mobile computing device 116. As part of operating in the tracking mode, GNSS processor 122 may generate a time that is synchronized to clocks in GNSS satellites 104 (e.g., GNSS time). The tracking mode may be substantially simpler and/or less complex than the acquisition mode. [0030] As discussed above, when acquiring the first fix, GNSS processor 122 may utilize a time to process GNSS signals 106. For instance, GNSS processor 122 may utilize a time to select a search window in which to integrate GNSS signals 106. Wider windows of time may take longer for GNSS processor 122 to process and/or may require more processing power than narrower windows of time. The width of the windows of time may be a function of an accuracy of a time used relative to GNSS time. The more accurate the time used by GNSS processor 122, the narrower windows of time may be used. As such, increases in time accuracy may desirably decrease the TTFF.
[0031] Mobile computing device 116 may maintain a local clock. For instance, mobile computing device 116 may include a crystal and maintain the local based on vibrations of a crystal subject to an electrical signal. While accuracy of the local clock may be sufficient for most local operations, the accuracy of the local clock may be less than the accuracy of GNSS time (e.g., as the satellites may maintain GNSS time based on higher precision instruments, such as atomic clocks). As such, time maintained by the local clock may drift relative to GNSS time. This drift may yield inaccuracies that increase the width of windows used when acquiring a first fix using GNSS.
[0032] In accordance with one or more aspects of this disclosure, in addition to a local clock, mobile computing device 116 may include GNSS clock module 126 that may maintain, based on received cellular signal 112, a GNSS clock and GNSS processor 122 may utilize time from the GNSS clock to refine windows when acquiring a first fix. For instance, when actively tracking its position using GNSS, a GNSS time processor of mobile computing device 116 (e.g., a processor of system processors 118 or GNSS processor 122) may execute GNSS clock module 126 to maintain the GNSS clock based on received satellite signals. However, when tracking is lost, GNSS clock module 126 may maintain the GNSS clock based on the pre-determined spacing of cellular frames. For instance, responsive to receiving a cellular radio frame, cellular modem 120 may output a hardware pulse to a GNSS time
processor (e.g., an analog electrical pulse via a trace connecting the GNSS time processor and cellular modem 120). Based on receiving the hardware pulse, GNSS clock module 126 may maintain the GNSS clock. For instance, where the pre-determined spacing of cellular frames is X ms and the mobile computing device has received 10 frames since tracking was lost, GNSS clock module 126 may advance the GNSS clock by 10*X ms.
[0033] GNSS processor 122 may utilize a time from the updated GNSS clock when next attempting to acquire a first fix using GNSS. For instance, when attempting to acquire the first fix, GNSS processor 122 may utilize a current time on the GNSS clock maintained by GNSS clock module 126. As the timing of the frames is synchronized to GNSS time, maintaining the GNSS clock in this way may enable mobile computing device 116 to use a higher accuracy clock (e.g., as compared to the local clock). In this way, aspects of this disclosure may desirably reduce a TTFF.
[0034] FIGS. 2A-2D are conceptual diagrams illustrating example mobile computing devices that maintain a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. Mobile computing devices 216A-2I6D of FIGS. 2A-2D may each be an example of mobile computing device 116 of FIG. 1. Similarly, application processor 218, cellular modem 220, GNSS processor 222, GNSS clock module 226, and location service 228 may respectively be examples of processors 118, cellular modem 120, GNSS processor 122, GNSS clock module 126, and location service 128 of FIG. 1.
[0035] As discussed above, a GNSS time processor may maintain a GNSS clock. The GNSS time processor may be logically/physically located at different locations of a mobile computing device. FIG. 2A illustrates the GNSS time processor as being a part of GNSS processor 222 (e.g., in the example of FIG. 2A, GNSS processor 222 is the GNSS time processor). FIG. 2B illustrates mobile computing device 216B as including GNSS time processor 223 (e.g., in the example of FIG. 2B, the GNSS time processor is separate from GNSS processor 222 and application processor 218). FIG. 2C illustrates the GNSS time processor as being a part of application processor 218 (e.g., in the example of FIG. 20, application processor 218 is the GNSS time processor). FIG. 2D illustrates the GNSS time processor as being a part of cellular modem 220 (e.g., in the example of FIG. 2D, cellular modem 220 is the GNSS time processor).
[0036] In the example of FIG. 2A, GNSS tracking module 221 and GNSS clock module 226 are illustrated as being within GNSS processor 222. For instance, in the example of FIG. 2A, GNSS processor 222 may execute GNSS tracking module 221 and GNSS clock module 226. In the example of FIG. 2B, GNSS tracking module 221 is illustrated as being within GNSS
processor 222 and GNSS clock module 226 is illustrated as being within GNSS time processor 223. For instance, in the example of FIG. 2B, GNSS processor 222 may execute GNSS tracking module 221 and GNSS time processor 223 may execute GNSS clock module 226. In the example of FIG. 2C, GNSS tracking module 221 is illustrated as being within GNSS processor 222 and GNSS clock module 226 is illustrated as being within application processor 218. For instance, in the example of FIG. 2C, GNSS processor 222 may execute GNSS tracking module 221 and application processor 218 may execute GNSS clock module 226. In the example of FIG. 2D, GNSS tracking module 221 is illustrated as being within GNSS processor 222 GNSS clock module 226 is illustrated as being within cellular modem 220. For instance, in the example of FIG. 2D, GNSS processor 222 may execute GNSS tracking module 221 and cellular modem 220 may execute GNSS clock module 226.
[0037] In each of FIGS. 2A-2D, location service 228 and user application 230 are illustrated as being within application processor 218. For instance, application processor 218 may execute location service 228 and user application 230.
[0038] In operation, cellular modem 220 may exchange cellular data 238 with application processor 218. For instance, cellular modem 220 may receive cellular frames and output payloads of the frames (e.g., data carried within the frames) to application processor 218. Similarly, application processor 218 may output cellular data 238 to cellular modem 220 for cellular modem 220 to package into frames for output via a cellular network.
[0039] In tracking mode, GNSS processor 222 may execute GNSS tracking module 221 to utilize signals from satellites (e.g., signals 106 from GNSS satellites 104), to track a position of mobile computing device 216. GNSS processor 222 may output the tracked location to application processor 218 as location 242. Location 242 may include one or more of a latitude, a longitude, and an elevation.
[0040] Similar to cellular modem 120, cellular modem 220 may output hardware pulses responsive to receiving cellular frames. For instance, cellular modem 220 may output hardware pulses to GNSS time processor 223, GNSS processor 222, and/or application processor 218. In some examples, cellular modem 220 may output a pulse responsive to receiving each cellular frame (e.g., one pulse per frame). In other examples, cellular modem 220 may output a pulse responsive to receiving every Nth cellular frame (e.g., one pulse every N frames). By sending pulses every Nth frame (where N is greater than 1), cellular modem 220 may save power (e.g., as sending a pulse may consume power).
[0041] Similar to GNSS clock module 126, GNSS clock module 226 may maintain a GNSS clock, such as GNSS clock 232. While GNSS processor 222 is in tracking mode, GNSS
clock module 226 may maintain GNSS clock 232 with the GNSS time that is implicitly calculated by GNSS tracking module 221 as part of the GNSS tracking process (e.g., set the time on GNSS clock 232 equal to the GNSS time calculated by GNSS tracking module 221). However, when GNSS processor 222 loses tracking or is otherwise unable to calculate GNSS time directly based on received GNSS signals, GNSS clock module 226 may maintain GNSS clock 232 based on received cellular signals. For instance, GNSS clock module 226 may determine an offset and add the offset to a previous GNSS time (GNSStime-previous) of GNSS clock 232 to determine the current GNSS time (GNSStime-current) of GNSS clock 232 (e.g., GNS Sthne-vurrent= GNSStime -previous "!" offset).
[0042] GNSS clock module 226 may determine the offset based on hardware pulses 236. As hardware pulses 236 are output by cellular modem 220 based on received cellular radio frames and GNSS clock module 226 maintain GNSS clock 232 based on the offset, GNSS clock module 226 may be considered to determine the offset, and therefore maintain GNSS clock 232, based on received cellular radio frames. In some examples, GNSS clock module 226 may determine the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames. For instance, where the predetermined time interval between successive cellular radio frames is 10 ms, GNSS clock module 226 may maintain GNSS clock 232 by adding 10 ms to the value of GNSS clock 232 responsive to receiving each hardware pulse of hardware pulses 236. Further details of examples of ways GNSS clock module 226 may determine the offset are discussed below with reference to FIGS. 3-5.
[0043] As noted above, GNSS processor 222 may utilize a current time of GNSS clock 232 (e.g., GNSS time 241) to obtain a first fix of mobile computing device 216, which may be a location of mobile computing device 216. GNSS processor 222 may output this determined location to location service 228 as location 242. GNSS processor 222 may continue to track mobile computing device 216 and update location 242. Location service 228, as discussed above, may provide location 242 (or another indication of the location of mobile computing device 216, with user consent) to one or more other components of mobile computing device 216, such as user application 230.
[0044] Application processor 218 may maintain a local clock, such as system clock 234. For instance, application processor 218 may increment a value of system clock 234 based on vibration of a crystal onboard mobile computing device 216. As discussed above, system clock 234 may have a lower accuracy relative to GNSS time. Application processor 218 mayoutput a value of system clock 234 to other components of mobile computing device 216,
such as GNSS processor 222 and/or GNSS time processor 223 as local time 240 (e.g., as shown in FIGS. 2A and 2B).
[0045] GNSS time processor 223 may be a processor of mobile computing device 216B that maintains a GNSS clock. GNSS time processor 223 may be a separate component within mobile computing device 216B from application processor 218. For example, GNSS time processor 223 may be its own chip. In some examples, GNSS time processor 223 may be a special purpose section of one of system processors 118 (e.g., separate from an application processor). For instance, GNSS time processor 223 may be included on a system on a chip (SoC) along with application processor 218. As one specific example, GNSS time processor 223 may be an ‘"always on computer” processor, which may be a relatively small (e.g., when compared with application processor 218) processor that manages sensors that are “always on.”
[0046] As discussed above, in some examples (e.g., FIG. 2D), the GNSS time processor may be located within cellular modem 220. In some of such examples, cellular modem 220 may not output the aforementioned pulse. In particular, as GNSS clock module 226 is executed by cellular modem 220, GNSS clock module 226 may maintain GNSS clock 232 based on the received cellular signals (e.g., frame spacing) without the pulses being output to other components. As can be seen in the example of FIG. 2D, hardware pulses 236 are omitted. Cellular modem 220 may output GNSS time 241 to GNSS processor 222 (either directly, or via other components such as application processor 218).
[0047] FIG. 3 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. FIG. 3 includes graph 350 that illustrates a time series of received cellular frames 360A-360F (collectively, “cellular frames 360”) and graph 352 that illustrates a time series of hardware pulses 336A-336F (collectively, “hardware pulses 336”) output by a modem of the mobile computing device responsive to receiving the cellular frames. Cellular frames 360 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 336 may be an example of hardware pulses 236 of FIG. 2.
[0048] As shown in FIG. 3, at time T 1 , modem 220 may output hardware pulse 336A responsive to receiving cellular frame 360A (e.g., at an edge of cellular frame 360A). Modem 220 may similarly output hardware pulses 336B-336F at times T2-T6 responsive to receiving cellular frames 360B-360F. As such, in the example of FIG. 3, modem 220 may
output, for each respective cellular radio frame of cellular radio frames 360, a respective hardware pulse of hardware pulses 336.
[0049] As discussed above, a GNSS processor, such as GNSS processor 222 of FIG. 2, may maintain a GNSS clock, such as GNSS clock 232 based on hardware pulses 336. For instance, if GNSS processor 222 loses GNSS tracking and switches to maintaining GNSS clock 232 based on hardware pulses 336, GNSS processor 222 may increment a value of GNSS clock 232 based on a pre-determined time interval between successive cellular radio frames cellular radio frames 360 (e.g., 10 ms in the example of FIG. 3). In the example of FIG. 3, should GNSS processor 222 lose tracking at time T2 and begin acquisition of a new first fix at time T6, GNSS processor 222 may utilize a GNSS time value that is 40 ms larger than the GNSS time value when tracking (and thereby GNSS clock maintenance based on said tracking) was lost at time T2.
[0050] FIG. 4 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. FIG. 4 includes graph 450 that illustrates a time series of received cellular frames 460A-460F (collectively, “cellular frames 460”) and graph 452 that illustrates a time series of hardware pulses 436A-436C (collectively, “hardware pulses 436”) output by a modem of the mobile computing device responsive to receiving the cellular frames. Cellular frames 460 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 436 may be an example of hardware pulses 236 of FIG. 2.
[0051] The example of FIG. 4 is similar to the example of FIG. 3 except that modem 220 may output hardware pulses of hardware pulses 436 for a subset of radio frames 460. For instance, modem 220 may output, for every Nth cellular radio frame of cellular radio frames 460, a respective hardware pulse of hardware pulses 436 (e.g., and not output hardware pulses of hardware pulses 436 for cellular radio frames other than every Nth cellular radio frame). In the example of FIG. 4, N may be 2. Modem 220 may determine a value of N to achieve a balance between power consumption and GNSS time maintenance accuracy.
[0052] GNSS processor 222 may take the value of N into account when maintaining GNSS clock 232. For instance, GNSS processor 222 may utilize a product of N and the predetermined time interval between successive cellular radio frames when determining the offset used to maintain GNSS clock 232. In this example of FIG. 4 where N=2 and the predetermined time interval is 10 ms, GNSS processor 222 may add 20 ms to GNSS clock 232 for each hardware pulse of hardware pulses 436.
[0053] FIG. 5 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. FIG. 5 includes graph 550 that illustrates a time series of received cellular frames 560A-560F (collectively, “cellular frames 560”) and graph 552 that illustrates a time series of hardware pulses 536A-536F (collectively, “hardware pulses 536”) output by a modem of the mobile computing device responsive to receiving the cellular frames. Cellular frames 560 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 536 may be an example of hardware pulses 236 of FIG. 2.
[0054] In some scenarios, such as due to poor connectivity between modem 220 and a base station, modem 220 may “miss” (e.g., not receive) one or more radio frames of cellular radio frames 560. For instance, in the example of FIG. 5, modem 220 may not receive cellular frames 550B, 550C, and 550D (shown as dashed lines in FIG. 5). Modem 220 may not output hardware pulses for missed cellular frames. As such, in the example of FIG. 5, modem 220 may not output hardware pulses 536B, 536C, and 536D. As GNSS time still continues, it may be desirable for GNSS processor 222 to be able to maintain GNSS clock 232 based on hardware pulses generated by modem 220 while taking missed pulses into account.
[0055] In accordance with one or more aspects of this disclosure, GNSS processor 222 may determine the offset (e.g., the offset used to maintain GNSS clock 232) by estimating a quantity of missed pulses based on a system clock of mobile computing device 216. For instance, GNSS processor 222 may determine, based on a value of the system clock, an amount of time elapsed on the system clock since the most recent hardware pulse and divide the determined amount of time elapsed by the pre-determined time interval between successive pulses (which may the pre-determined time interval between successive radio frames scaled by N as discussed above) to obtain the estimated quantity of missed hardware pulses. For instance, if GNSS processor 222 determines that 35 milliseconds have passed on the system clock since receipt of a hardware pulse and the pre-determined time interval is 10 ms, GNSS processor 222 may determine the estimated quantity of missed hardware pulses as 3.
[0056] In some examples, GNSS processor 222 may determine whether any hardware pulses were missed responsive to receiving each new hardware pulse. For instance, in the example of FIG. 5, responsive to receiving hardware pulse 536E, GNSS processor 222 may determine what 42 ms have elapsed on the system clock (which in this example has ran 2 ms faster than
GNSS time) since receipt of hardware pulse 536A (i.e., the most recently received hardware pulse), determine that 3 hardware pulses were missed, and determine that GNSS time at time T5 is GNSS time at time T1 plus 4 times the pre-determined time interval between successive pulses (1 may be added to the determined quantity of missed pulses when performing the operation responsive to receiving a new hardware pulse). In this way, GNSS processor 222 may utilize the system clock to compensate for missed cellular frames and their corresponding hardware pulses.
[0057] GNSS processor 222 may receive the value of the system clock as local time 240 in FIG. 2 as coming from application processor 218. However, in some examples GNSS processors 222 may receive local time 240 from other components of mobile computing device 216 such as cellular modem 220. In some examples, application processor 218 may also receive hardware pulses from cellular modem 220. The receipt of such hardware pulses by application processor 218 may enable application processor 218 to more accurately calculate the amount of time elapsed on system clock 234 between hardware pulses. As such, in some examples, GNSS processor 222 may receive the calculated elapsed time (e.g., as opposed to calculating the elapsed time itself).
[0058] As discussed above, the local time from system clock 234 may be less accurate than GNSS time. In some examples, mobile computing device 216 may perform one or more operations to compensate for the reduced accuracy of system clock 234 (e.g., when calculating the estimated quantity of missed pulses and''or when generally maintaining GNSS clock 232). For instance, GNSS processor 222 or another component may adjust based on a rate ratio (R) of system clock 234, the determined amount of time elapsed on system clock 234. The rate ratio R may be a ratio of time passage of system clock 234 relative to GNSS clock 232. For instance, if the rate ratio R indicates that system clock 234 runs 10% faster than GNSS clock 232, GNSS processor 222 may multiply the determined amount of time elapsed on system clock 234 by 1 .1. In this way, aspects of this disclosure may compensate for inaccuracies of system clock 234, which may improve an accuracy of maintaining GNSS clock 232.
[0059] In some examples, GNSS processor 222 may utilize a scaled value of system clock 234 to determine an estimated current GNSS time at an arbitrary point. For instance, GNSS processor 222 may add a scaled amount of time elapsed on system clock 234 (R*Timemeasured- since-iast-puise) to a time on GNSS clock 232 when a last pulse was received by GNSS processor 222 (TimeGNss-at-iast-puise) to obtain the estimated current GNSS time (TimeGNss-estimated) in
accordance with the following equation TimeGNSs-estimated= TimeGNSs-at-iast-puise +
R*T imCmeasured-smce-last -pulse .
[0060] FIG. 6 is a flowchart illustrating example operations of an example mobile computing device in accordance with one or more aspects of the present disclosure. Although the example operation of FIG. 6 is described as being performed by mobile computing device 116 of FIG. 1, in other examples some or all of the example operation may be performed by another computing device.
[0061] GNSS processor 122 may track, based on signals received from GNSS satellites, a position of mobile computing device 116 (602). For instance, GNSS processor 122 may operate in a tracking mode in which GNSS processor 122 continually determines, based on signals 106, a latitude, longitude, and elevation of mobile computing device 116. As part of operating in the tracking mode, GNSS processor 122 may necessarily determine a GNSS time that is synchronized to GNSS clocks of GNSS satellites 104. As discussed above, when operating in the tracking mode, GNSS processor 122 may maintain a GNSS clock, such as GNSS clock 232 of FIG. 2, based on the determined GNSS time (e.g., keep GNSS clock 232 updated with the currently determined GNSS time).
[0062] GNSS processor 122 may determine whether tracking has been lost (604). For instance, GNSS processor 122 may determine whether or not signals 106 are strong enough for GNSS processor 122 to continue tracking the location of mobile computing device 116. Responsive to determining that tracking has not been lost (“No” branch of 604), GNSS processor 122 may continue to operate in the tracking mode (602).
[0063] Responsive to determining that tracking has been lost (“Yes” branch of 604), a GNSS time processor may maintain, based on hardware pulses output by modem 120, the GNSS clock (606). As discussed above, the GNSS time processor may be GNSS processor 122, may be one of system processors 118, or may be a discrete processor (e.g., separate from GNSS processor 122 and separate from an application processor of processors 118). The GNSS time processor may determine an offset, and determine a current time on GNSS clock 232 by adding the offset to a previous time on GNSS clock 232. The GNSS time processor may determine the offset based on hardware pulses output by modem 120 (e.g., temporal spacing between the pulses). For instance, modem 120 may output hardware pulses (e.g., to the GNSS time processor) responsive to receiving cellular radio frames, which may be spaced based on GNSS time maintained at cellular base stations.
[0064] GNSS processor 122 may acquire, based on a current time of GNSS clock 232, a first fix for the position of mobile computing device 116 (608). For instance, GNSS processor
122 may utilize the current time of GNSS clock 232 to select a search window for processing of received GNSS signals.
[0065] While described above as hardware pulses, the examples of this disclosure may not be so limited. For instance, in some examples, the GNSS time processor may maintain the GNSS clock based on software pulses (e.g., a software message or event) in addition to or in place of hardware pulses. As one example, cellular modem 220 may output such software pulses via one or more data busses, the GNSS time processor may receive the software pulses and maintain the GNSS clock in a similar fashion to the hardware pulses. While maintaining the GNSS clock based on hardware pulses may provide various advantages (e.g., avoiding software latency issues), maintaining the GNSS clock based on software pulses may also provide advantages (e.g., design simplification as an electrical route between the modem and the GNSS time processor may be omitted).
[0066] Aspects of this disclosure include the following examples.
[0067] Example 1. A method comprising: responsive to receiving, by a cellular modem of a mobile computing device, a cellular radio frame of a plurality of cellular radio frames, outputting, by the cellular modem, a pulse of a plurality of pulses to a global navigation satellite system (GNSS) time processor of the mobile computing device; maintaining, by the GNSS time processor and based on the pulse, a GNSS clock; receiving, by a GNSS processor, a GNSS time via the GNSS clock; and acquiring, by the GNSS processor and based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.
[0068] Example 2. The method of example 1, wherein maintaining the GNSS clock comprises: determining a previous GNSS time of the GNSS clock; determining, based on the pulse, an offset; and adding the offset to the previous GNSS time to determine the GNSS time.
[0069] Example 3. The method of example 2, wherein determining the offset comprises determining the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames.
[0070] Example 4. The method of example 2, wherein determining the offset comprises: determining, based on a system clock of the mobile computing device, an estimated quantity of missed pulses since the pulse; and determining, based on a product of a pre-determined time interval between successive pulses and the estimated quantity of missed pulses, the offset.
[0071] Example 5. The method of example 4, wherein determining the estimated quantity of missed pulses comprises: determining an amount of time elapsed on the system clock since the pulse; and dividing the amount of time elapsed by the pre-determined time interval between successive pulses to obtain the estimated quantity of missed pulses.
[0072] Example 6. The method of example 5, wherein determining the amount of time elapsed on the system clock since the pulse comprises: adjusting, based on a rate ratio of the system clock, the determined amount of time elapsed on the system clock.
[0073] Example 7. The method of example 6, further comprising: determining the rate ratio as a ratio of time passage of the system clock relative to the GNSS clock.
[0074] Example 8. The method of example 1 , wherein outputting the pulse further comprises outputting, by the cellular modem, the pulse to an application processor of the mobile computing device.
[0075] Example 9. The method of example 1 , wherein outputting the pulse comprises outputting, for each respective cellular radio frame of the plurality of cellular radio frames, a respective pulse of the plurality of pulses.
[0076] Example 10. The method of example 1, wherein outputting the pulse comprises: outputting, for every' Nth cellular radio frame of the plurality of cellular radio frames, a respective pulse of the plurality of pulses, wherein N is greater than 1; and not outputting pulses of the plurality of pulses for cellular radio frames other than the every Nth cellular radio frame.
[0077] Example 11. The method example 1, further comprising: tracking, by the GNSS processor and based on the first fix, a position of the mobile computing device.
[0078] Example 12. The method of example 1, wherein the plurality of pulses comprise a plurality of hardware pulses.
[0079] Example 13. A mobile computing device comprising: a cellular modem configured to output, responsive to receiving a cellular radio frame of a plurality of cellular radio frames, a pulse of a plurality of pulses to a global navigation satellite system (GNSS) time processor of the mobile computing device; and a GNSS time processor configured to maintain, and based on the pulse, a GNSS clock; and a GNSS processor configured to acquire, based on a GNSS time of the GNSS clock, a first fix for the mobile computing device.
[0080] Example 14. The mobile computing device of example 13, wherein, to maintain the GNSS clock, the GNSS time processor is configured to: determine a previous GNSS time of the GNSS clock; determine, based on the pulse and a pre-determined time interval between
successive cellular radio frames of the plurality of cellular radio frames, an offset; and add the offset to the previous GNSS time to determine the GNSS time.
[0081] Example 15. The mobile computing device of example 14, further comprising a system clock, wherein, to determine the offset, the GNSS time processor is configured to: determine, based on the system clock, an estimated quantity of missed pulses since the pulse; and determine, based on a product of a pre-determined time interval between successive pulses and the estimated quantity of missed pulses, the offset.
[0082] Example 16. The mobile computing device of example 13, wherein the GNSS processor is the GNSS time processor.
[0083] Example 17. The mobile computing device of example 13, wherein the GNSS processor is different than the GNSS time processor.
[0084] Example 18. The mobile computing device of example 17, wherein the GNSS time processor is a different processor than an application processor of the mobile computing device.
[0085] Example 19. The mobile computing device of example 17, wherein the GNSS time processor is a discrete processor located on a system on a chip (SoC) along with an application processor of the mobile computing device.
[0086] Example 20. A computer-readable storage medium storing instructions that, when executed, cause a global navigation satellite system (GNSS) time processor of a mobile computing device to: receive, from a cellular modem of the mobile computing device, a pulse of a plurality of pulses output by the cellular modem in response to receiving cellular radio frames; maintain, based on the pulse, a GNSS clock; and provide a GNSS time of the GNSS clock to a GNSS processor that acquires, based on the GNSS time of the GNSS clock, a first fix for the mobile computing device.
[0087] Example 21. A method comprising: maintaining, by a cellular modem of a mobile computing device and based on temporal spacing of a plurality of cellular radio frames, a global navigation satellite system (GNSS) clock; receiving, by a GNSS processor, a GNSS time via the GNSS clock; and acquiring, by the GNSS processor and based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.
[0088] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over, as one or more instructions or code, a computer- readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible
medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media, which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0089] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0090] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitiy. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0091] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware.
[0092] Various examples of the disclosure have been described. Any combination of the described systems, operations, or functions is contemplated. These and other examples are within the scope of the following claims.
Claims
1. A method comprising: responsive to receiving, by a cellular modem of a mobile computing device, a cellular radio frame of a plurality of cellular radio frames, outputting, by the cellular modem, a pulse of a plurality of pulses to a global navigation satellite system (GNSS) time processor of the mobile computing device; maintaining, by the GNSS time processor and based on the pulse, a GNSS clock; receiving, by a GNSS processor, a GNSS time via the GNSS clock; and acquiring, by the GNSS processor and based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.
2. The method of claim 1, wherein maintaining the GNSS clock comprises: determining a previous GNSS time of the GNSS clock; determining, based on the pulse, an offset; and adding the offset to the previous GNSS time to determine the GNSS time.
3. The method of claim 2, wherein determining the offset comprises determining the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames.
4. The method of claim 2, wherein determining the offset comprises: determining, based on a system clock of the mobile computing device, an estimated quantity of missed pulses since the pulse; and determining, based on a product of a pre-determined time interval between successive pulses and the estimated quantity of missed pulses, the offset.
5. The method of claim 4, wherein determining the estimated quantity of missed pulses comprises: determining an amount of time elapsed on the system clock since the pulse; and dividing the amount of time elapsed by the pre-determined time interval between successive pulses to obtain the estimated quantity of missed pulses.
6. The method of claim 5, wherein determining the amount of time elapsed on the system clock since the pulse comprises: adjusting, based on a rate ratio of the system clock, the determined amount of time elapsed on the system clock.
7. The method of claim 6, further comprising: determining the rate ratio as a ratio of time passage of the system clock relative to the GNSS clock.
8. The method of any of claims 1-7, wherein outputting the pulse further comprises outputting, by the cellular modem, the pulse to an application processor of the mobile computing device.
9. The method of any of claims 1-8, wherein outputting the pulse comprises outputting, for each respective cellular radio frame of the plurality of cellular radio frames, a respective pulse of the plurality of pulses.
10. The method of any of claims 1-9, wherein outputting the pulse comprises: outputting, for every Nth cellular radio frame of the plurality of cellular radio frames, a respective pulse of the plurality of pulses, wherein N is greater than 1; and not outputting pulses of the plurality of pulses for cellular radio frames other than the every Nth cellular radio frame.
11. The method of any of claims 1-10, further comprising: tracking, by the GNSS processor and based on the first fix, a position of the mobile computing device.
12. The method of any of claims 1-11, wherein the plurality of pulses comprise a plurality of hardware pulses.
13. A mobile computing device comprising: a cellular modem configured to output, responsive to receiving a cellular radio frame of a plurality of cellular radio frames, a pulse of a plurality of pulses to a global navigation satellite system (GNSS) time processor of the mobile computing device; and a GNSS time processor configured to maintain, and based on the pulse, a GNSS clock; and a GNSS processor configured to acquire, based on a GNSS time of the GNSS clock, a first fix for the mobile computing device.
14. The mobile computing device of claim 13, wherein, to maintain the GNSS clock, the GNSS time processor is configured to: determine a previous GNSS time of the GNSS clock; determine, based on the pulse and a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames, an offset; and add the offset to the previous GNSS time to determine the GNSS time.
15. The mobile computing device of claim 14, further comprising a system clock, wherein, to determine the offset, the GNSS time processor is configured to:
determine, based on the system clock, an estimated quantity of missed pulses since the pulse; and determine, based on a product of a pre-determined time interval between successive pulses and the estimated quantity of missed pulses, the offset.
16. The mobile computing device of any of claims 13-15, wherein the GNSS processor is the GNSS time processor.
17. The mobile computing device of any of claims 13-15, wherein the GNSS processor is different than the GNSS time processor.
18. The mobile computing device of claim 17, wherein the GNSS time processor is a different processor than an application processor of the mobile computing device.
19. The mobile computing device of claim 17, wherein the GNSS time processor is a discrete processor located on a system on a chip (SoC) along with an application processor of the mobile computing device.
20. A computer-readable storage medium storing instructions that, when executed, cause a global navigation satellite system (GNSS) time processor of a mobile computing device to: receive, from a cellular modem of the mobile computing device, a pulse of a plurality of pulses output by the cellular modem in response to receiving cellular radio frames; maintain, based on the pulse, a GNSS clock; and provide a GNSS time of the GNSS clock to a GNSS processor that acquires, based on the GNSS time of the GNSS clock, a first fix for the mobile computing device.
21. A method comprising; maintaining, by a cellular modem of a mobile computing device and based on temporal spacing of a plurality of cellular radio frames, a global navigation satellite system (GNSS) clock; receiving, by a GNSS processor, a GNSS time via the GNSS clock; and acquiring, by the GNSS processor and based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2024/034041 WO2025259287A1 (en) | 2024-06-14 | 2024-06-14 | Locally maintaining global navigation satellite system (gnss) time based on cellular radio signals |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP4689728A1 true EP4689728A1 (en) | 2026-02-11 |
Family
ID=91781988
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP24738190.8A Pending EP4689728A1 (en) | 2024-06-14 | 2024-06-14 | Locally maintaining global navigation satellite system (gnss) time based on cellular radio signals |
Country Status (2)
| Country | Link |
|---|---|
| EP (1) | EP4689728A1 (en) |
| WO (1) | WO2025259287A1 (en) |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6678510B2 (en) * | 2001-02-05 | 2004-01-13 | Nokia Mobile Phones Ltd. | Method, apparatus and system for GPS time synchronization using cellular signal bursts |
| US9182493B2 (en) * | 2011-03-11 | 2015-11-10 | Texas Instruments Incorporaed | Fine time assistance for global navigation satellite systems |
| US10795027B2 (en) * | 2015-10-09 | 2020-10-06 | Apple Inc. | Device, system and global navigation satellite system method using local fine time information |
-
2024
- 2024-06-14 EP EP24738190.8A patent/EP4689728A1/en active Pending
- 2024-06-14 WO PCT/US2024/034041 patent/WO2025259287A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| WO2025259287A1 (en) | 2025-12-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10725184B2 (en) | Methods and apparatuses for use with mode-switchable navigation | |
| WO2022095939A1 (en) | Gnss receiver and satellite capture tracking method | |
| US20110018762A1 (en) | Method and system for calibrating a local gnss clock using non-gnss system clocks in a gnss enabled mobile device | |
| US20120182181A1 (en) | Method and system for determining clock corrections | |
| WO2021163877A1 (en) | Methods and system of frequency synchronization mechanisms for integration terrestrial network and non terrestrial network | |
| US20080070497A1 (en) | System and/or method for acquisition of gnss signals | |
| WO2022063111A1 (en) | Global navigation satellite system (gnss) receiver, navigation information determining method, and related apparatus | |
| US10429515B2 (en) | Method and apparatus for GNSS signal tracking | |
| US20220244403A1 (en) | Method and apparatus for distributing high precision predicted satellite orbits and clocks data | |
| CN110907972B (en) | A position positioning and speed positioning method, device and positioning terminal | |
| US7446703B2 (en) | Apparatus and method for receiving GPS signals in a mobile terminal | |
| KR20080008991A (en) | Positioning device, search range calculation method and recording medium | |
| Linty et al. | Performance analysis of duty-cycle power saving techniques in GNSS mass-market receivers | |
| EP2932298A1 (en) | System and methods for reducing gnss receiver power usage by leveraging signals of opportunity to predict gnss availability | |
| US20060049982A1 (en) | Method of and system for reducing a time to fix in a location-enabled receiver | |
| US20120112960A1 (en) | Access point, mobile terminal, global navigation satellite system using the access point, and method of providing position information using the access point | |
| US20070046532A1 (en) | Satellite positioning system aiding using a secondary satellite receiver | |
| EP4689728A1 (en) | Locally maintaining global navigation satellite system (gnss) time based on cellular radio signals | |
| CN113447964B (en) | A RSMC receiving method based on RNSS assistance | |
| US20070273502A1 (en) | Gps Device | |
| Katsumoto et al. | GNSS System Design and Evaluation for IoT Applications | |
| US20250231301A1 (en) | Global navigation satellite system (gnss) aiding | |
| US8416894B2 (en) | Timing signal frequency management methods and apparatuses | |
| US12386078B2 (en) | Methods and apparatuses for improved acquisition of modern GNSS signals | |
| RU2431866C2 (en) | System and/or method for detecting global navigation satellite system signals |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: UNKNOWN |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| 17P | Request for examination filed |
Effective date: 20250512 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR |