time-nuts@lists.febo.com

Discussion of precise time and frequency measurement

View all threads

GPS / GNSS front-end board

PM
Peter Monta
Tue, Jun 5, 2012 3:03 PM

I've been working on a front-end board suitable for GPS and other GNSS
systems.  It might be of interest to time-nuts given the application
to timing receivers.

Goals for the project:

  • high-quality signals from all current and near-future GNSS systems
    (GPS, Glonass, Galileo, Compass)

  • wide bandwidth---provides three 50 MHz channels, nominally at L1, L2, and L5

  • low cost---currently about $170 parts cost in single quantity, ~$110
    in qty 100

  • simplicity of use---emits streams of 2-bit samples to gigabit
    Ethernet, feeding a downstream software-receiver farm

  • two baseband clock inputs for use by timing receivers---any
    combination of 10 MHz, 100 MHz, 1 PPS

  • tunability typically from 0.7 to 2.2 GHz on each channel
    independently, for non-GPS applications such as radio astronomy

  • easy to fabricate and procure parts---4-layer PCB, everything
    available from friendly distributors such as Digikey and Mouser

  • free and open-source licensing: TAPR Open Hardware License version
    1.0 for hardware, GPLv2 for HDL, firmware, and software

So far I have a prototype board outputting bits from which GPS signals
on L1 and L2 have been successfully acquired and tracked.  Next steps
are to play with acquiring some GPS L5, Glonass, and Galileo signals,
and to apply some minor cleanups to the hardware for the next spin.

The current design files, including schematic, PCB layout and artwork,
HDL, support software, and a sample sky recording of simultaneous
wideband L1 and L2, are available here:

http://pmonta.com/blog/2012/06/04/gnss-firehose/
http://github.com/pmonta/GNSS_Firehose

The hardware and HDL are not quite in their final forms yet, but it
seems best to at least announce and get a discussion going so I can
benefit from any feedback, rather than waiting for every last thing to
be complete, which might be a few months down the road.

It would be nice to have a software-receiver chain that gives very
high quality GNSS code and phase observables for every open or
semi-open signal available.  These could be dumped to a RINEX file for
postprocessing or used in real time for navigation or timing.  Timing,
in particular, could benefit from dual- or triple-frequency
observables, multi-GNSS processing (especially with the Galileo clocks
as they are launched), and the availability of real-time clock
information from IGS in the NTRIP format.  The usual single-frequency
autonomous GPSDO seems a bit limited.  I'd like a multi-frequency,
multi-system GNSSDO that is getting up-to-the-second clock and orbit
data from the net.  While I have no direct experience with systems of
this type yet, from what I can tell, reliable real-time timing at the
few-ns level might be possible (relative to some notional
UTC(GPS+IGS/NTRIP+other_metadata) timescale), along with frequency
comparisons at the ~5e-15/day level with suitable postprocessing.

Increasingly, open-source software is filling in these areas.
Interesting projects include RTKLIB, GPSTk, and GNSS-SDR:

http://www.rtklib.com/
http://www.gpstk.org/
http://gnss-sdr.org/

The only thing missing seems to be inexpensive wideband front-end
hardware, including, by the way, inexpensive antennas with full
frequency coverage and stable phase center---still thinking about
that.  Certainly for L5/E5, wide bandwidth is required, and for L1 and
L2 as well when going the semicodeless route with the P(Y) signals.

One could get similar overall capability with two or three USRP boxes
(suitably synchronized), but this starts to get expensive.  I've used
a USRP1 for some time, and while it's a great tool, the bandwidth is
limited and it seems geared toward high-spectral-efficiency signals
with many (>=8) bits per sample.

Cheers,
Peter Monta

