ADF4350 VCO+PLL Breakout Board

I’m a software radio freak. When I first heard about the Analog Devices ADF4350, a PLL+VCO that can tune between 137.5 and 4400 MHz, I was obsessed with getting one and building it into my projects. Naturally, the first step was to build it into a breakout board and get to know the chip. So I loaded up EAGLE, cranked out a design, and sent it through Laen’s four-layer PCB order. I’ve since soldered up two of these boards, and they’ve both worked wonderfully.

Analog Devices ADF4350 VCO+PLL breakout board

If you want one for yourself, you can find my breakout board in my “in-development” GitHub repo, filed under “radio/circuit-board/adf4350-breakout”. Enjoy!

Tagged , , , , , . Bookmark the permalink.

39 Responses to ADF4350 VCO+PLL Breakout Board

  1. anabar says:

    Very nice board, how about programing the registers ?
    Any particular software ?

    Regards

  2. jboone says:

    @anabar: Thanks. I am using my Bus Pirate to do the SPI configuration of the ADF4350. I have Python code that will write the registers in the correct order. I use the ADF4350 register tool (Windows application) from Analog Devices to compute register values, then I put them into the Python code. It would be fairly simple to modify my code to assume a certain reference frequency and configuration, and have the code calculate the appropriate PLL settings. I can post the code to my GitHub repository if you’re interested in building on it.

  3. cmgrisp says:

    great board! Could you upload your EAGLE library file that has the package + symbol for the adf4350?

  4. jboone says:

    @cmgrisp: Sorry for the delay. I have extracted the ADF4350 out of my larger library of (untested) symbols and footprints. You can find it here:

    https://github.com/sharebrained/pcb

    Let me know what you do with it! I’m always eager to hear about RF projects…

  5. cmgrisp says:

    Cool! thanks for the upload. I’ll let you know how it goes — planning on using the ADF4350 to make a robust upconverter.

  6. jboone says:

    @cmgrisp: Hmmm, for an upconverter, you might also want to have a look at these Linear, RMFD, and Skyworks parts:

    • LTC6946-3: Integer-N VCO+PLL
    • RF205x, RFFC207x, RFFC507x: Fractional-N VCO+PLL+mixer(s)
    • SKY73134-11: Integer-N VCO+PLL

    Do you think an Integer-N PLL would work for your upconverter? How precisely in frequency do you need to place the unconverted image?

  7. cmgrisp says:

    @jboone: thanks for the suggustions! I dont necessarily need the high precision of the fractional, but I do need the wide bandwidth. Also, I’m looking to the ADF4351 so that I can get down to 35MHz on the low side. TI has a part which meets my widebandwidth requirment, and is an integer/fractional PLL. Check out: http://www.ti.com/lit/ds/symlink/trf3765.pdf. It has an up bandwidth of 4.8GHz, vs the ADF4350/51 which is around 4.4GHz.

  8. jboone says:

    @cmgrisp: The TRF3765 looks to be a very nice part. The four outputs would be great for driving front-ends that serve different bands — especially since you can power down each output individually.

    Making use of 4.8GHz (or even 4.4GHz) on standard two- or four-layer FR-4 fiberglass will be a challenge, I think. Are you planning to integrate an entire front-end next to the VCO+PLL, or send the PLL output off the PLL PCB, to a front-end board?

  9. cmgrisp says:

    @jboone: Ah, very good point. I might give it a shot having it next to the VCO+PLL, but alas, you are right, I’m going to have to think about maybe sending it off board in the final spin. In your experience, whats the upper freq limit for 2 or 4 layer FR4 if I wanted the entire front end on one board?

  10. jboone says:

    @cmgrisp: Heh, it all depends… First, I wouldn’t dare trying to design a 4GHz RF design on a two-layer board — it’s just not practical if you want good performance and reliability. For four layers, it depends on your layer stack. The four-layer service I use (Laen’s DorkbotPDX PCB order) has a stack-up of approximately 10 mils between the outer and inner layers, and about 40 mils for the center core (joining the top and bottom layer pairs together). It depends on how sensitive your design is, and how much loss you can afford between devices. If your VCO+PLL is pumping out +10dBm at 4GHz and your mixer requires +0dBm input, you’ll probably do fine sending that signal across a few inches of PCB. But at a distance of inches, 4GHz is well into transmission line territory, so you’ll have to get your trace widths right given your PCB material “Er” and trace-to-ground distance.

    I’d spend as much time as possible staring at reference designs for high-frequency mixers and PLL+VCOs. They’re usually done on four- or six-layer FR4. A lot can be learned from observing things that are clearly intentional (“Why are there a billion vias between ground layers here?”) and trying to understand them.

    I’d also start small, building each component as a separate PCB project. Sending 4GHz off-board isn’t too big a deal if you’re careful, keep the traces short, get your transmission line impedance right, and are willing to accept a few dB loss. There’s a LOT of learning you can do with a board that’s a bit lossy but otherwise works just fine. Then, when you have the design nailed, you can tackle integrating it with other components on the same board.

    I’d be happy to review your schematic/board as you go, if you’d like. I don’t claim to be an experienced RF engineer, but RF is kinda an obsession of mine, and I’ve developed enough intuition and understanding to build successful 3GHz boards.

  11. Luis Felipe says:

    Hi Jboone.

    I was wondering if you posted the code to program the registers on your repository because I’m trying to do it on PLL LTC6946 and for me it will be a very good example to star with my code.

    Thanks.

  12. Eric Haskell says:

    Looks very interesting. Do you have an extra boards for sale? I have been thinking of using the ADF4351 as an LO for the UHFSDR. Do you have any measured data on your phase noise?

  13. jboone says:

    @Eric Haskell: I think I have two bare PCBs laying around. Are you interested in bare boards (can you solder QFNs and 0402s)? Or are you hoping for assembled boards?

  14. jboone says:

    @Luis Felipe: At the moment, I only have Python code for the ADF4350. It controls a Bus Pirate configured for SPI mode. Would that be useful to you? I’m sure the register sets are quite different between the ADF4350 and the LTC6946, so you’d have quite a bit of work to do supporting the different register configuration.

  15. Joel says:

    @Luis Here’s are some code snippets showing how I do it on a PIC18F with C. I’ve just collected the main parts from a bunch of different functions for brevity, so don’t expect to be able to compile it on its own.


    unsigned char adrf_init[32] = {
    0x00, 0x00, 0x00, 0x00, // cr0-cr3: FRAC
    0x01, // cr4: reserved
    0x00, // cr5: 5-bit, R divider enable
    0x78, 0x00, // cr6 - cr7: N
    0x00, // cr8: reserved
    0x70, // cr9: charge pump current
    0x01, // cr10: reference frequency control
    0x00, // cr11: reserved
    0x18, // cr12: PLL power up
    0x08, // cr13: reserved
    0x00, // cr14: lock detector control 2
    0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, // cr15-22: reserved
    0x70, // cr23: lock detector control 1
    0x38, // cr24: autocalibration
    0x53, // cr25: autocalibration timer
    0x00, // cr26: reserved
    0x00, // cr27: LOMON output
    0x0a, // cr28: LOMON selection
    0x41, // cr29: Demodulation power and filter selection
    0x00 // cr30: VGA
    };

    int delay;

    // Configure SPI interface
    SSP1STAT = 0b00000000; // SMP=0, CKE=0
    SSP1CON1 = 0b00110000; // SSPEN=1, CKP=1

    // Enable power and wait for supplies to settle
    adrf_power_en();
    for (delay = 65000; delay; delay--);

    // Enable SPI mode
    PORTA |= 0b00111100; // CS off (high)
    PORTA ^= 0b00111100; // CS on
    PORTA ^= 0b00111100; // CS off
    PORTA ^= 0b00111100; // CS on
    PORTA ^= 0b00111100; // CS off
    PORTA ^= 0b00111100; // CS on
    PORTA ^= 0b00111100; // CS off (high)

    void init_adrf(char channel) {
    int num;
    char buf[4];

    // Initialise ADRF6850
    for (num = 30; num >= 0; num--) {
    cputs("Write:");
    itoa(buf,num,16);
    cputs(buf);
    putch('=');
    itoa(buf,adrf_init[num],16);
    cputs(buf);
    cputs("\r\n");
    adrf_write(num, adrf_init[num], channel); // the configuration value
    }

    // Wait for PLL to lock (260 us)

    // Enable VGA
    adrf_write(0x1e, 0x01, channel);

    // Enable LOMON
    adrf_write(0x1b, 0x07, channel);
    }

    void adrf_write(unsigned char reg, char value, char channel) {
    char readbyte;

    adrf_cs_en(channel);

    SSP1BUF = ADRF_WRITE; // Write
    while (!SSP1STATbits.BF);
    readbyte = SSP1BUF;

    SSP1BUF = reg; // to register num
    while (!SSP1STATbits.BF);
    readbyte = SSP1BUF;

    SSP1BUF = value; // the configuration value
    while (!SSP1STATbits.BF);
    readbyte = SSP1BUF;

    adrf_cs_dis(channel);

    }

  16. Joel says:

    Oops, I didn’t read the post title and assumed that I was commenting on the article about the ADRF6850! Well, hopefully the general ideas will still help you or someone else to configure any of these chips that require a large number of registers to be set all at once.

  17. Eric Haskell says:

    @Jboone: Yes, I think I can handle that. I have not done 0402 before but have no issue with 0603. I already have A Bus Pirate (not used yet). Please send me a email at eric_haskell((At))hotmail… Thanks. -Eric

  18. jboone says:

    @Eric Haskell: I put a scan of the phase noise measurements in the repository. My recollection was good: at a carrier frequency of 1GHz, phase noise is about -60dBc below 1kHz, -85dBc at 10kHz, -90dBc at 100kHz. Carrier was apparently at -3.9dBm. Compared to the datasheet graphs, my phase noise is 33dBc worse at 1k, 17dBc worse at 10kHz, and 23dBc worse at 100kHz. I imagine a lot of that is due to the $3 reference oscillator I’m using.

  19. ncoesel says:

    I’ve been playing with a similar board. I’m getting loads of odd harmonics. I also noticed that the output signal is not a sine wave but a square wave. Do you have the same problem?

  20. jboone says:

    @ncoesel: The square wave is expected, especially if you’re using output dividers to get lower LO frequencies. Are you using the VCO/PLL to drive a quadrature modulator/demodulator or mixer? Most mod/demod/mixer ICs I’ve seen operate with (or even require) a square wave input, and use differential LO inputs, which helps with some of the harmonics. Take a look at this application note, which discusses two different quad-demods and how their different designs impact LO harmonics sensitivity: http://www.analog.com/en/circuits-from-the-lab/CN0245/vc.html

  21. ncoesel says:

    I was afraid of that. I intend to use my board as a general purpose wideband RF generator. I guess for most measurements the harmonics are not an issue but it would be nicer if they where not there.

  22. cmgrisp says:

    @ Jboone: an odd request: can you upload your eagle library called ‘capacitor.’ I’m deep in routing land and want to update the silkscreen on the actual library part use for all the capacitors in your schematic. Otherwise I have to delete them all and replace with a new capacitor, which will cause me to have to drag, drop and reroute … not fun. thanks :)

  23. cmgrisp says:

    … specifically 0402 and 0603 packages.

  24. Eric Haskell says:

    @Jboone: The board arrived today. Nice work! I saw your PN plots posted. I was expecting better based on the data sheet. John Miles program is very nice but making PN measurements can be difficult. I am excited to build it and look myself. – Eric

  25. jboone says:

    @Eric Haskell: Great! I look forward to seeing your results!

  26. jboone says:

    @cmgrisp: I’m sending it by e-mail, as I’m not sure all the capacitors in the library are usable. I don’t want somebody grabbing my library and then finding out I screwed up the footprint they used. I wish EAGLE would allow me to maintain separate device, package, and symbol files, or something a bit more granular than a monolithic, binary mass of data…

  27. Luigi CrocellĂ  says:

    Hi, have you some complete pcb for testing with arduino mega MCU?

  28. ham_radio says:

    hi , Jboone,
    Your pcb with ADF4350 is very interesting… Do you have one/two extra boards assembled and popoulated of all components for sale? I have been thinking of using the ADF4351 as an LO my homebrew Scalar Network Analyzer…
    Regards and thank’s in advance per the aswer…
    Luis

  29. jboone says:

    Hi Luis,

    I have only one board assembled at the moment. It does not have a microcontroller on it, but can be controlled via a Bus Pirate or microcontroller connected to the pin header. I would like to do a revision of the board that has a simple USB microcontroller onboard (probably an NXP ARM Cortex-M0 or M3), so I can use it without having to hook it up to other hardware first. But it will probably be a couple of months before I finish that project. How soon do you want to have an LO board?

    In the meantime, you might want to look at Windfreak Technologies. Their ADF4350 board looks like a good design at a reasonable price.

    Free free to e-mail me at info@sharebrained.com, if you want to talk more.

  30. vojko says:

    hello im interesting on your pcb for adf4251 pll vco
    if you heave one piece for sale will be great

    thak you de s52e vojko

  31. jboone says:

    @vojko: Thanks for your interest. I looked up the ADF4251, and it’s apparently obsolete. But from what I can tell, it’s not pin-compatible with the ADF4350. So my board design would not work for you. In any case, the board design (in EAGLE 5) can be found in one of my GitHub repositories.

  32. VOJKO says:

    sorry im wrote wrong number of ic adf 4351 is ok

  33. jboone says:

    @vojko: If you’re interested in the ADF4351, then yes, I believe my board would work for you. I have only tested it with the ADF4350, but I understand the two are pin-compatible. I do not have any extra boards at the moment. You could have my board fabricated by a board house or OSH Park (only $10 a square inch for three copies of the board).

    Given the interest I’ve seen in this board, I am considering designing an enhanced version with an integrated ARM microcontroller. But I’m very busy with other things right now, so it will probably be months before I get to that project.

  34. VOJKO says:

    hello im can also resolder the adf 4350 with 4351 for test with my procesor how much do you want for your board and im wiil send thru pay pal or with post thank you

    vojko

  35. vojko says:

    hello no im can also resolder pcb with new adf4351 if you sold me pcb or for the first im can test with my procesor it is in working kondition
    if you send me thru e- mail your acount im wiil pay thrue paypal

    regards vojko

  36. vojko says:

    hello
    can you sold too me one pcs of your board im wiil pay thru paypal
    or bank
    regards vojko

  37. jboone says:

    @vojko: I do not have boards for sale. I do not have any. You can make one of my boards using the EAGLE PCB design in my GitHub repository. Or, you can buy a finished and tested product like this: http://www.windfreaktech.com/synthusb.html

  38. vojko says:

    hello

    thank you
    im will try too make with eagle

    regards vojko

  39. Pooja Parge says:

    Hello Sir, I am m doing signal generator using the ADF 4350 for my BE project Sir will u tell me How should i start????? Please sir help me out please give me details on my mail id pargepooja18@gmail.com

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>