Saturday, May 23, 2009

Si570 Synthesizer

Lately I've been playing with a different kind of frequency synthesizer chip -- instead of DDS, it uses a built in crystal and a voltage controlled oscillator and dividers. I'm sure that's over-simplifying a great deal. The chip is the Si570--it's the little silver rectangle in the center of the vertical board in the photo. The major excitement (to me) is that they make versions that go up to the GHz range. I'm currently limited to about 60MHz with the Analog Design DDS chips I use. My Si570 only goes to 160 MHz, but that would allow direct conversion at 2 meters and lots of other interesting stuff.
The fun in this is learning to program a new chip from a microcontroller. It's not nearly as straightforward as an AD DDS chip. You set two front end dividers to set the rough range and then a 38 bit divider for the exact frequency. It's not deterministic in that there may be more than one combination of the three to get to the same frequency. Also, you can't just jump anywhere in the range. Large jumps impose a little delay and some additional programming steps.
But per the data sheet you can move plus or minus 3500ppm by just sending a new 38 bit divider number. I assumed this meant that on 14 MHz, I could move +/- 49kHz, but experimentally I could go +/- about 330kHz. Hmm ... You can tell you've gone too far because the thing freaks out and resets itself to its startup frequency, 56.32MHz in my case. Using the more complex frequency change process always works though. It's just not well suited to continuous tuning.
I got my Si570 on a little board with the same form factor as the NJQRP DDS-30 and DDS-60 after reading about the thing in a recent QEX article. See the softrock receiver page and/or Yahoo group to track it down.
You control or program it over a two-wire bi-directional bus called I2C, which is a protocol for talking chip-to-chip. Assembly language programmers always want to do things the hard way, so I was going to bit-bang the thing thru ordinary I/O pins, but it turns out that my Arduino development board (ATmel 168) has I2C built in to its C-based language so I figured I'd do my initial experiments there. The Si570 is plugged into the Arduino board in the photo, or into a proto board atop the Arduino board.
I'd like to give some tutorial and "lessons learned" stuff, but I've rambled on just in this overview. Maybe more details later. I see some fun potential for this thing. Direct conversion on 144 MHz, or even 220 MHz for the chip just one speed grade up. An LO for a 2-meter FM rig (not a lot of homebrew there, eh?). SDR (software defined radio) types like it because they need an LO four times the mixer frequency. That's why this thing starts up on 56.32MHz -- that's four times 14.080MHz. I still need to do stuff like measure its output level over the frequency range and so on.