I've been working on a front-end board suitable for GPS and other GNSS systems. It might be of interest to time-nuts given the application to timing receivers. Goals for the project: - high-quality signals from all current and near-future GNSS systems (GPS, Glonass, Galileo, Compass) - wide bandwidth---provides three 50 MHz channels, nominally at L1, L2, and L5 - low cost---currently about $170 parts cost in single quantity, ~$110 in qty 100 - simplicity of use---emits streams of 2-bit samples to gigabit Ethernet, feeding a downstream software-receiver farm - two baseband clock inputs for use by timing receivers---any combination of 10 MHz, 100 MHz, 1 PPS - tunability typically from 0.7 to 2.2 GHz on each channel independently, for non-GPS applications such as radio astronomy - easy to fabricate and procure parts---4-layer PCB, everything available from friendly distributors such as Digikey and Mouser - free and open-source licensing: TAPR Open Hardware License version 1.0 for hardware, GPLv2 for HDL, firmware, and software So far I have a prototype board outputting bits from which GPS signals on L1 and L2 have been successfully acquired and tracked. Next steps are to play with acquiring some GPS L5, Glonass, and Galileo signals, and to apply some minor cleanups to the hardware for the next spin. The current design files, including schematic, PCB layout and artwork, HDL, support software, and a sample sky recording of simultaneous wideband L1 and L2, are available here: http://pmonta.com/blog/2012/06/04/gnss-firehose/ http://github.com/pmonta/GNSS_Firehose The hardware and HDL are not quite in their final forms yet, but it seems best to at least announce and get a discussion going so I can benefit from any feedback, rather than waiting for every last thing to be complete, which might be a few months down the road. It would be nice to have a software-receiver chain that gives very high quality GNSS code and phase observables for every open or semi-open signal available. These could be dumped to a RINEX file for postprocessing or used in real time for navigation or timing. Timing, in particular, could benefit from dual- or triple-frequency observables, multi-GNSS processing (especially with the Galileo clocks as they are launched), and the availability of real-time clock information from IGS in the NTRIP format. The usual single-frequency autonomous GPSDO seems a bit limited. I'd like a multi-frequency, multi-system GNSSDO that is getting up-to-the-second clock and orbit data from the net. While I have no direct experience with systems of this type yet, from what I can tell, reliable real-time timing at the few-ns level might be possible (relative to some notional UTC(GPS+IGS/NTRIP+other_metadata) timescale), along with frequency comparisons at the ~5e-15/day level with suitable postprocessing. Increasingly, open-source software is filling in these areas. Interesting projects include RTKLIB, GPSTk, and GNSS-SDR: http://www.rtklib.com/ http://www.gpstk.org/ http://gnss-sdr.org/ The only thing missing seems to be inexpensive wideband front-end hardware, including, by the way, inexpensive antennas with full frequency coverage and stable phase center---still thinking about that. Certainly for L5/E5, wide bandwidth is required, and for L1 and L2 as well when going the semicodeless route with the P(Y) signals. One could get similar overall capability with two or three USRP boxes (suitably synchronized), but this starts to get expensive. I've used a USRP1 for some time, and while it's a great tool, the bandwidth is limited and it seems geared toward high-spectral-efficiency signals with many (>=8) bits per sample. Cheers, Peter Monta
MT
Michael Tharp
Tue, Jun 5, 2012 5:48 PM

On 06/05/2012 11:03 AM, Peter Monta wrote:

I've been working on a front-end board suitable for GPS and other GNSS
systems.  It might be of interest to time-nuts given the application
to timing receivers.

Very impressive. Since I discovered time-nuts this is exactly what I
wanted to make, and you've gone and done all the hard stuff. If you're
planning on doing a bulk run, count me in.

What is the function of the clock/PPS inputs? Of course I'm primarily
interested in turning this type of frontend into a robust timing source,
particularly if all of the GPSDO functionality can be fit into the
existing FPGA.  This can be done either by clocking the GPS receiver
from the disciplined clock (e.g. Trimble Thunderbolt), or by using
independent clocks and estimating the resulting quantization error (most
timing-oriented receiver-only modules). In a from-scratch design I don't
think there's any reason not to use the disciplined clock, but there
could be lurking correlation problems. In any case, I'm curious as to
why these are piped into an ADC instead of being used to clock the
system (10mhz) and as an async input to a hypothetical phase comparator
in the FPGA (PPS).

I'm not entirely savvy as to what additions would be required to make
this design more useful for an embedded timing system. A bus that could
bring the data stream to a companion board with FPGA and/or MCU for
doing fixes without having to pass through Ethernet would be very
helpful. That way people with interesting ideas can just fab a board to
stick on a header and do their thing without a full gigabit Ethernet
stack, which essentially means a FPGA is required on the other side.

Disclaimer: I know very little about actually implementing a GPS
receiver, and about RF in general, but I know a cool project when I see
one and this has a lot of the elements needed for a fully open-source
timing receiver. Looking forward to further developments, and if there's
another list you're more active on do let me know.

-- m. tharp

