GPS is not a new word to lots of people. Many people also have experience of
using commercial GPS receiver. But how the GPS receiver works remains a secret
to most people. If you are a curious guy like me, this project can help you understand
what happens in the GPS receiver.
This project is based on Clifford Kelly's Opensource GPS receiver project.
I think the most amazing thing about his project is that he implements most GPS processing in
PC, like tracking loop, navigation algorithm. This is very helpful to GPS receiver
developper and researcher, because one can save the raw data of any stage which interests
him/her for further analysis.
But his project is based on ISA bus and DOS OS. They are really out-dated. It's hard to
find a motherboard with ISA bus running DOS OS now. When I began to read his code, I found
that if I can transfer his code to current main-stream popular interface and operating system,
I will have a very clear understanding of GPS receiver's structure, processing, algorithm,
also I will make one more choice for future student like me .
The motivation of my work is just my interest in this project, not driven by commercial profit.
That is why I can make all my hardware and software design open to public. I learned a lot from this project.
The more I learned from this project,
the more interested I am (kind of positive feedback :-)). I choose USB as my hardware interface for two reasons:
First is the easy use of USB interface, USB device is real plug_play, no hassle to set IO, INT, DMA,
hot plug, and no hassle to open case (this is really desirable!!);
Second is my interest in USB design. I am always interested with new technology.
I have experience of designs on serial port, parallel port, ISA bus, PCI bus, but never USB. Why not
try USB this time?;
The whole project includes hardware and software:
Hardware board and firmware finish USB protocal, read and write GP2021 registers, interpret PC's command to control
GP2021;
Device driver is the media between application software and hardware;
Application software finishs most GPS-related functions, including tracking loop,
pseudorange calculation, navigation algorithm, P.V.T resolution, etc.
The following graph shows the topology of whole project:
Currently I only have the Windows2000/WindowsXP version. If I have time, I will develop
Linux version. The obstacle for that is the device driver under Linux. I have no
experience of that (so I have one more thing to learn in my to-learn list :-( ).
Current design has the following problems:
1. Due to the limit of USB1.1 communication speed and on-chip ram size of DS89C420,
I can only implement 6 channel tracking loop;
2. Due to hardware limit, sometimes(although seldomly) pseudorange calculation is wrong, which gives totally
wrong information of user's location;
3. The hardware only work well on OHCI USB controller. It won't work on UHCI USB controller;
(Want to know more, click OHCI .vs. UHCI )