Locale Icon
English
  • Forums

    Popular Forums

    • LTspice
    • RF and Microwave
    • Video
    • Power Management
    • Precision ADCs
    • FPGA Reference Designs
    • Linux Software Drivers

    Product Forums

    • Amplifiers
    • Microcontrollers
    • Clock and Timing
    • Data Converters
    • Direct Digital Synthesis (DDS)
    • Energy Monitoring and Metering
    • Interface and Isolation
    • MEMS Inertial Sensors
    • Power Management
    • Processors and DSP
    • Switches/Multiplexers
    • Temperature Sensors
    • Voltage References
    View All

    Application Forums

    • A2B
    • Audio
    • Automated Test Equipment (ATE)
    • Condition-Based Monitoring
    • Depth, Perception & Ranging Technologies
    • Embedded Vision Sensing Library
    • Motor Control Hardware Platforms
    • Precision Technology Signal Chains Library
    • Video
    • Wireless Sensor Networks Reference Library

    Design Center Forums

    • ACE Evaluation Software
    • ADEF System Platforms
    • Design Tools and Calculators
    • FPGA Reference Designs
    • Linux Software Drivers
    • Microcontroller no-OS Drivers
    • Power Studio Designer
    • Power Studio Planner
    • Reference Designs
    • Robot Operating System (ROS) SDK
    • Signal Chain Power (SCP)
    • Software Interface Tools
    • System Demonstration Platform (SDP) Support
  • Learn

    Highlighted Webinar

    The Burning Question: How can ADI Solutions Ensure Rechargeable Device Batteries are Genuine?

    On the global stage, products and equipment using rechargeable batteries continue to proliferate exponentially, expecting to reach a staggering $170B market...

    Places

    • ADI Academy
    • ADI Webinars
    • Video Annex
    • Virtual Classroom

    Libraries

    • 3D ToF Depth Sensing Library
    • Continuous-Wave CMOS Time of Flight (TOF) Library
    • Embedded Vision Sensing Library
    • Gigabit Multimedia Serial Link (GMSL) Library
    • Optical Sensing Library
    • Precision Technology Signal Chains Library
    • Software Modules and SDKs Library
    • Supervisory Circuits Library
    • Wireless Sensor Networks Library

    Latest Webinars

    • Power Management Fundamentals II Session 6: Key Layout Considerations for Power
    • A 16T/16R X-Band Direct Sampling Phased Array Subsystem using Apollo MxFE
    • Power Management Fundamentals II Session 5: Deeper Look into Power Protection
    • Power Management Fundamentals II Session 4: Isolated Converters Explained
    • Maximize Your Power Regulator: Key Considerations for Thermal Performance
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC's Quizzes AQQ294 about a digital phase splitter design

      1. Quote of the month: "I've learned that people will forget what you said, people will forget what you did, but people will never forget how you made...

    View All

    What's Brewing

      Read a Blog, Take this Quiz for Another Chance to Win a Gift Card!

      Important: Read the blog first . The quiz questions are all based on the content from the blog: Let's Take a Field-Bus Trip Your field-bus engines...

    View All

    Places

    • Community Help
    • Logic Lounge
    • Super User Program
    • Analog Dialogue Quiz

    Resources

    • EZ Code of Conduct
    • EZ How To Help Articles
    • Getting Started Guide
    • ADI: Words Matter
    • Community Help Videos
    View All
  • Blogs

    Highlighted Blogs

    Understanding Voltage Domain Isolation in Field-Bus Systems

    By Christopher Nunes In the world of industrial communication, mastering voltage domain isolation is the key to building safer, smarter systems. Last...

     

    Ethernet-APL’s Impact on Functional, Intrinsic, and Cyber Safety

    Power limitations have always plagued process sensors, whether because of intrinsic safety requirements (safety achieved through power limitation) or because...

    Latest Blogs

    • Balancing Enhanced Radar Resolution with FPGA-Based Pulse Compression
    • ​​ISO 26262 Essentials: Ensuring Confidence in Your Software Tools ​
    • Step-by-Step: Implementing a Complete DSP Chain for Signal Analysis
    • Galvanic Isolation in SMPS: Ensuring Safety and Protection: Part 1 of 4
    • Mature, Not Old! The Longevity of 4 – 20 mA
    Read All Blogs

    ADI Blogs

    • EZ Spotlight
    • The Engineering Mind
  • ContentZone

    Visit ContentZone

    ContentZone

    Technical articles. Blogs. Videos. Your ADI content, all in one place.

    View ContentZone

    Featured Content

    Featured Content Title

    Blurb About Content

    View Content By Industry

    • Aerospace and Defense Systems
    • Automotive Solutions
    • Consumer Technology Solutions
    • Data Center Solutions
    • Energy Solutions
    • Healthcare Solutions
    • Industrial Automation Technology Solutions
    • Instrumentation and Measurement Solutions
    • Intelligent Building Solutions
    • Wireless Communication Solutions

    View Content By Technology

    • A2B Audio Bus
    • ADI OtoSense Predictive Maintenance Solutions
    • Dynamic Speaker Management
    • Gallium Nitride (GaN) Technology
    • Gigabit Multimedia Serial Link (GMSL)
    • Industrial Vision
    • Power Solutions
    • Precision Technology
    • RF
    • Sensor Interfaces
    • SmartMesh