On 06/05/2012 11:03 AM, Peter Monta wrote: > I've been working on a front-end board suitable for GPS and other GNSS > systems. It might be of interest to time-nuts given the application > to timing receivers. Very impressive. Since I discovered time-nuts this is exactly what I wanted to make, and you've gone and done all the hard stuff. If you're planning on doing a bulk run, count me in. What is the function of the clock/PPS inputs? Of course I'm primarily interested in turning this type of frontend into a robust timing source, particularly if all of the GPSDO functionality can be fit into the existing FPGA. This can be done either by clocking the GPS receiver from the disciplined clock (e.g. Trimble Thunderbolt), or by using independent clocks and estimating the resulting quantization error (most timing-oriented receiver-only modules). In a from-scratch design I don't think there's any reason not to use the disciplined clock, but there could be lurking correlation problems. In any case, I'm curious as to why these are piped into an ADC instead of being used to clock the system (10mhz) and as an async input to a hypothetical phase comparator in the FPGA (PPS). I'm not entirely savvy as to what additions would be required to make this design more useful for an embedded timing system. A bus that could bring the data stream to a companion board with FPGA and/or MCU for doing fixes without having to pass through Ethernet would be very helpful. That way people with interesting ideas can just fab a board to stick on a header and do their thing without a full gigabit Ethernet stack, which essentially means a FPGA is required on the other side. Disclaimer: I know very little about actually implementing a GPS receiver, and about RF in general, but I know a cool project when I see one and this has a lot of the elements needed for a fully open-source timing receiver. Looking forward to further developments, and if there's another list you're more active on do let me know. -- m. tharp
AK
Attila Kinali
Tue, Jun 5, 2012 7:31 PM

On Tue, 5 Jun 2012 08:03:53 -0700
Peter Monta pmonta@gmail.com wrote:

o far I have a prototype board outputting bits from which GPS signals
on L1 and L2 have been successfully acquired and tracked.  Next steps
are to play with acquiring some GPS L5, Glonass, and Galileo signals,
and to apply some minor cleanups to the hardware for the next spin.

The current design files, including schematic, PCB layout and artwork,
HDL, support software, and a sample sky recording of simultaneous
wideband L1 and L2, are available here:

http://pmonta.com/blog/2012/06/04/gnss-firehose/
http://github.com/pmonta/GNSS_Firehose

Very cool! I like it! And i imediatly buy one as soon as you produce some :-)

I had a cursory look at the schematics and i would propose the following
changes:

  • Connect all free pins of the FPGA to a 2.54mm header pin connector
    This would make extensions to the system a lot simpler.
    Up to the point of using a simple uC board for a full fledged
    GPSDO system. Additonally put onto this connecter an unused output
    of the LMK03806 and some power supply pins.

  • The XC6SLX9 is <10USD more expensive than the SLX6. I think the added
    value of having twice as much "real estate" would justify the additional
    price.

  • Connect the enable pin of the OSC1 to a 2-pin header, so it can be
    disabled with a simple jumper. And put a SMA connector into the path
    between OSC1 and the LMK03806 (probably not mounted by default) in order
    to make using an external clock source easier.

I assume that you are running the ADCs in multiplexed mode and the FPGA
at 128MHz clock?

How about design tools for the FPGA? As far as i can tell, the ISE WebPack
does not support the Spartan 6 family.

		Attila Kinali

--
Why does it take years to find the answers to
the questions one should have asked long ago?

On Tue, 5 Jun 2012 08:03:53 -0700 Peter Monta <pmonta@gmail.com> wrote: > o far I have a prototype board outputting bits from which GPS signals > on L1 and L2 have been successfully acquired and tracked. Next steps > are to play with acquiring some GPS L5, Glonass, and Galileo signals, > and to apply some minor cleanups to the hardware for the next spin. > > The current design files, including schematic, PCB layout and artwork, > HDL, support software, and a sample sky recording of simultaneous > wideband L1 and L2, are available here: > > http://pmonta.com/blog/2012/06/04/gnss-firehose/ > http://github.com/pmonta/GNSS_Firehose Very cool! I like it! And i imediatly buy one as soon as you produce some :-) I had a cursory look at the schematics and i would propose the following changes: * Connect all free pins of the FPGA to a 2.54mm header pin connector This would make extensions to the system a lot simpler. Up to the point of using a simple uC board for a full fledged GPSDO system. Additonally put onto this connecter an unused output of the LMK03806 and some power supply pins. * The XC6SLX9 is <10USD more expensive than the SLX6. I think the added value of having twice as much "real estate" would justify the additional price. * Connect the enable pin of the OSC1 to a 2-pin header, so it can be disabled with a simple jumper. And put a SMA connector into the path between OSC1 and the LMK03806 (probably not mounted by default) in order to make using an external clock source easier. I assume that you are running the ADCs in multiplexed mode and the FPGA at 128MHz clock? How about design tools for the FPGA? As far as i can tell, the ISE WebPack does not support the Spartan 6 family. Attila Kinali -- Why does it take years to find the answers to the questions one should have asked long ago?
MT
Michael Tharp
Tue, Jun 5, 2012 7:40 PM

