NMEA Decoder/Display

Hi,

Has anybody ever designed anything to decode and display GPS NMEA data coming out in ascii form from a UART?

Any ideas of where to start or how to go about decoding comma delimted ascii strings?

Thanks,

Al

Reply to
al99999
Loading thread data ...

I think this would typically be done using a processor rather than an FPGA. Even a small, single chip MCU would have enough horsepower to handle the 4800 bps data rate and control a display. But of course that depends on the interface to the display. Generating a VGA signal would take a bit more than sending a serial bit map to a small LCD.

If you really want to do this in an FPGA you would need to construct state diagrams for the logic that will parse the input stream and generate binary numbers from the characters. This will take some significant logic since it involves muliplications. Then you need to design a circuit that will draw lines in your display based on your current and last position, again, this can be a lot of logic to figure out.

I think if I was told to do this in an FPGA, I would construct a CPU in the FPGA (or use one of the CPUs provided by the FPGA vendors) and find C code to draw the display. The rest of the work is easy in software.

Reply to
rickman

A micro controller is much better suited for this type of job

Rene

--
Ing.Buero R.Tschaggelar - http://www.ibrtses.com
& commercial newsgroups - http://www.talkto.net
Reply to
Rene Tschaggelar

NiosII/e CPU, UART, a very small memory for your code, and you're nearly done - just write some C code that parses the sentences... as I remember the NMEA format should be easy enough where you can look for the starting sequence pretty easily to "sync" the CPU; no need for even a timer peripheral.

If you're comfortable with C coding I'd say this is an afternoon project; a more in RTL.

Jesse Kempa jkempa -at- altera -dot- com

Reply to
kempaj

Thanks for all the advice. I have a Xilinx spartan 3 starter kit that i'd like to use to implement this, but not EDK. Any suggestions for a simple CPU to use on the FPGA?

Thanks

Reply to
al99999

PicoBlaze should handle it if it's not too complex. You may run out of instruction space (the 8-bit PicoBlaze for Spartan 3 is limited to

1K instructions if memory serves me right). This does not require the EDK and is published as a reference design with source.

Regards, Gabor

Reply to
Gabor

Is there a C compiler for PicoBlaze?

Reply to
al99999

:) - No, not at that code size / core resource .... These are tiny cores, intended for simple SW assisting tasks..

There are assemblers, and the AS MacroAssembler now supports both the Xilinx PicoBlaze, and the open source Lattice Mico8.

See

formatting link

-jg

Reply to
Jim Granville

Actually, I think I would give a try to doing it as a state machine before I tackled the complexity of adding a CPU with memory and IO then trying to get a program written, compiled or assembled, loaded into the memory and finding a way to debug the whole thing. If you had a working CPU with toolset that was fully integrated, that would be different. But the sequence you are parsing should be pretty simple to do in a FSM (finite state machine).

What you do to update the display, that is a different matter. But then that might not be easy in software either. What is your display task like?

Reply to
rickman

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.