[time-nuts] DIY Loran-C frequency receiver update

Poul-Henning Kamp phk at phk.freebsd.dk
Sun Sep 28 17:46:12 EDT 2008


Some time ago I send an email about my little project to create a
LORAN-C frequency receiver for time-nuts purposes, here is an update.

Hardware
--------

There is a number of interesting chips on the market now which has
both the necessary fast ADC and CPU power to do the job almost entirely
in software.

My current darling is the Analog.com ADUC7026, which seems to have the
best analog section, but which needs a 42 MHz clock input to sample
the antenna signal exactly 1 million times per second.

A close second is the www.st.com STM32F103RBT6 which needs a 56 MHz
clock to run the ADC at 1MSPS, getting 33% more CPU power at the
same time.

Both of these are available as cheap prototyping boards from
Olimex.com/Sparkfun.com, and I'll probably order one of each soon.

In both cases, an external PLL (the TAPR Clock-Block ?) will be necessary
from the atomic frequency to the clock input.

Software
--------

The major hurdle is the small amounts of RAM and relatively few
instructions available per sample on these chips.

Tonight I finally have a solution for the RAM issue: I now have
running code (530 lines of C, no floating point, much debugging)
that will find and integrate a single loran signal, using only
slightly more than GRI/10 32 bit integers of RAM.

With some luck, the 8Kb RAM of the aduc7020 would be enough for a
single-station receiver, the 20Kb of the STM32F103RBT6 is plenty.

The CPU power issue may be slightly worse, and I need to look at how
my C code looks when compiled for ARM7.   As long as I can get the
per-sample CPU consumption in the interrupt routine to leave a few
spare clock-cycles for non-interrupt processing, it will work.

Anyone interested in playing with my code can pick it up here:

	http://phk.freebsd.dk/misc/loran8.c

You will need a source of 1MSPS sampled VLF spectrum to run it, if
need be you can have a copy of the files I use for test, but it
would be more fun if you tried with a local signal, to see that the
code is not optimized for my location.


Poul-Henning

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.



More information about the time-nuts mailing list