[FH] Hopping questions for Andre and Hal, part two

Terry Fox tfox at knology.net
Wed Nov 19 18:45:33 CST 2014


Hey again guys,
I'd like to get some more info on your frequency hopping plans.  I'm hoping 
that Sandy will forward this, and my previous email, to Hal, since that's 
what Hal said that he wanted on the last Tuesday night tech-net.  I can be 
reached directly via wb4jfi at knology.net if you prefer.

There was some discussion about the accuracy and stability of the DDS master 
oscillator.  However, that only controls the RF carrier frequency.  To me, 
at least as important is the accuracy and stability of the Arduino, or other 
controller, clock.  The Arduino will be controlling WHEN the hopper changes 
frequency, and how long it dwells on any particular frequency.  If the hop 
rate is anything significant (more than about ten hops per second), 
variances in the Arduino clock frequency between devices will cause a slow 
divergence and eventual unlocking between devices.  The Arduino uses a cheap 
crystal or ceramic resonator for its clock by default.  I might suggest that 
the Arduino be driven by a divided version of the DDS clock, but that 
complicates the hardware, probably too much, as dividers that work to 125MHz 
are not easily found in DIP packages.  All the Arduino timing standards 
would also need to be adjusted.  125MHz is not evenly divisible to 16MHz.

Careful attention must also be used to make sure that there is NO variation 
in the hop programming.  In other words, conditional executions must be 
matched up with nop delays if the conditional is not met.

I'm not sure how to fix the Arduino clock issue mentioned above.

What type of mode/modulation is planned to be used?  AM would be one of the 
easiest, as one can AM modulate the DDS voltage reference input with a D/A, 
or even an I2C programmable pot/rheostat.  FM might be possible with the 
DDS, but the Arduino will not be fast enough to accomplish that with 
real-time audio.  CW is possible as well.  SSB would add complexity.

I heard Hal suggesting that Ten Meters is the target band, with AMRAD 
possibility requesting an STA for experimenting.  If that's not an option, I 
assume that the 420MHz band would be the target?  There are a lot of ways to 
get there, but mixing up to the target would probably be better than 
multiplying the signal.

Is there a target hop rate?  I assume that more than 10 hops/second are 
wanted.  The AD9850 can change frequency far quicker than the Arduino can 
push it (with a 16MHz clock).  As the hop rate approaches audio frequency 
rates, will some sort of audio gating or ramping up/down be required? 
Otherwise, won't artifacts of the hop rate show up in the demodulated audio?

Controlling the hop frequencies can be done either by pre-calculating the 
DDS FTWs and storing them in a look-up table (LUT), or calculating them on 
the fly.  Either way, you probably need 32-bit unsigned longs to store each 
frequency/FTW in the table.  If your sequence is derived by an eight-bit 
number, that leaves 256 table entries.  Multiplying those two together will 
require 1k bytes of storage for any single LUT.  The Arduino Uno has only 2k 
bytes of RAM available, so you are tying up half the total RAM storage if 
that's where the LUT is stored.

A couple alternatives would be to:
1.  Store the LUT in Program memory instead of RAM.  Downside is the Arduino 
must be reprogrammed to change the LUT.
2.  Store the LUT in an external EEPROM connected to the ARduino via I2C.  I 
do this for other LUTs in other projects.  The down side is the time it 
takes to read data via I2C.
3.  Cut back the amount of storage by using only ONE 32-bit value for a base 
frequency FTW, then use 16-bit storage values to hold only differences from 
that base frequency.
4.  Other ideas?

This doesn't get into how to choose a start (home) frequency, hopping start, 
hopping rate, maintaining sync, or other frequency hopping issues.

I'm interested to help out with the project, as it's good to see some 
experimentation happening.
73, Terry, WB4JFI



More information about the Tacos mailing list