The present invention relates to a method for processing signals from a global navigation satellite system (“GNSS”), such as the Global Positioning System (GPS), the Galileo System, or the GLONASS system, and more particularly to a method for processing such signals by the use of a conventional graphics processor. The present invention also relates to an article of manufacture comprising computer readable program code configured to process the signals from such a satellite navigation system.
GNSS is well known in the art. Presently, GPS is fully operational and GLONASS is functional but in some disarray; the Galileo System is beginning to be deployed. The present invention can be used with all types of GNSS, although for the purpose of explanation of the present invention, reference will be made to GPS.
For GPS applications, at any location on earth, the signals from four (4) different satellites can uniquely determine the position/time at the received location. The system is designed so that all satellites nominally transmit at the same time and on the same carrier frequency (1575.42 MHz). Multiple access, which is the ability to receive an individual satellite's signal in the presence of other signals on the same frequency, is accomplished by means of a unique repeating modulation, or “spreading code,” assigned to each satellite. This modulation enables the receiver to selectively decode the navigation data from a particular satellite, and serves as a unique identifier. Because each satellite is orbiting the earth and is moving relative to the receiver's location, the signal received from that satellite at that location and time will have a specific Doppler shift frequency with respect to the nominal carrier frequency. From the knowledge of the Doppler shift and the timing of the modulation code repetitions, or “code phase,” for each received satellite signal, the position/time at the particular location on earth can be determined using the principle of triangulation.
The mathematics of processing the signal(s) from the GNSS satellites is well known in the art. In general, the signal from each satellite must first be acquired, and once acquired, it must be tracked. For acquisition, the frequency spectrum is searched over many Doppler values, which are applied to locally stored replicas of the expected satellite signal. Thus, for example, a number of replicas are generated with frequency shifts of up to ±5 KHz from the expected frequency for each satellite. Each replica is characterized by its associated frequency shift. A frequency domain correlation operation is then performed between the received signal and an array of replica signals having the various Doppler shifted values. From this frequency domain correlation operation, a maximal value is determined and compared against a threshold. The location of a unique maximum that exceeds the threshold identifies both the Doppler frequency and the timing of the code modulation for a particular satellite signal. From this calculation, the information relative to Doppler shift and time delay is used to track the satellite so identified. Typically, this is used to adjust the tracking loops in the receiver, e.g. a phase lock loop and a delay lock loop. While in principle this calculation appears to be simple, the actual implementation is quite computationally intensive. Considerations for a practical GPS receiver must include not only cost, but also rapidity of the calculation, and in most cases power (usually battery) consumption, since these receivers are often intended to be used in portable devices.
One prior art processor is called a programmable graphics processor, such as those available from Nvidia Corporation of Santa Clara, Calif. A programmable graphics processor, as will be discussed in greater detail hereinafter, is characterized by a rasterizer unit, a texture unit, a pixel shader unit, and a frame buffer unit. The texture unit and the frame buffer unit are simply memory locations where data are stored. The rasterizer unit receives data indicating values of endpoints of an array in the texture unit and performs an interpolation between the endpoint values, and sends the result to the pixel shader unit. The pixel shader unit operates on the data read from the texture unit and stores the result in the frame buffer unit for ultimate display on a display unit such as an LCD display. The pixel shader unit is the programmable portion of the programmable graphics processor.
It is one aim of the present invention to provide a method of rapidly processing signals from a GNSS using the elements of a graphics processor.
In the present invention, a method of processing a signal from a navigation satellite first receives the signal from the navigation satellite and forms a received signal. The received signal is converted into a digitized form signal. The digitized form signal is transformed by a programmable graphics processor having a rasterizer unit, a pixel shader unit and a memory unit. A first array of a first corresponding data of the digitized form signal are stored in the memory unit. The first addresses and values of endpoints of the first array of the first corresponding data of the digitized form signal are supplied to the rasterizer unit. The rasterizer unit generates a plurality of interpolated values between values of endpoints of the first array. The plurality of interpolated values and values of endpoints for the first array correspond to addresses in the memory unit for the first array of first corresponding data of the digitized form signal. The pixel shader unit operates on the first array of first corresponding data of the digitized signal from the memory unit, based upon the plurality of interpolated values and values of the endpoints for the first array supplied from the rasterizer unit to form a resulting array of corresponding data. The resulting array is stored in the memory unit, at the first addresses.
The apparatus 10 comprises an antenna for receiving a signal from a GPS satellite. The signal, Shf, (Signal High Frequency) is received by the apparatus 10 and is processed through a conventional analog processing circuit 12, which includes circuits such as a low noise amplifier (LNA) and a frequency down converter circuit, to generate an analog processed signal, Sif (Signal Intermediate Frequency). The signal Sif is supplied to a second processing circuit 14 which may include further down conversion of the frequency Sif, and is then digitized to form a digitized form signal d(k) of the received signal Shf. Finally, the digitized form signal d(k) is supplied to a digital processing circuit 16, which may include one or more digital processors, such as DSP, microprocessor, state machine, and/or hardwired logic circuits. In the context of the present invention, the digital processing circuit 16 also includes a programmable graphics processor 20. Since all of the GNSS satellites operate at the same frequency, the apparatus 10 receives signals from all of the satellites (that are in view of the GPS receiver apparatus 10, or are received by the apparatus 10) and processes them in parallel.
The programmable graphics processor 20 shown in
In the method of the present invention, the programmable graphics processor 20 receives values of endpoints of an array. Thus, as shown in
The rasterizer unit 30 receives the inputted information (x1, y1), A1; (x2, y2), A2; (x3, y3), A3; and (x4, y4), A4, and operates on them by performing an interpolation of all the values between all of the endpoints A1, A2, A3 and A4. In essence, the rasterizer unit 30 performs an interpolation of all the values in the array bounded by the endpoint values of A1, A2, A3 and A4. The endpoint values A1, A2, A3, and A4, along with the interpolated values therebetween, are passed to the pixel shader unit 40. The pixel shader unit 40 reads the array of data from the texture memory unit 50 at the addresses defined by A1, A2, A3, A4 and all the values interpolated therebetween. An array of data is previously stored in the texture memory unit 50 at the location of A1, A2, A3 and A4.
The pixel shader unit 40 operates on the array of data from the texture memory unit 50 at the address location of A1, A2, A3 and A4, and then stores the result in the frame buffer memory unit 60 at the address location defined by (x1, y1); (x2, y2); (x3, y3); and (x4, y4).
In a preferred embodiment, because the programmable graphics processor 20 is particularly adapted to process data in the form of a triangle, the array of data whose endpoint values are defined by A1, A2, A3 and A4, are the endpoints of two triangles adjacent to one another.
One of the processes that the programmable graphics processor 20 can perform is a Fast Fourier Transform (FFT) or an inverse FFT of an array. An FFT operation or an inverse FFT operation is one of the operations commonly used in the processing of a signal from a GNSS satellite to determine the position/time of a location by a receiver. Thus, for example, in an FFT operation, the untransformed array of data is stored in the texture memory unit 50 at the address locations defined by the values of endpoints A1, A2, A3, A4, and the values therebetween interpolated by the rasterizer unit 30. The pixel shader unit 40 operates on the array of data read from the texture memory unit 50 to form an FFT transform thereof and store the results at the addresses (x1, y1); (x2, y2); (x3, y3); and (x4, y4) in the frame buffer memory unit 60. Typically, in an FFT (or inverse FFT) operation, as is well known in the art, many process steps are required. Thus, after the results are stored in the frame buffer memory unit 60, the results are then copied to the texture memory unit 50 at the address location defined by the endpoint values of the array A1, A2, A3, and A4. The programmable graphics processor 20 is then re-initiated. This iterative process continues until the FFT (or inverse FFT) operation is completed. The programming of the pixel shader unit 40 to perform the FFT operation (or an inverse FFT operation) is well known to those in the art.
Another process that the programmable graphics processor 20 can perform is a frequency domain correlation operation between two arrays of data: one array is the array of data received from the GNSS satellites, while another array of data is one of the local replicas having Doppler shifted values. The operation of frequency domain correlation operation between two arrays of data by the programmable graphics processor 20 includes forming an FFT (or an inverse FFT) operation on an array of data. The two arrays of data, (defined by the values of the endpoints A1, A2, A3, and A4, and by the endpoints B1, B2, B3, and B4) are stored in the texture memory unit 50 at locations defined by the values of endpoints A1, A2, A3, A4, and the values therebetween interpolated by the rasterizer unit 30, and by the values of endpoints B1, B2, B3, B4, and the values therebetween interpolated by the rasterizer unit 30. The two arrays of data are read from the texture memory unit 50 by the pixel shader unit 40, and operated thereon to form a frequency domain correlation thereof. The result is a single array, a collection of which comprises a three-dimensional figure, such as that depicted in
The frequency domain correlation operation operates between a signal received from one or more GNSS satellites and a locally generated replica signal of a particular satellite. If there is a correlation between the two arrays as a result of the frequency domain correlation operation, then there is a maximal value as shown in
Once the signal from a satellite is acquired, the satellite must be tracked as it traverses its orbit. One method to track a satellite is to generate time shifted correlator samples, one on either side of the time shift value of the code phase estimate used for tracking the satellite, and typically equally spaced from the code phase estimate. The time shifted correlator samples are then compared to one another and the time shift value is adjusted based upon the comparing step, such that the time shifted correlator samples remain equal to one another.
The use of a programmable graphics processor 20 to perform operations such as FFT transforms or inverse transforms on a single array of data or a frequency domain correlation on two arrays of data is advantageous because such programmable processors 20 are adapted to perform calculations in parallel, rapidly, thereby saving time. In addition, many GPS receivers 10 are part of an apparatus containing processors that perform other functions, such as cellular phone, PDA, digital camera, etc. This apparatus may have a programmable graphics processor 20 that is otherwise idling while the GPS receiver 10 is performing the functions of acquiring and tracking signals from various GPS satellites. Thus, the present invention more efficiently utilizes all of the resources of a portable electronic device in acquiring and tracking a GPS signal.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US06/34924 | 9/8/2006 | WO | 00 | 9/30/2009 |