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 _______________________________________________ time-nuts mailing list -- time-nuts@febo.com To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts and follow the instructions there.