On 06/05/2012 03:31 PM, Attila Kinali wrote:

  • The XC6SLX9 is<10USD more expensive than the SLX6. I think the added
    value of having twice as much "real estate" would justify the additional
    price.

Some vendors don't even stock the SLX6, including Digi-Key! Agreed
though, it would be neat if a CPU capable of doing fixes could be fit
onto the FPGA alongside. Might be impractical though, a DSP would
probably be more appropriate. Still, from what I can tell a FPGA makes a
decent PPS-level phase comparator. You can even gang them up with a
phase-shifted clock to get finer resolution.

  • Connect the enable pin of the OSC1 to a 2-pin header, so it can be
    disabled with a simple jumper. And put a SMA connector into the path
    between OSC1 and the LMK03806 (probably not mounted by default) in order
    to make using an external clock source easier.

I assume that you are running the ADCs in multiplexed mode and the FPGA
at 128MHz clock?

How about design tools for the FPGA? As far as i can tell, the ISE WebPack
does not support the Spartan 6 family.

WebPack does support XC6, or at least the mid-range parts and below. I
have a XC6SLX45 dev board and have no problems generating bitstreams.

-- m. tharp

On 06/05/2012 03:31 PM, Attila Kinali wrote: > * The XC6SLX9 is<10USD more expensive than the SLX6. I think the added > value of having twice as much "real estate" would justify the additional > price. Some vendors don't even stock the SLX6, including Digi-Key! Agreed though, it would be neat if a CPU capable of doing fixes could be fit onto the FPGA alongside. Might be impractical though, a DSP would probably be more appropriate. Still, from what I can tell a FPGA makes a decent PPS-level phase comparator. You can even gang them up with a phase-shifted clock to get finer resolution. > * Connect the enable pin of the OSC1 to a 2-pin header, so it can be > disabled with a simple jumper. And put a SMA connector into the path > between OSC1 and the LMK03806 (probably not mounted by default) in order > to make using an external clock source easier. > > I assume that you are running the ADCs in multiplexed mode and the FPGA > at 128MHz clock? > > How about design tools for the FPGA? As far as i can tell, the ISE WebPack > does not support the Spartan 6 family. WebPack does support XC6, or at least the mid-range parts and below. I have a XC6SLX45 dev board and have no problems generating bitstreams. -- m. tharp
AK
Attila Kinali
Tue, Jun 5, 2012 7:43 PM

On Tue, 05 Jun 2012 13:48:17 -0400
Michael Tharp gxti@partiallystapled.com wrote:

Disclaimer: I know very little about actually implementing a GPS
receiver, and about RF in general, but I know a cool project when I see
one and this has a lot of the elements needed for a fully open-source
timing receiver. Looking forward to further developments, and if there's
another list you're more active on do let me know.

Get yourself a copy of "A software defined GPS and Galileo Receiver"
by Borre et. al.[1] It explains how GPS signals are structured,
received and decoded in a quite simple language. It is nearly a
step by step receip on how to build a complete receiver.

		Attila Kinali

[1] http://www.springerlink.com/content/w5151k87k3043l63/

--
Why does it take years to find the answers to
the questions one should have asked long ago?

On Tue, 05 Jun 2012 13:48:17 -0400 Michael Tharp <gxti@partiallystapled.com> wrote: > Disclaimer: I know very little about actually implementing a GPS > receiver, and about RF in general, but I know a cool project when I see > one and this has a lot of the elements needed for a fully open-source > timing receiver. Looking forward to further developments, and if there's > another list you're more active on do let me know. Get yourself a copy of "A software defined GPS and Galileo Receiver" by Borre et. al.[1] It explains how GPS signals are structured, received and decoded in a quite simple language. It is nearly a step by step receip on how to build a complete receiver. Attila Kinali [1] http://www.springerlink.com/content/w5151k87k3043l63/ -- Why does it take years to find the answers to the questions one should have asked long ago?
AK
Attila Kinali
Tue, Jun 5, 2012 7:53 PM

On Tue, 05 Jun 2012 15:40:48 -0400
Michael Tharp gxti@partiallystapled.com wrote:

On 06/05/2012 03:31 PM, Attila Kinali wrote:

  • The XC6SLX9 is<10USD more expensive than the SLX6. I think the added
    value of having twice as much "real estate" would justify the additional
    price.

