[time-nuts] FE-5680A DDS Board/PIC Code

Magnus Danielson magnus at rubidium.dyndns.org
Wed Feb 27 21:49:55 EST 2013


On 02/18/2013 10:32 PM, Herbert Poetzl wrote:
>
> I'm new to the time-nuts community, so I simply start
> with a short info on how I got into this situation :)
> (skip forward to<ONTOPIC>  if not interested)
>
> Not long ago, I decided to build a reasonably good
> frequency counter for my personal use and maybe if
> the result is simple and elegant, I'll publish the
> details so that everybody can build one ...
>
> It was clear to me, that it had to be able to count
> up to at least 1GHz and thus show at least nine,
> better ten significant digits, so a precise time base
> is required.
>
> After some online searches and investigations, my
> best options seemed to get a very stable oscillator
> and a high quality time reference to sync with, which
> in turn brought me to the idea to use a cheap rubidium
> normal and somehow tune/measure/sync it via GPS or
> DCF-77/MSF-60.
>
> Reading a lot of documentation and blogs from all over
> the world (sometimes in translation :) shed some light
> on the rubidium normal requirements, which I defined as:
>
>   - has to have a 10MHz output not just the 1PPS
>   - has to be programmable (i.e. can be tuned)
>   - must be cheap
>
> I quickly found two different RB standard models,
> readily available on ebay for a reasonable price,
> namely the Efratom FRS-C and the FEI FE-5680A.
> I finally decided to go with the FE-5680A, mainly
> because I liked the package. A seller was quickly
> found offering something titled:
>
>   'FE-5680A Rubidium Atomic Frequency Standard
>    Oscillator Transceivers 10Mhz Out'
>   'Programmable from 1Hz to 20MHz'
>
> Little did I know what that actually meant ...
>
> When the units (I ordered two of them) arrived, I
> couldn't wait to test if they actually work and get
> a lock, so I quickly wired them up (according to the
> pinout) and provided them with the advised 15V at
> up to 2A each. To my astonishment, they heated up
> rather quickly and got a lock in a little under two
> minutes, so I happily got my scope out to check the
> 10MHz signal, just to find that there is no such
> signal available on the 9pin D-sub connector.
>
> Measuring pins against ground (pin 2) and 15Vx (pin 1)
> I figured that neither pin 7 (10MHz) nor pin 8/9
> (the rs232 interface for programming) was connected.
> and to my great disappointment, pin 6 (1PPS) didn't
> output much either (I later discovered that this was
> due to a defective unit, which is now being replaced)
>
> After contacting the seller, I opened up the units
> to investigate my options (and of course, because
> I wanted to take a look inside :), which in turn led
> to a number of high resolution scans and photos of
> all the bits and pieces.
>
> A (this time) more thorough search on the internet
> resulted in a deeper understanding of the various
> options the FE-5680A can have (or usually doesn't
> have) and the inner workings of the different
> FE-5680A models (of course, all labeled FE-5680A :)
>
> The DDS board, which actually can be programmed to
> output certain frequencies derived from the 'locked'
> 1:136 frequency of the rubidium 6.8GHz transition,
> caught my attention, as it has both, the '10Mhz'
> output and the programming interface, so I decided
> to analyze it further ...
>
> <ONTOPIC>
>
> The central part on this specific DDS board [1] is
> the AD9830A a Direct Digital Synthesizer (DDS) which
> basically produces a sine wave at a well defined
> multiple and phase of a given reference frequency.
>
> Besides some other components, this board also
> includes an RS-232C line driver (Sipex SP233A) a
> PIC16F84 microcontroller and two 74HC595 8bit shift
> registers, with buffered outputs.
>
> I read somewhere, that the blue buttons on that DDS
> board can be used to adjust the output frequency,
> this should be avoided, mainly because every button
> press is an update and will cause a write to the
> EEPROM data wearing it out.
>
> Now as I've played with PIC microcontrollers for
> a long time, I wanted to know what this specific
> controller is doing and how I could use that for my
> purposes ...
>
> The chip was quickly removed and the program as well
> as configuration memory retrieved (luckily FEI didn't
> utilize the code/data protection) and together with
> high resolution scans and photos, a documented and
> verified assembler listing [2] reverse engineered.
>
> Here are the (IMHO) quite interesting findings:
>
>   - both FREQx registers can be adjusted
>   - the PHASE0 register can be adjusted
>   - none of the changes is permanent,
>     unless you explicitely save the settings
>   - there are only a few commands, without
>     any plausibility checks and/or protection
>   - and yes, the buttons increment/decrement
>     the FREQx settings and trigger a write to
>     the EEPROM after every update.
>   - the serial interface is done in software
>   - the DDS control words are shifted into
>     the 74HC595, buffered and written
>
>
> ; S<CR>                          STATUS
> ;       R=50255057.012932Hz F=2ABB504000000000
> ;       OK
> ;
> ; F=XXXXXXXXYYYYYYYY<CR>         FREQxREG (set divider)
> ;       OK
> ;
> ; G=XXXX<CR>                     PHASE (set phase register)
> ;       OK
> ;
> ; R=XXXXXXXXYYYYYY<CR>           RUBIDIUM (set calibrated freq)
> ;       OK
> ;
> ; E<CR>                          EEPROM (save settings)
> ;       OK
>
>
> Note that you can use the R= command to update all
> the settings at once or the F= command to update
> the FREQx and PHASE0 settings in one step, by simply
> adding more hex digits to the line.
>
> The next step I'm considering is to replace the
> PIC16F84A with a more powerful version (and a custom
> code) to support a smarter interface and some kind
> of dynamic adjustments (more details on that in
> another post, if there is interest)

It would be interesting if fractional resolution of the DDS would be 
developed using the PHASE interface. As PHASE ripples, a carry needs to 
be sent into the phase accumulator of the AD9830, or alternatively 
fiddling the frequency value would help.

Anyway, good work!

Cheers,
Magnus


More information about the time-nuts mailing list