City of Pittsburgh skyline showing radio communications.

Crawl, Walk, And Run - The Journey To Create The Phaser

In my last blog post, I introduced the CN0566, commonly called the “Phaser.”  It is an 8-element FMCW phased array radar exploration platform.  I’d like to share the journey of how we made a manufacturable Phaser as I think it is illustrative of the software and hardware ecosystem that Analog Devices provides to scale up a design from conceptprototypingproduction. 

How Did the Phaser Start?

In my very first blog, I talked about the challenges of understanding phased array beamforming systems.  It can be an overwhelming combination of expertise required in RF Design, DSP signal processing, software development, digital hardware implementation, and overall system architecture. 

Understanding Phased Array Beamforming Systems illustration

To help with this, I proposed one approach to get started:  build a simple 2-channel beamformer with the low-cost ADALM-PLUTO.  But that’s not how I began.  At the onset, my interest was in Analog Device’s newly released ADAR1000.  It’s a 4-channel, half duplex, X band beamformer IC, and it was becoming very popular with my customers.  It’s probably not the best place to start – as the ADAR1000 has more features to understand than what we built with the Pluto.  But that’s where I started.  Bob Broughton, design manager for ADI’s beamformers, encouraged me to build it up and learn by doing.  And Matt Pierce, technical leader at Ball Aerospace, gave me his mantra of “Crawl→WalkRun.”  So start small, get something working, then scale it up.   

“Crawl”

Here was my very first attempt at learning about electronically steerable arrays (ESAs) by building my own system at 10 GHz with the ADAR1000:

 An electronically steerable Arrays system

I cut my daughter’s hula-hoop in half (sorry Allie!) to provide a means to rotate an X band source around the array.  You can see that source mounted on the left side of the hula hoop.  Beneath that is a 4-element 10 GHz patch antenna array (files here if anyone wants to try it out). Then I used the ADAR1000 and LTC5552 eval boards, along with the ADALM-PLUTO, to construct a simple phased array system.  Here’s the arrangement of it:

Python script, running in GNU Radio Companion

I used a Python script, running in GNU Radio Companion, to control the ADAR1000 and plot the receive pattern.  Much to my surprise, this worked!  I found I could do quite a bit with this setup.   Here’s a 90-minute workshop on some of those things here: 

 

After that successful “crawl”, I wanted to do more.  To “walk” toward a more real-world design.  So, more elements, and more capabilities to exercise.  But this posed a new problem:  how can I scale up my “crawl” hardware without redoing all the software? 

IIO to the Rescue

Fortunately, though I didn’t know much about it at the time, I was using ADI’s IIO software ecosystem.  What is IIO?  IIO stands for “Industrial I/O.”  It is used by more than 800 companies to provide control over devices such as ADCs, DACs, clocks, beamformers, synthesizers, DSAs, VGAs, PGAs, sensors, transceivers, and many other ICs. 

 ADI’s IIO software ecosystem

IIO Abstracts away low-level details of the underlying hardware and provides a single cohesive and consistent way to control and operate various products.  “LibIIO” takes IIO one step further and provides high-level programming language bindings for C, C++, C#, Python, MATLAB, Java, JS, RUST, etc.

What does this mean?  Using LIBIIO, I could operate on a variety of platforms, even changing out hardware, and would have minimal changes to the software implementation.  Also, changing my language bindings from Python to Matlab to C, if needed.  This gave me enormous flexibility during the prototyping stage meaning that I didn’t have to redo (and re-learn) new software as I progressed into more complex implementations. 

“Walk”
So now I could add more hardware or change my setup while keeping software changes to a minimum.  And so that’s what I did!  I added another ADAR1000 eval board (to give 8 antenna elements).  Then a proper 10 GHz synthesizer (to improve performance).  Finally, I upgraded from Pluto to the dual channel ADRV9361-SOM (to create a hybrid analog/digital beamformer architecture).  And while my software was in good shape to handle all of this (thanks to IIO!), my hardware was getting unwieldy….  Here’s what my setup looked like:

 Hardware setup

Now I’ve got 2 ADAR1000 eval boards, 2 LTC5553 mixers, a nice synthesizer for the LO (ADF5356), and a dual channel SDR (the ADRV9361-Z7035 SOM).  It worked, but the rat’s nest of RF cabling, power, and data routing was a real challenge to setup.  And it would get even worse if I wanted to do 16 or 32 elements!  If this is “walking”, then things were not looking good for “running”!

X-Microwave to the Rescue!

To clean up the hardware, I turned to an X-microwave solution.  X-Microwave makes RF “breadboarding” modules and has thousands of RF components in its library – including the ADAR1000, LTC5552, and ADF5356.  After converting to their system, and leaving the software unchanged, I had this nice setup:

 X-microwave setup

That is quite a difference!  And that is a 1:1 translation – everything in the lab rats nest above, is now on the X-microwave prototyping plate.  This whole setup made everything easier to debug and prototype with.  And was also a great path to the production of the Phaser – which is the final phase: “Run.” 

Conclusion

There’s more I want to get into – so I’m going to save “Run” for the next blog post here.  Until then, if you’ve had experience with IIO or X-Microwave prototyping, I’d love to hear about it in the comments.