Some vendors don't even stock the SLX6, including Digi-Key! Agreed
though, it would be neat if a CPU capable of doing fixes could be fit
onto the FPGA alongside. Might be impractical though, a DSP would
probably be more appropriate. Still, from what I can tell a FPGA makes a
decent PPS-level phase comparator. You can even gang them up with a
phase-shifted clock to get finer resolution.

Yes, there are at least half a dozen ways i can think of to use this
board in combination with other boards or various uC and DSPs. And
everyone has their own pet uC/DSP/board that he'd like to use.
Thus i think some easily accessible header pins would be better than
putting a uC directly on the board.

How about design tools for the FPGA? As far as i can tell, the ISE WebPack
does not support the Spartan 6 family.

WebPack does support XC6, or at least the mid-range parts and below. I
have a XC6SLX45 dev board and have no problems generating bitstreams.

Cool. It thought it was strange that the WebPack FAQ listed only spartan3.
But i couldnt find any other reference listing the supported FPGAs.

		Attila Kinali

		

--
Why does it take years to find the answers to
the questions one should have asked long ago?

On Tue, 05 Jun 2012 15:40:48 -0400 Michael Tharp <gxti@partiallystapled.com> wrote: > On 06/05/2012 03:31 PM, Attila Kinali wrote: > > * The XC6SLX9 is<10USD more expensive than the SLX6. I think the added > > value of having twice as much "real estate" would justify the additional > > price. > > Some vendors don't even stock the SLX6, including Digi-Key! Agreed > though, it would be neat if a CPU capable of doing fixes could be fit > onto the FPGA alongside. Might be impractical though, a DSP would > probably be more appropriate. Still, from what I can tell a FPGA makes a > decent PPS-level phase comparator. You can even gang them up with a > phase-shifted clock to get finer resolution. Yes, there are at least half a dozen ways i can think of to use this board in combination with other boards or various uC and DSPs. And everyone has their own pet uC/DSP/board that he'd like to use. Thus i think some easily accessible header pins would be better than putting a uC directly on the board. > > How about design tools for the FPGA? As far as i can tell, the ISE WebPack > > does not support the Spartan 6 family. > > WebPack does support XC6, or at least the mid-range parts and below. I > have a XC6SLX45 dev board and have no problems generating bitstreams. Cool. It thought it was strange that the WebPack FAQ listed only spartan3. But i couldnt find any other reference listing the supported FPGAs. Attila Kinali -- Why does it take years to find the answers to the questions one should have asked long ago?
AK
Attila Kinali
Wed, Jun 6, 2012 1:07 PM

On Tue, 5 Jun 2012 21:31:32 +0200
Attila Kinali attila@kinali.ch wrote:

I had a cursory look at the schematics and i would propose the following
changes:

Addendum:

Could you also add just the option of a power splitter at the input?
This would allow to use one antenna while using a cheaper SMB mounted
power splitter instead of one connected using SMA connectors.

Something easily available and "cheap", like the stuff from minicircuits
like the SCN-3-16 would be fine i guess.

		Attila Kinali

--
It is upon moral qualities that a society is ultimately founded. All
the prosperity and technological sophistication in the world is of no
use without that foundation.
-- Miss Matheson, The Diamond Age, Neil Stephenson

On Tue, 5 Jun 2012 21:31:32 +0200 Attila Kinali <attila@kinali.ch> wrote: > I had a cursory look at the schematics and i would propose the following > changes: > Addendum: Could you also add just the option of a power splitter at the input? This would allow to use one antenna while using a cheaper SMB mounted power splitter instead of one connected using SMA connectors. Something easily available and "cheap", like the stuff from minicircuits like the SCN-3-16 would be fine i guess. Attila Kinali -- It is upon moral qualities that a society is ultimately founded. All the prosperity and technological sophistication in the world is of no use without that foundation. -- Miss Matheson, The Diamond Age, Neil Stephenson
PM
Peter Monta
Wed, Jun 6, 2012 4:32 PM

Hi Michael,

What is the function of the clock/PPS inputs?

They could be used to compare a master station clock with the GPS
signals.  It seems like a good idea to put the clock and PPS through
the same path as the satellite signals.  The goal was to permit a good
comparison between GPS and any clock one cares to supply---if, at the
system level, one wants to use the data to discipline this clock, that
would be straightforward enough I guess.  I think it depends on the
application as to whether to adopt a postprocessing mindset or to
correct in real time.

