AnsweredAssumed Answered

Mini-ITX Z100 + FMCOMMS4

Question asked by rmm92vt on Nov 18, 2016
Latest reply on Nov 29, 2016 by rmm92vt

I'm trying to integrate FMCOMMS4 with my Mini-ITX Z100 development board. My build system is CentOS 6.6 and I have several versions of Vivado/SDK installed (I prefer 2016.3). Of course the closest Analog reference design targets the Z045 version of the Mini-ITX, so I'm probably going to have difficulties. My goal is to eventually integrate my own HDL application into the fmcomms2 base project (as directed on the wiki) for sink/source of streaming data from/to the AD9364 transceiver aboard the FMCOMMS4. And I'm anticipating a bare-metal no-OS project for now. It would be nice to eventually get all this running with Linux, but I'll be happy with crawling at first...


What I've done so far:


  • Grabbed the "hdl" and "no-OS" projects from github:

         GitHub - analogdevicesinc/hdl: HDL libraries and projects 

         GitHub - analogdevicesinc/no-OS: Software drivers for systems without OS 

  • Installed the older 2015.2 version of Vivado/SDK required for the build scripts to be happy
  • Built the HDL reference design targeting the Mini-ITX Z045 via command line with "make fmcomms2.mitx045" executed from the 'hdl' directory. The resulting project directory is located at: hdl/projects/fmcomms2/mitx045/
  • I didn't bother yet with changing the target device from xc7z045ffg900-2 to xc7z100ffg900-2 as I know that will cause Vivado to throw a fit about Analog's hdl cores. More on that later...
  • Opened the project in Vivado 2015.2 and white-boarded the top level block diagram (attached jpg). As it was the bd itself wasn't much help in understanding how things are connected.
  • Exported the hw design to SDK
  • Launched SDK from Vivado and quickly found that there are some issues with the version of Eclipse used by SDK 2015.2 under Centos 6.6. (Eclipse Community Forums: Java Development Tools (JDT) » Eclipse crash with RHEL 2.6.32-504.el6.i686 ) Great. It crashes quite reliably for me now doing something as simple as opening main.c.
  • Said goodbye to 2015.2 and opened the project in 2016.3. I let Vivado attempt to automatically update it for me. And of course got all kinds of warnings about IP version changes. But I wasn't interested in rebuilding the hardware just yet. I wanted to make sure SDK was okay.
  • Launched SDK 2016.3 from Vivado 2016.3. All good. No crashes. Followed instructions for creating the blank project here:
  • Copied the no-OS source from no-OS/ad9361/ to the src/ folder in new project as follows:


    |-- src
        |-- ad9361_api.c
        |-- ad9361_api.h
        |-- ad9361.c
        |-- ad9361_conv.c
        |-- ad9361.h
        |-- common.h
        |-- config.h
        |-- lscript.ld
        |-- main.c
        |-- util.c
        |-- util.h
        |-- console_commands
        |   |-- command.c
        |   |-- command.h
        |   |-- console.c
        |   |-- console.h
        |-- platform_xilinx
            |-- adc_core.c
            |-- adc_core.h
            |-- dac_core.c
            |-- dac_core.h
            |-- parameters.h
            |-- platform.c
            |-- platform.h


  • Fixed the references to the files in the #includes so they matched above... all good. At least the software builds now with no crashes.


Now What? I need to get the HDL project rebuilt in 2016.3 for the z100 instead of 2015.2 / z045. So to see what I would be up against, I went back to Vivado 2016.3 and selected the xc7z100ffg900-2. The attached jpg shows my list of recommended block upgrades.


Since a lot of these cores are Analog's and were locked to the 2015.2 tools and the z045 part, I am probably in for a bit of surgery without guaranteed results. Any advice on how best to proceed?


Thanks in advance for any help!