EngineerZone
EngineerZone
TES GUI & Software Support ADRV9001 – ADRV9007
  • Log In
  • User
  • Site
  • Search
OR
Ask a Question
TES GUI & Software Support ADRV9001 – ADRV9007
  • RF and Microwave
  • Wide Band RF Transceivers
  • TES GUI & Software Support ADRV9001 – ADRV9007
  • Cancel
TES GUI & Software Support ADRV9001 – ADRV9007
Documents SSI Debug with Loopback Test
  • Q&A
  • Docs/FAQs
  • Members
  • Tags
  • Cancel
  • Documents
  • -Debug: FAQ
    • Calibration Errors
    • SSI Debug with Loopback Test
    • TES Connection Issues
    • TES GUI Resolution Issue
  • +Device Configurations: FAQ
  • +Physical Design of Customer Systems: FAQ
  • +Produce Sample Code
  • +Quick Start: FAQ
  • +SD Card Image: FAQ
  • +SDK Errata: FAQ
  • +Software Functions: FAQ

SSI Debug with Loopback Test

The goal of this guide is to use the SSI Loopback functionality from Tx1 to Rx1 to verify that data is reaching the Tx1 interface without being corrupted. This guide is quite useful of people who have evaluated the ADRV9001 product and are now attempting to build their own platform away from the ZC706 FPGA. The following steps should be carried out first using our FPGA platform and then ported over to their own platform if the FPGA run is successful.

In the User Guide, under Data Interface: CSSI/LSSI Testability and Debug there is the following diagram. The loopback which has been circled in Red is the one we intend to use here.

Step 1:Set your Configurations tab

For this example, an FDD setup will be used, as shown below. Any setup which allows the Rx1 interface to send data while the Tx1 datapath is transmitting is acceptable, meaning that not all TDD setups will allow this test to run. Additionally, no tracking calibration that requires Internal Loopback or External Loopback can be used. As we’re enabling the SSI loopback, no data will reach the Rx SSI via the Rx datapath.

The Dual Channel operation will be required for this debug operation. We’re going to program the Tx1 channel to perform various transmissions and then monitor the output using both the Rx1 interface and a Spectrum Analyzer. The same steps would also work for Tx2 -> Rx2 under different setups. The only major change will be to the set_Loopback(…) command, we’ll highlight this later.

Step 2: Set the Carriers tab