By the way, the FPGA would not be using these 10 MHz and PPS samples
for any internal purpose; indeed they are optional inputs.  They would
be forwarded to Ethernet just like the satellite signals, and it's up
to a downstream processor to estimate the difference between the two.
That way the FPGA is very simple, but nevertheless supplies a
sufficient statistic for any downstream computation.

In any case, I'm curious as to why these are piped
into an ADC instead of being used to clock the system (10mhz) and as an
async input to a hypothetical phase comparator in the FPGA (PPS).

I'm a little leery of piping things directly to the FPGA for jitter
reasons.  The ADCs are really good here, but the FPGA, because of all
the digital noise wandering about on the die, can have tens or
hundreds of ps of jitter.  Also, if the PPS is sent to the FPGA, there
are limited means of interpolating the PPS edge to finer resolution
than one FPGA clock cycle.  One could sample the PPS with a fast clock
multiplied up from some other system clock, but the Spartan-6 internal
multipliers max out out at around 350 MHz, limiting resolution to 3 ns
(or 1.5 ns with a DDR IOB).  I think one could interpolate the ADC
values of the PPS edge to better than that.  (There are various heroic
schemes of sending signals through the carry chain or other delay
resource, sampling that, and recovering a more accurate time, but
they're riskier and require calibration.)

Of course I'm primarily
interested in turning this type of frontend into a robust timing source,
particularly if all of the GPSDO functionality can be fit into the existing
FPGA.

That would be a significant task, putting the whole GNSS receiver into
the FPGA, and would probably require a bigger chip.  Maybe some
compromise approach, such as putting correlators and tracking loops on
the FPGA but supplying assistance information from outside.

I'm not entirely savvy as to what additions would be required to make this
design more useful for an embedded timing system. A bus that could bring the
data stream to a companion board with FPGA and/or MCU for doing fixes
without having to pass through Ethernet would be very helpful. That way
people with interesting ideas can just fab a board to stick on a header and
do their thing without a full gigabit Ethernet stack, which essentially
means a FPGA is required on the other side.

Yes, there are various good options for implementing the receiver
processing.  For the near term I'll be happy to get a few hours of
L1/L2/L5 on disk, produce a nice RINEX file, and do some
postprocessing.  But for a real-time processor, I have this hazy
notion of maybe broadcasting the Ethernet to a collection of ARM
chips.  That would be a lot less bulky than a pile of PCs, even the
nifty new micro motherboards one can get these days, but still would
offer a convenient software environment (Linux, etc.) and the SSE-like
instructions for fast correlators, which are offered with the recent
ARM cores like Cortex-A8 and A9.

Cheers,
Peter

Hi Michael, > What is the function of the clock/PPS inputs? They could be used to compare a master station clock with the GPS signals. It seems like a good idea to put the clock and PPS through the same path as the satellite signals. The goal was to permit a good comparison between GPS and any clock one cares to supply---if, at the system level, one wants to use the data to discipline this clock, that would be straightforward enough I guess. I think it depends on the application as to whether to adopt a postprocessing mindset or to correct in real time. By the way, the FPGA would not be using these 10 MHz and PPS samples for any internal purpose; indeed they are optional inputs. They would be forwarded to Ethernet just like the satellite signals, and it's up to a downstream processor to estimate the difference between the two. That way the FPGA is very simple, but nevertheless supplies a sufficient statistic for any downstream computation. > In any case, I'm curious as to why these are piped > into an ADC instead of being used to clock the system (10mhz) and as an > async input to a hypothetical phase comparator in the FPGA (PPS). I'm a little leery of piping things directly to the FPGA for jitter reasons. The ADCs are really good here, but the FPGA, because of all the digital noise wandering about on the die, can have tens or hundreds of ps of jitter. Also, if the PPS is sent to the FPGA, there are limited means of interpolating the PPS edge to finer resolution than one FPGA clock cycle. One could sample the PPS with a fast clock multiplied up from some other system clock, but the Spartan-6 internal multipliers max out out at around 350 MHz, limiting resolution to 3 ns (or 1.5 ns with a DDR IOB). I think one could interpolate the ADC values of the PPS edge to better than that. (There are various heroic schemes of sending signals through the carry chain or other delay resource, sampling that, and recovering a more accurate time, but they're riskier and require calibration.) > Of course I'm primarily > interested in turning this type of frontend into a robust timing source, > particularly if all of the GPSDO functionality can be fit into the existing > FPGA. That would be a significant task, putting the whole GNSS receiver into the FPGA, and would probably require a bigger chip. Maybe some compromise approach, such as putting correlators and tracking loops on the FPGA but supplying assistance information from outside. > I'm not entirely savvy as to what additions would be required to make this > design more useful for an embedded timing system. A bus that could bring the > data stream to a companion board with FPGA and/or MCU for doing fixes > without having to pass through Ethernet would be very helpful. That way > people with interesting ideas can just fab a board to stick on a header and > do their thing without a full gigabit Ethernet stack, which essentially > means a FPGA is required on the other side. Yes, there are various good options for implementing the receiver processing. For the near term I'll be happy to get a few hours of L1/L2/L5 on disk, produce a nice RINEX file, and do some postprocessing. But for a real-time processor, I have this hazy notion of maybe broadcasting the Ethernet to a collection of ARM chips. That would be a lot less bulky than a pile of PCs, even the nifty new micro motherboards one can get these days, but still would offer a convenient software environment (Linux, etc.) and the SSE-like instructions for fast correlators, which are offered with the recent ARM cores like Cortex-A8 and A9. Cheers, Peter
EG
Eric Garner
Wed, Jun 6, 2012 4:33 PM

