[time-nuts] M12+T ASCII interface - I'm confused?

Bruce Griffiths bruce.griffiths at xtra.co.nz
Wed Nov 19 21:12:21 UTC 2008


Tom Van Baak wrote:
> Stephan,
>
> Ah, it's not a stupid question -- I think all of us who have written
> code to interface with GPS receivers have had to deal with this.
>
> Some GPS protocols use escape characters, but the Oncore
> binary protocol doesn't. There are five clues to robustly parsing
> a complete message:
>
> 1) starts with @@
> 2) ends with <cr><lf>
> 3) message length is known, based on message header
> 4) valid checksum
> 5) there may be a pause between sentences
>
> You can use all of these clues to "sync" to a serial data stream
> and accurately determine the start of the next message.
>
> As you already observed, just looking for @@ or <cr><lf> is
> not sufficient. Checking for <cr><lf>@@ is better, but still not
> perfect. To do it right you also need to include message length
> and checksum into the calculation. The length is knowable by
> looking at the message type in the header as it arrives.
>
> If you use a millisecond-level serial timeout that can help even
> more (since if the first two bytes after a pause are @@ you
> know it is a message start, not 16-bits of 0x4040 embedded
> binary data). There is a timing gap between some, but not all
> messages, so use this technique with care. You can also use
> the 1PPS pulse as a start of message hint.
>
> True, a robust solution is not FPGA-friendly, but probably not
> impossible, either. If you can't solve it, consider using a $1
> microcontroller (where this sort of message handling is trivial)
> between the receiver and your FPGA which would parse, edit,
> or reformat the messages to the FPGA's liking.
>
> /tvb
>
>
>   
No need to use an external processor just implement a processor within
the FPGA.
VHDL code for suitable processors is readily available.

Bruce

Bruce




More information about the Time-nuts_lists.febo.com mailing list