The only alteration made to this setup was to change the Tx Carrier Frequency to 1.6GHz. Do also run a quick check of all other tabs, the default configurations for this setup are fine so no edits are made here. One configuration that will be required is the Tx Data Source being set to the FPGA in the Radio tab. Using internal tone generation will power down the Tx SSI, which will prevent us from performing this test.

Having an IF set for the Rx1 channel will not affect this test at all, as there will be no mixing taking place. Any legal carrier frequency that you want to test here will work, 1.6GHz is just one usecase.

Step 3: Program the part

At this point it’s no harm to quickly test the Tx transmission using the spectrum analyser as a sanity check:

   

At this point we can set the SSI Loopback. If you try receiving data now you should observe nothing on Rx1 or Rx2:

Step 4: Set the SSI Loopback

Stop all Tx and Rx operation. Now open the IronPython programming interface and load the SSI_Loopback.py script (it has been supplied with this guide in .zip format). Pay particular attention to the areas of code circled in red in the below images. These are the sections of code added to the default “New File.py” that opens when the IronPython coding interface is opened.

Ssi_Loopback.zip

If everything runs as expected you should see “Loopback Set” printed into the terminal window. *Note: For setups which allow Tx2 -> Rx2 loopback, we can change the “channel_num = common_ChannelNumber_e(1)” line to “channel_num = common_ChannelNumber_e(2)”. The channel type can similarly be changed from CMOS: “channel_type = adrv9001_SsiType_e(1)”, to LVDS: “channel_type = adrv9001_SsiType_e(2)”

Step 5: Program the Part Again

Start transmitting again. The spectrum analyser should see exactly the same thing as before:

   

Now start receiving while transmitting:

Notice how Rx1 (in Black) now sees exactly the same tone that’s present in the Tx tab. Deselect Rx2 (the Blue line) in this tab now.

If we start changing the transmission, Rx1 should respond accordingly:

At this point we’ve confirmed that data is reaching the Tx1 dataport through the FPGA without distortion.

Step 6: Produce C code and Compile on Platform

Produce C code from this session using Sample Code -> C99. It’s unlikely that the API we called in the IronPython interface has been saved into the log file, so we’ll need to find the correct point to insert it. The loopback must be set in the Primed state after all calibrations are complete, but before the device enters the RF Enabled state. Navigate to your C code and open the main.c file:

We’re going to add 1 extra #include and call the SSI Loopback API between the “prime(…)” call and the “beginReceiving(…)” call:

The arguments for the API are identical to those we used in the IronPython interface:

  1. A pointer to the ADRV9001 device (Not used in IronPython)
  2. Channel Number: 1 = Channel 1, 2 = Channel 2
  3. Channel Type: 1 = CMOS, 2 = LVDS
  4. Loopback Enable: 0 = False, 1 = True

Next, we will compile this code on your own platform. You will need to adjust the generated C code to suit your platform. Get the code to compile on your platform before proceeding.

Step 7: Confirm RF performance on Platform

We’ll simply perform step 5 again. Transmit data to a spectrum analyzer. Confirm that it matches your expectations, and then inspect the data returned from the Rx1 datapath. That may have to be done offline, but that’s fine.

What you’re looking for is any glaring differences between the Tx1 input data and the Rx1 output data. Any differences here would indicate strongly that the Tx1 SSI has not been setup correctly on your own platform. Things to look out for are:

  1. Reduced SNR
  2. Increased / Decreased Tx signal bandwidth
  3. The Tx Tone being at completely the wrong frequency
  4. A Tx tone that moves when it shouldn’t

Step 8: Extra Debug (if needed)

Pending the results of the previous 7 steps, you may or may not have narrowed down the possible causes for your issue. If you’re still having issues the following considerations may help you home in on the problems you are experiencing. These considerations will go into how you have configured the Tx/Rx SSI ports on your own platform. If you monitor your SSI port during its interactions and the behavior does not match your expectations we will have found the source of the issue.

  • Rx SSI

In CMOS-DDR mode, with default SSI configuration:

Navassa RX SSI output should be something like Figure1;