On Tue, Jun 5, 2012 at 12:53 PM, Attila Kinali attila@kinali.ch wrote:

On Tue, 05 Jun 2012 15:40:48 -0400
Michael Tharp gxti@partiallystapled.com wrote:

On 06/05/2012 03:31 PM, Attila Kinali wrote:

  • The XC6SLX9 is<10USD more expensive than the SLX6. I think the added
       value of having twice as much "real estate" would justify the additional
       price.

Some vendors don't even stock the SLX6, including Digi-Key! Agreed
though, it would be neat if a CPU capable of doing fixes could be fit
onto the FPGA alongside. Might be impractical though, a DSP would
probably be more appropriate. Still, from what I can tell a FPGA makes a
decent PPS-level phase comparator. You can even gang them up with a
phase-shifted clock to get finer resolution.

Yes, there are at least half a dozen ways i can think of to use this
board in combination with other boards or various uC and DSPs. And
everyone has their own pet uC/DSP/board that he'd like to use.
Thus i think some easily accessible header pins would be better than
putting a uC directly on the board.

How about design tools for the FPGA? As far as i can tell, the ISE WebPack
does not support the Spartan 6 family.

WebPack does support XC6, or at least the mid-range parts and below. I
have a XC6SLX45 dev board and have no problems generating bitstreams.

Cool. It thought it was strange that the WebPack FAQ listed only spartan3.
But i couldnt find any other reference listing the supported FPGAs.

                       Attila Kinali

--
Why does it take years to find the answers to
the questions one should have asked long ago?


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.

I just accessed the book on SpringerLink and it looks fantastic.
Fortunately my company's library lets me have full access to the text
of the book. However, it does not appear that they let me download the
matlab code that comes on the CD that comes with the book. do you know
if it's available somewhere?

--
--Eric


Eric Garner

On Tue, Jun 5, 2012 at 12:53 PM, Attila Kinali <attila@kinali.ch> wrote: > On Tue, 05 Jun 2012 15:40:48 -0400 > Michael Tharp <gxti@partiallystapled.com> wrote: > >> On 06/05/2012 03:31 PM, Attila Kinali wrote: >> > * The XC6SLX9 is<10USD more expensive than the SLX6. I think the added >> >    value of having twice as much "real estate" would justify the additional >> >    price. >> >> Some vendors don't even stock the SLX6, including Digi-Key! Agreed >> though, it would be neat if a CPU capable of doing fixes could be fit >> onto the FPGA alongside. Might be impractical though, a DSP would >> probably be more appropriate. Still, from what I can tell a FPGA makes a >> decent PPS-level phase comparator. You can even gang them up with a >> phase-shifted clock to get finer resolution. > > Yes, there are at least half a dozen ways i can think of to use this > board in combination with other boards or various uC and DSPs. And > everyone has their own pet uC/DSP/board that he'd like to use. > Thus i think some easily accessible header pins would be better than > putting a uC directly on the board. > >> > How about design tools for the FPGA? As far as i can tell, the ISE WebPack >> > does not support the Spartan 6 family. >> >> WebPack does support XC6, or at least the mid-range parts and below. I >> have a XC6SLX45 dev board and have no problems generating bitstreams. > > Cool. It thought it was strange that the WebPack FAQ listed only spartan3. > But i couldnt find any other reference listing the supported FPGAs. > >                        Attila Kinali > > > -- > Why does it take years to find the answers to > the questions one should have asked long ago? > > _______________________________________________ > 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. I just accessed the book on SpringerLink and it looks fantastic. Fortunately my company's library lets me have full access to the text of the book. However, it does not appear that they let me download the matlab code that comes on the CD that comes with the book. do you know if it's available somewhere? -- --Eric _________________________________________ Eric Garner
PM
Peter Monta
Wed, Jun 6, 2012 5:08 PM

