[time-nuts] What's available in the way of DSP for new WWVB?

jimlux jimlux at earthlink.net
Fri Oct 16 20:54:35 UTC 2020


On 10/16/20 9:08 AM, Graham / KE9H wrote:
> On Tue, Oct 13, 2020 at 12:19 PM paul swed <paulswedb at gmail.com> wrote:
> 
>> Graham take a look earlier in the thread there are details about the
>> teensy. There is actually a lot of hardware out there today for little
>> money. Thats what makes the SDR DSP approach interesting and for me at
>> least the next thing to take a run at.
>> Regards
>> Paul
>> WB8TSL
>>
>>
>> Hi Paul:
> 
> I have looked at the Teensy 4.0 for use as a WWVB SDR receiver.
> 
> The problems I have are:
> 
> 1.) PJRC (the designer/manufacturer) has gone out of their way to block
> access to the standard ARM SWD programming interface, and you must go
> through the unique USB loader executable and programming interface if you
> want to program the board. It is awkward to use a normal development
> environment such as NXP's MCUXpresso with a standard programming interface.
> It is really intended for use with the provided Arduino programming
> environment.

I'm not so sure about that. There's quite a few folks using ARM 
toolchains and not using the USB loader.   For that matter, if you can 
generate an executable, in any fashion, you can use their loader.

I've done it with a 3.2, but not the 4.0, so maybe there's a hiccup.. 
But usually, the support forum has a wealth of information.




> 
> 2.) If you use the provided Arduino IDE/environment, then the provided DSP
> functions are restricted to the 16 bit versions. I prefer the ARM 32 bit
> versions to go with my 19 to 24 bit data converter.
> 
> 3.) I have found that the iMX RT1062 processor will only run at the
> advertised 600 MHz speed, if it is exclusively executing from onboard
> "tightly coupled RAM". If your program is large enough to require using the
> OCRAM, then it slows down to 1/4 speed.  If you need even more memory
> space, and you try to use the provided external QSPI Flash, then it slows
> down to about 1/32 speed. What it effectively does is run at some blend of
> those speeds as it fetches cache and variously accesses the different
> memories.  Memory planning is critical for maximum performance.


Always the case with microcontrollers...

I don't know that you'll need that fast, though.   I ran 32 point FFTs 
in real time at 100kHz sample rate on a Teensy 3.2 at 72 MHz (actually, 
it also ran on a Teensy 3.1 at 48 MHz), as well as a a FIR decimator.

For this application, you basically need to implement a Costas loop to 
demodulate the PSK signal.  So that's a few multiplies and adds per 
input sample for the mixers, a table lookup or CORDIC for the sin/cos, 
and then the loop filters.

The signal is narrow band too.. It might be easier to sample at 
something like 240 kHz (4x input signal), then do a downconvert to 
baseband I/Q (using ++--), a decimation with a CIC to a few kHz, then do 
your Costas loop.

One trick used in the GPS world (and also in the "IF sampling" world) is 
to sample at a rate which puts the aliased input signal at Fs/4. Some of 
JPL's radios sample a 112.5 MHz IF with a 50 MHz sampling clock, for 
instance.  The GPS people like to pick a sample rate that makes sure 
that even with maximum Doppler, the Doppler offset is always positive in 
the aliased passband.





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