Ps:   Yellow - Clock, Purple – Strobe, Green – Data

Figure 1: CSSI-DDR default, Navassa Rx SSI output

‘cmosDdrClkInversionEn’ doesn’t help on the SSI setup/hold time for DDR mode, it only effects on which clock edge (rising or falling) the system will sample the first strobe/data, refer Figure 2.

Figure 2: CSSI-DDR default -> set cmosDdrClkInversionEn = True

‘cmosDdrPosClkEn’ = True will add a quarter clock delay (refer Figure 3) but as Figure 1 shows Rx SSI clock output by default has quarter clock delay to strobe/data. So, another quarter clock delay will make the clock/strobe/data phase aligned.

Figure 3: CSSI-DDR default -> set cmosDdrPosClkEn = True

  • TX SSI 
    • Tx SSI clock/Strobe/Data is controlled by users’ BBP, they should make sure the SSI setup/hold time at ADRV9002 SSI pad inputs meet the spec requirement.
    • “cmosTxDdrNegStrobeEn” is internal debug and Tx SSI only, users don’t need to change the default value.
    • cmosDdrPosClkEn and cmosDdrClkInversionEn have the same functions as their Rx SSI counterparts, they can set cmosDdrPosClkEn = Ture to make a quarter clock delay and check if it helps
    • Another useful check is to call the “adi_adrv9001_Ssi_Delay_Configure” to set the clock/strobe/data phase relationship in ADRV9002.
Tags: api tx Transceiver Evaluation Software ADRV9001 ssi rx IronPython Show More
  • Share
  • History
  • More
  • Cancel
 
Related Content
  • RE: ADRV9001 data not working in LSSI mode
    ADIApproved
    Hello Shivashankar, Let's start with the ADRV9002 LVDS specs. Our Datasheet does not seem to support your statement that "ADRV9001 drives 1.8V to 800mV": According to this the LVDS interface on the...
  • RE: adrv9002 tx1 and rx2 channels
    M_Bugajski
    Hi Mustafa, That is not correct. I will look into getting that corrected. What they have described is an alternative use case. By default, the Tx SSI reference clock is not derived from the Rx. The...
  • RE: Adrv9003 Max Output Power Configuration
    ConradCollins
    Hi, In this case, it is likely an issue with your SSI. It may be related to delays or timing on the SSI path. To determine this, use ADRV9002's internal tone generation to send a signal and observe...
 
Related Content
  • RE: ADRV9001 data not working in LSSI mode
    ADIApproved
    Hello Shivashankar, Let's start with the ADRV9002 LVDS specs. Our Datasheet does not seem to support your statement that "ADRV9001 drives 1.8V to 800mV": According to this the LVDS interface on the...
  • RE: adrv9002 tx1 and rx2 channels
    M_Bugajski
    Hi Mustafa, That is not correct. I will look into getting that corrected. What they have described is an alternative use case. By default, the Tx SSI reference clock is not derived from the Rx. The...
  • RE: Adrv9003 Max Output Power Configuration
    ConradCollins
    Hi, In this case, it is likely an issue with your SSI. It may be related to delays or timing on the SSI path. To determine this, use ADRV9002's internal tone generation to send a signal and observe...
analog-devices logo

About Analog Devices

  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue
  • ADI Developer PortalExternalLink

myAnalog

Interested in the latest news and articles about ADI products, design tools, training, and events?

Go to myAnalog
  • Instagram page
  • Twitter page
  • Linkedin page
  • Youtube page
  • Facebook
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings

©2025 Analog Devices, Inc. All Rights Reserved

analog-devices

About Analog Devices

Down Up
  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

Down Up
  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue
  • ADI Developer PortalExternalLink

myAnalog

Interested in the latest news and articles about ADI products, design tools, training, and events?

Go to myAnalog
Instagram page Facebook Twitter page Linkedin page Youtube page
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings

©2025 Analog Devices, Inc. All Rights Reserved