Hi Attila,

  • Connect all free pins of the FPGA to a 2.54mm header pin connector
     This would make extensions to the system a lot simpler.
     Up to the point of using a simple uC board for a full fledged
     GPSDO system. Additonally put onto this connecter an unused output
     of the LMK03806 and some power supply pins.

Sure, that sounds reasonable---I'll do that.  But just a caution that
it will need some work to realize a fully-fledged GPSDO, even with an
external microcontroller board.  At a minimum, the FPGA would need
NCOs, code generators, correlators, and tracking loops, which people
are free to do of course.

  • The XC6SLX9 is <10USD more expensive than the SLX6. I think the added
     value of having twice as much "real estate" would justify the additional
     price.

The LX9 is pin-compatible, so substituting it in would be no problem
(actually I have a few).  The current design easily fits in the LX4,
though.  I guess it would be up to the user which chip to supply.  I
did consider using a BGA footprint, which would allow some of the
larger FPGAs in the family, but BGAs are not very prototype-friendly.
(Nor are QFNs with exposed pad, for that matter, but there was no
alternative there.)

  • Connect the enable pin of the OSC1 to a 2-pin header, so it can be
     disabled with a simple jumper. And put a SMA connector into the path
     between OSC1 and the LMK03806 (probably not mounted by default) in order
     to make using an external clock source easier.

I was thinking to do a resistor-programmable option to either use the
10 MHz or the TCXO as input to the LMK03806.  I'm not sure there's a
huge advantage to using a more stable clock, though.  The TCXO is
probably plenty good enough for keeping the carrier PLLs in
lock---it's a fairly high-end TCXO which is not cheap ($18).  Using
the 10 MHz (or 100 MHz) does have the merit of potentially saving the
cost of the TCXO, but many users would probably want a board that just
works, without a lot of external doodads to hook up.

I assume that you are running the ADCs in multiplexed mode and the FPGA
at 128MHz clock?

Yes.  Actually the FPGA runs at 64 MHz and the I/O cells are used in
DDR mode so that a sample is taken on both rising and falling edge.

Cheers,
Peter

Hi Attila, > * Connect all free pins of the FPGA to a 2.54mm header pin connector >  This would make extensions to the system a lot simpler. >  Up to the point of using a simple uC board for a full fledged >  GPSDO system. Additonally put onto this connecter an unused output >  of the LMK03806 and some power supply pins. Sure, that sounds reasonable---I'll do that. But just a caution that it will need some work to realize a fully-fledged GPSDO, even with an external microcontroller board. At a minimum, the FPGA would need NCOs, code generators, correlators, and tracking loops, which people are free to do of course. > * The XC6SLX9 is <10USD more expensive than the SLX6. I think the added >  value of having twice as much "real estate" would justify the additional >  price. The LX9 is pin-compatible, so substituting it in would be no problem (actually I have a few). The current design easily fits in the LX4, though. I guess it would be up to the user which chip to supply. I did consider using a BGA footprint, which would allow some of the larger FPGAs in the family, but BGAs are not very prototype-friendly. (Nor are QFNs with exposed pad, for that matter, but there was no alternative there.) > * Connect the enable pin of the OSC1 to a 2-pin header, so it can be >  disabled with a simple jumper. And put a SMA connector into the path >  between OSC1 and the LMK03806 (probably not mounted by default) in order >  to make using an external clock source easier. I was thinking to do a resistor-programmable option to either use the 10 MHz or the TCXO as input to the LMK03806. I'm not sure there's a huge advantage to using a more stable clock, though. The TCXO is probably plenty good enough for keeping the carrier PLLs in lock---it's a fairly high-end TCXO which is not cheap ($18). Using the 10 MHz (or 100 MHz) does have the merit of potentially saving the cost of the TCXO, but many users would probably want a board that just works, without a lot of external doodads to hook up. > I assume that you are running the ADCs in multiplexed mode and the FPGA > at 128MHz clock? Yes. Actually the FPGA runs at 64 MHz and the I/O cells are used in DDR mode so that a sample is taken on both rising and falling edge. Cheers, Peter