<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://ez.analog.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Q&amp;amp;A - Recent Threads</title><link>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><lastBuildDate>Fri, 19 Jun 2026 12:22:04 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a" /><item><title>AD9371 + ZU15EG: Intermittent SYSREF Alignment Error Despite Integer LMFC/SYSREF Relationship</title><link>https://ez.analog.com/thread/604870?ContentTypeID=0</link><pubDate>Fri, 19 Jun 2026 12:22:04 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:169ef05f-c062-4dbc-b5ba-a2d4882bf6c7</guid><dc:creator>UVLSIDRIVER</dc:creator><slash:comments>1</slash:comments><comments>https://ez.analog.com/thread/604870?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/604870/ad9371-zu15eg-intermittent-sysref-alignment-error-despite-integer-lmfc-sysref-relationship/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello ,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;I am working on a custom AD9371 + ZU15EG design and am seeing the &amp;quot;SYSREF Alignment Error = Yes&amp;quot; status intermittently after some power cycles. Most power-ons work correctly, but occasionally the alignment error is reported.&lt;br /&gt;Iam using reference project HDL and NO OS project provided in ADI github.&lt;/p&gt;
&lt;p&gt;I reviewed the ADI JESD troubleshooting documentation and found two possible causes:&lt;/p&gt;
&lt;p&gt;SYSREF frequency is not an integer multiple/submultiple of the LMFC frequency&lt;br /&gt;SYSREF violating setup/hold timing with respect to the JESD device clock&lt;/p&gt;
&lt;p&gt;For our configuration:&lt;/p&gt;
&lt;p&gt;Lane rate = 2457.6 Mbps&lt;br /&gt;F = 2 octets/frame&lt;br /&gt;K = 32 frames/multiframe&lt;br /&gt;LMFC frequency = 3.84 MHz&lt;br /&gt;SYSREF frequency = 0.96 MHz&lt;/p&gt;
&lt;p&gt;Since SYSREF = LMFC/4, the first condition appears to be satisfied.&lt;/p&gt;
&lt;p&gt;Regarding the second point, the troubleshooting guide suggests constraining the SYSREF path relative to the device clock. We would like to investigate this further.&lt;/p&gt;
&lt;p&gt;Our clocking setup is as follows:&lt;/p&gt;
&lt;p&gt;HMC7044 generates both clocks and SYSREF.&lt;br /&gt;Clock and SYSREF traces are length matched on the PCB.&lt;br /&gt;AD9371 reference clock = 122.88 MHz.&lt;br /&gt;We are using the standard 61.44 MHz profile configuration files from the ADI reference design.&lt;br /&gt;In the HDL reference design, the JESD device clock is generated by a Clock Wizard whose input is the GT Channel 0 output clock, and the Clock Wizard output is used as the device clock for the JESD IP.&lt;/p&gt;
&lt;p&gt;My questions are:&lt;/p&gt;
&lt;p&gt;In this architecture, what clock should be used as the timing reference when constraining the SYSREF path?&lt;br /&gt;How should the SYSREF path be constrained in Vivado?&lt;br /&gt;Has anyone observed intermittent SYSREF alignment errors in a similar AD9371 setup despite having matched clock/SYSREF routing?&lt;br /&gt;Besides SYSREF frequency relationship and setup/hold timing, are there any other common causes that could lead to intermittent SYSREF alignment errors across power cycles?&lt;/p&gt;
&lt;p&gt;Any guidance or recommendations would be greatly appreciated. Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>AD9375 TX1 and TX2 impedance matching Network in band 300 to 1000Mhz</title><link>https://ez.analog.com/thread/604296?ContentTypeID=0</link><pubDate>Mon, 11 May 2026 19:59:08 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:ebe9afb6-ab6f-4889-8e2f-9766c112da87</guid><dc:creator>alexisdupont1994</dc:creator><slash:comments>5</slash:comments><comments>https://ez.analog.com/thread/604296?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/604296/ad9375-tx1-and-tx2-impedance-matching-network-in-band-300-to-1000mhz/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;we are planing to use the AD9375 in the frequency band of 300 to 1000Mhz. From the UG-992 p.252 , we have to use the following components for the following circuit (See images below).&lt;/p&gt;
&lt;p&gt;So, we have to use the&amp;nbsp;&lt;span&gt;B0322J5050AHF. From the component, it seems that L305 must be added, however, the conversation at this link tells that the L305 is DNI:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;a href="https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/575671/b0322j5050ahf-for-ad9371-s-tx-port"&gt;https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/575671/b0322j5050ahf-for-ad9371-s-tx-port&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I am a little confuse by that answer, so i just want to validate if i have to put L305 between Pin 2 and Pin 3, but not to pin 4?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://ez.analog.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/440/pastedimage1778528238100v2.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://ez.analog.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/440/pastedimage1778528253433v3.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thank you very much and have a nive day!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Deframer error 0x61</title><link>https://ez.analog.com/thread/603666?ContentTypeID=0</link><pubDate>Mon, 30 Mar 2026 08:20:04 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:07d44b82-0ce5-414a-9b02-12803911e762</guid><dc:creator>tchrist</dc:creator><slash:comments>17</slash:comments><comments>https://ez.analog.com/thread/603666?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/603666/deframer-error-0x61/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;We are having trouble with the deframer/tx path using the AD9371 - getting the error code 0x61, 0x21 etc having the &amp;quot;frame symbol lost&amp;quot; as the common denominator.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;We can close to consequently reproduce the error by resetting the FPGA and then running the initialization for the JESD204B link. Additionally, we see &amp;quot;BADDISP&amp;quot; when reading &amp;quot;MYKONOS_deframerGetIrq&amp;quot;. Based on the readouts, we can see that it fluctuate between CGS and ILAS phase, not reaching the DATA state.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Adding a debug core (ILA-core) to some of the signals reveal some weird behavior during the 2 deframer errors. Especially, the &lt;strong&gt;ilas_config_data&lt;/strong&gt; is all 0&amp;#39;s for the 2 errors -&lt;strong&gt;&amp;nbsp;what might be the cause of this?&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Waveform of working link:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:173px;max-width:1630px;" height="173" src="https://ez.analog.com/resized-image/__size/3260x346/__key/communityserver-discussions-components-files/440/pastedimage1774856629575v1.png" width="1630" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Waveform with deframer error 0x61 (&lt;strong&gt;notice how the data is first sent on the second multiframe after sync?&lt;/strong&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:188px;max-width:1627px;" height="188" src="https://ez.analog.com/resized-image/__size/3254x376/__key/communityserver-discussions-components-files/440/pastedimage1774856966678v2.png" width="1627" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Waveform with deframer error 0x21 (&lt;strong&gt;notice the sync deassertion during the ILAS phase&lt;/strong&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:182px;max-width:1618px;" height="182" src="https://ez.analog.com/resized-image/__size/3236x364/__key/communityserver-discussions-components-files/440/pastedimage1774857104711v3.png" width="1618" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Additionally, the SYNC signal falls close to the LMFC boundary in all 3 waveforms, which in our understanding should fall somewhat in the middle of a LMF. This can controlled via the LMFC_offset, right?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;We are using &lt;strong&gt;Vivado 2022.2&lt;/strong&gt; and &lt;strong&gt;ADI-HDL version 2022_r2:&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7ea497b6c24172ee293d6e0a9a387a16973da5ce 2022_R2 &lt;a id="" href="https://github.com/analogdevicesinc/hdl/tree/2022_R2"&gt;&lt;span style="color:rgba(0,170,255,0.866667);text-decoration:underline;"&gt;https://github.com/analogdevicesinc/hdl/tree/2022_R2&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Hope you can give some much needed insight into the HDL and the problem.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks in advance,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thomas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Clock definition</title><link>https://ez.analog.com/thread/603009?ContentTypeID=0</link><pubDate>Thu, 26 Feb 2026 13:03:15 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:6db983ae-a784-4fb1-a6b7-831230e6f447</guid><dc:creator>HenryIII</dc:creator><slash:comments>1</slash:comments><comments>https://ez.analog.com/thread/603009?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/603009/clock-definition/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt;Hello,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt;I would like to configure ad9375 with a different sampling frequency on Tx such as 60 MHz using a different clock from 30.72 MHZ, but when I charge the configuration file it gives error&amp;nbsp; on JESD clock.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt; Is it possible to configure the AD9375 with a different multiple clock? &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt;&lt;/span&gt;&lt;span data-olk-copy-source="MessageBody"&gt;Or is there any EVB of9375 with different clock definition? &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-olk-copy-source="MessageBody"&gt;Thanks and Best regards&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Ad9371 Saturation on TX when sending IQ with high PAPR</title><link>https://ez.analog.com/thread/602908?ContentTypeID=0</link><pubDate>Sat, 21 Feb 2026 14:25:54 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:3432af93-f7d0-4d3c-b3ac-35f04fb13256</guid><dc:creator>Jawad</dc:creator><slash:comments>4</slash:comments><comments>https://ez.analog.com/thread/602908?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/602908/ad9371-saturation-on-tx-when-sending-iq-with-high-papr/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am using Radioverse AD9371_Software.exe to generate Mykonos files for the AD9371.&lt;/p&gt;
&lt;p&gt;Or when transmitting signal with high modulation scheme (i.e., high PAPR) than the sinewave I am observing saturation on the TX output.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I am suspecting the saturation on the TX FIR filters.&lt;/p&gt;
&lt;p&gt;Kindly can you share the configuration file (derived from the one attaced herein) to be able to transmit 100 MHz 5G signal bandwidth without saturation ? I am expecting to have 12 dB PAPR while the sinewave have&amp;nbsp;3 dB of PAPR.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/440/2024_5F00_11_5F00_14_5F00_AD9371_5F00_CFG_5F00_1Tx1Rx_5F00_100M.txt"&gt;ez.analog.com/.../2024_5F00_11_5F00_14_5F00_AD9371_5F00_CFG_5F00_1Tx1Rx_5F00_100M.txt&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>ARM Mailbox Busy – Command not executed in MYKONOS_sendArmCommand() during initialization</title><link>https://ez.analog.com/thread/602811?ContentTypeID=0</link><pubDate>Tue, 17 Feb 2026 07:06:46 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:ea39f901-0c7f-4dfa-9aff-ff60c24f7c54</guid><dc:creator>PUJ</dc:creator><slash:comments>11</slash:comments><comments>https://ez.analog.com/thread/602811?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/602811/arm-mailbox-busy-command-not-executed-in-mykonos_sendarmcommand-during-initialization/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am using &lt;strong&gt;ZCU102 (Ultrascale+)&lt;/strong&gt; with &lt;strong&gt;AD9371 (Mykonos)&lt;/strong&gt; and encountering the following error during initialization.&lt;/p&gt;
&lt;p&gt;I have attached the TES-generated profile code and the initialization configuration files used for this setup for review.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id="mcetoc_1jhl6424n0"&gt;Vitis Error Log Output&lt;/h3&gt;
&lt;p&gt;Please wait...&lt;br /&gt;rx_clkgen: MMCM-PLL locked (76800000 Hz)&lt;br /&gt;tx_clkgen: MMCM-PLL locked (153600000 Hz)&lt;br /&gt;rx_os_clkgen: MMCM-PLL locked (153600000 Hz)&lt;br /&gt;MCS successful&lt;br /&gt;CLKPLL locked&lt;br /&gt;ARM Mailbox Busy. Command not executed in MYKONOS_sendArmCommand()&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id="mcetoc_1jhl6424n2"&gt;Questions&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;What conditions cause the ARM mailbox to remain busy?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Does this indicate that the ARM firmware is not running correctly?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Which debug registers should be checked before issuing ARM commands?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Is there any mistake in my attached profiles?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Any suggestions or debug guidance would be greatly appreciated.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;myk.c&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/**
 * \brief Contains init setting structure declarations for the _instance API
 *
 * The top level structure mykonosDevice_t mykDevice uses keyword
 * extern to allow the application layer main() to have visibility
 * to these settings.
 * 
 * All data structures required for operation have been initialized with values which reflect these settings:
 * 
 * Device Clock:
 * 122.88MHz
 * 
 * Profiles:
 * Rx 100MHz, IQrate 153.6MSPS, Dec5
 * Tx 100/250MHz, IQrate 307.2MSPS, Dec5
 * ORX 240MHz, IQrate 307.2MSPS, Dec5
 * SRx 20MHz, IQrate 38.4MSPS, Dec5
 * 
 */

/**
  \page Disclaimer Legal Disclaimer
  Copyright 2015-2017 Analog Devices Inc.
  Released under the AD9371 API license, for more information see the &amp;quot;LICENSE.txt&amp;quot; file in this zip file.
 */

#include &amp;lt;stddef.h&amp;gt;
#include &amp;quot;t_mykonos.h&amp;quot;
#include &amp;quot;t_mykonos_gpio.h&amp;quot;
#include &amp;quot;myk.h&amp;quot;

static int16_t txFirCoefs[] = {-16,34,-95,215,-475,1136,-3455,22121,-4794,2304,-899,393,-177,76,-31,19};

static mykonosFir_t txFir =
{
    6,              /* Filter gain in dB*/
    16,             /* Number of coefficients in the FIR filter*/
    &amp;amp;txFirCoefs[0]  /* A pointer to an array of filter coefficients*/
};

static int16_t rxFirCoefs[] = {-16,-22,18,74,24,-132,-152,132,372,38,-598,-474,638,1178,-206,-1952,-984,2362,3152,-1612,-6544,-2164,12806,26836,26836,12806,-2164,-6544,-1612,3152,2362,-984,-1952,-206,1178,638,-474,-598,38,372,132,-152,-132,24,74,18,-22,-16};

static mykonosFir_t rxFir =
{
    -6,             /* Filter gain in dB*/
    48,             /* Number of coefficients in the FIR filter*/
    &amp;amp;rxFirCoefs[0]  /* A pointer to an array of filter coefficients*/
};

static int16_t obsrxFirCoefs[] = {-32,136,-348,747,-1404,2412,-3827,5730,-8371,10473,-13745,24655,27364,-16650,10146,-7384,4611,-2790,1593,-830,384,-148,43,0};
static mykonosFir_t obsrxFir =
{
    0,              /* Filter gain in dB*/
    24,             /* Number of coefficients in the FIR filter*/
    &amp;amp;obsrxFirCoefs[0]/* A pointer to an array of filter coefficients*/
};

static int16_t snifferFirCoefs[] = {10,31,59,71,30,-92,-283,-456,-466,-175,440,1192,1683,1444,198,-1871,-3988,-4942,-3512,958,8118,16519,23993,28395,28395,23993,16519,8118,958,-3512,-4942,-3988,-1871,198,1444,1683,1192,440,-175,-466,-456,-283,-92,30,71,59,31,10};
static mykonosFir_t snifferRxFir=
{
    -12,            /* Filter gain in dB*/
    48,             /* Number of coefficients in the FIR filter*/
    &amp;amp;snifferFirCoefs[0]/* A pointer to an array of filter coefficients*/
};

static mykonosJesd204bFramerConfig_t rxFramer =
{
    0,              /* JESD204B Configuration Bank ID -extension to Device ID (Valid 0..15)*/
    0,              /* JESD204B Configuration Device ID - link identification number. (Valid 0..255)*/
    0,              /* JESD204B Configuration starting Lane ID.  If more than one lane used, each lane will increment from the Lane0 ID. (Valid 0..31)*/
    2,              /* number of ADCs (0, 2, or 4) - 2 ADCs per receive chain*/
    32,             /* number of frames in a multiframe (default=32), F*K must be a multiple of 4. (F=2*M/numberOfLanes)*/
    1,              /* scrambling off if framerScramble= 0, if framerScramble&amp;gt;0 scramble is enabled.*/
    1,              /* 0=use internal SYSREF, 1= use external SYSREF*/
    0x03,           /* serializerLanesEnabled - bit per lane, [0] = Lane0 enabled, [1] = Lane1 enabled*/
    0x04,           /* serializerLaneCrossbar*/
    22,             /* serializerAmplitude - default 22 (valid (0-31)*/
    4,              /* preEmphasis - &amp;lt; default 4 (valid 0 - 7)*/
    0,              /* invertLanePolarity - default 0 ([0] will invert lane [0], bit1 will invert lane1)*/
    0,              /* lmfcOffset - LMFC_Offset offset value for deterministic latency setting*/
    0,              /* Flag for determining if SYSREF on relink should be set. Where, if &amp;gt; 0 = set, 0 = not set*/
    0,              /* Flag for determining if auto channel select for the xbar should be set. Where, if &amp;gt; 0 = set, &amp;#39;0&amp;#39; = not set*/
    0,              /* Selects SYNCb input source. Where, 0 = use RXSYNCB for this framer, 1 = use OBSRX_SYNCB for this framer*/
    0,              /* Flag for determining if CMOS mode for RX Sync signal is used. Where, if &amp;gt; 0 = CMOS, &amp;#39;0&amp;#39; = LVDS*/
    0,              /* Selects framer bit repeat or oversampling mode for lane rate matching. Where, 0 = bitRepeat mode (changes effective lanerate), 1 = overSample (maintains same lane rate between ObsRx framer and Rx framer and oversamples the ADC samples)*/
    0               /* Flag for determining if API will calculate the appropriate settings for framer lane outputs to physical lanes. Where, if &amp;#39;0&amp;#39; = API will set automatic lane crossbar, &amp;#39;1&amp;#39; = set to manual mode and the value in serializerLaneCrossbar will be used*/
};

static mykonosJesd204bFramerConfig_t obsRxFramer =
{
    0,              /* JESD204B Configuration Bank ID -extension to Device ID (Valid 0..15)*/
    0,              /* JESD204B Configuration Device ID - link identification number. (Valid 0..255)*/
    0,              /* JESD204B Configuration starting Lane ID.  If more than one lane used, each lane will increment from the Lane0 ID. (Valid 0..31)*/
    2,              /* number of ADCs (0, 2, or 4) - 2 ADCs per receive chain*/
    32,             /* number of frames in a multiframe (default=32), F*K must be a multiple of 4. (F=2*M/numberOfLanes)*/
    1,              /* scrambling off if framerScramble= 0, if framerScramble&amp;gt;0 scramble is enabled.*/
    1,              /* 0=use internal SYSREF, 1= use external SYSREF*/
    0x0C,           /* serializerLanesEnabled - bit per lane, [0] = Lane0 enabled, [1] = Lane1 enabled*/
    0x40,           /* Lane crossbar to map framer lane outputs to physical lanes*/
    22,             /* serializerAmplitude - default 22 (valid (0-31)*/
    4,              /* preEmphasis - &amp;lt; default 4 (valid 0 - 7)*/
    0,              /* invertLanePolarity - default 0 ([0] will invert lane [0], bit1 will invert lane1)*/
    0,              /* lmfcOffset - LMFC_Offset offset value for deterministic latency setting*/
    0,              /* Flag for determining if SYSREF on relink should be set. Where, if &amp;gt; 0 = set, 0 = not set*/
    0,              /* Flag for determining if auto channel select for the xbar should be set. Where, if &amp;gt; 0 = set, &amp;#39;0&amp;#39; = not set*/
    1,              /* Selects SYNCb input source. Where, 0 = use RXSYNCB for this framer, 1 = use OBSRX_SYNCB for this framer*/
    0,              /* Flag for determining if CMOS mode for RX Sync signal is used. Where, if &amp;gt; 0 = CMOS, &amp;#39;0&amp;#39; = LVDS*/
    1,              /* Selects framer bit repeat or oversampling mode for lane rate matching. Where, 0 = bitRepeat mode (changes effective lanerate), 1 = overSample (maintains same lane rate between ObsRx framer and Rx framer and oversamples the ADC samples)*/
    0               /* Flag for determining if API will calculate the appropriate settings for framer lane outputs to physical lanes. Where, if &amp;#39;0&amp;#39; = API will set automatic lane crossbar, &amp;#39;1&amp;#39; = set to manual mode and the value in serializerLaneCrossbar will be used*/
};

static mykonosJesd204bDeframerConfig_t deframer =
{
    0,              /* bankId extension to Device ID (Valid 0..15)*/
    0,              /* deviceId  link identification number. (Valid 0..255)*/
    0,              /* lane0Id Lane0 ID. (Valid 0..31)*/
    2,              /* M  number of DACss (0, 2, or 4) - 2 DACs per transmit chain */
    32,             /* K  #frames in a multiframe (default=32), F*K=multiple of 4. (F=2*M/numberOfLanes)*/
    1,              /* scramble  scrambling off if scramble= 0.*/
    1,              /* External SYSREF select. 0 = use internal SYSREF, 1 = external SYSREF*/
    0x03,           /* Deserializer lane select bit field. Where, [0] = Lane0 enabled, [1] = Lane1 enabled, etc */
    0x04,           /* Lane crossbar to map physical lanes to deframer lane inputs [1:0] = Deframer Input 0 Lane section, [3:2] = Deframer Input 1 lane select, etc */
    1,              /* Equalizer setting. Applied to all deserializer lanes. Range is 0..4*/
    0,              /* PN inversion per each lane.  bit[0] = 1 Invert PN of Lane 0, bit[1] = Invert PN of Lane 1, etc).*/
    0,              /* LMFC_Offset offset value to adjust deterministic latency. Range is 0..31*/
    0,              /* Flag for determining if SYSREF on relink should be set. Where, if &amp;gt; 0 = set, &amp;#39;0&amp;#39; = not set*/
    0,              /* Flag for determining if auto channel select for the xbar should be set. Where, if &amp;gt; 0 = set, &amp;#39;0&amp;#39; = not set*/
    0,              /* Flag for determining if CMOS mode for TX Sync signal is used. Where, if &amp;gt; 0 = CMOS, &amp;#39;0&amp;#39; = LVDS*/
    0               /* Flag for determining if API will calculate the appropriate settings for deframer lane in to physical lanes. Where, if &amp;#39;0&amp;#39; = API will set automatic lane crossbar, &amp;#39;1&amp;#39; = set to manual mode and the value in deserializerLaneCrossbar will be used*/
};

static mykonosRxGainControl_t rxGainControl =
{
    MGC,            /* Current Rx gain control mode setting*/
    255,            /* Rx1 Gain Index, can be used in different ways for manual and AGC gain control*/
    255,            /* Rx2 Gain Index, can be used in different ways for manual and AGC gain control*/
    255,            /* Max gain index for the currently loaded Rx1 Gain table*/
    195,            /* Min gain index for the currently loaded Rx1 Gain table*/
    255,            /* Max gain index for the currently loaded Rx2 Gain table*/
    195,            /* Min gain index for the currently loaded Rx2 Gain table*/
    0,              /* Stores Rx1 RSSI value read back from the Mykonos*/
    0               /* Stores Rx2 RSSI value read back from the Mykonos*/
};

static mykonosORxGainControl_t orxGainControl =
{
    MGC,            /* Current ORx gain control mode setting*/
    255,            /* ORx1 Gain Index, can be used in different ways for manual and AGC gain control*/
    255,            /* ORx2 Gain Index, can be used in different ways for manual and AGC gain control*/
    255,            /* Max gain index for the currently loaded ORx Gain table*/
    237             /* Min gain index for the currently loaded ORx Gain table*/
};

static mykonosSnifferGainControl_t snifferGainControl =
{
    MGC,            /* Current Sniffer gain control mode setting*/
    255,            /* Current Sniffer gain index. Can be used differently for MANUAL Gain control/AGC*/
    255,            /* Max gain index for the currently loaded Sniffer Gain table*/
    203             /* Min gain index for the currently loaded Sniffer Gain table*/
};

static mykonosPeakDetAgcCfg_t rxPeakAgc =
{
    0x26,	/* apdHighThresh: */
    0x16,	/* apdLowThresh */
    0xB5,	/* hb2HighThresh */
    0x72,	/* hb2LowThresh */
    0x40,	/* hb2VeryLowThresh */
    0x06,	/* apdHighThreshExceededCnt */
    0x04,	/* apdLowThreshExceededCnt */
    0x06,	/* hb2HighThreshExceededCnt */
    0x04,	/* hb2LowThreshExceededCnt */
    0x04,	/* hb2VeryLowThreshExceededCnt */
    0x4,	/* apdHighGainStepAttack */
    0x2,	/* apdLowGainStepRecovery */
    0x4,	/* hb2HighGainStepAttack */
    0x2,	/* hb2LowGainStepRecovery */
    0x4,	/* hb2VeryLowGainStepRecovery */
    0x1,	/* apdFastAttack */
    0x1,	/* hb2FastAttack */
    0x1,	/* hb2OverloadDetectEnable */
    0x1,	/* hb2OverloadDurationCnt */
    0x1	/* hb2OverloadThreshCnt */
};

static mykonosPowerMeasAgcCfg_t rxPwrAgc =
{
    0x01,	/* pmdUpperHighThresh */
    0x03,	/* pmdUpperLowThresh */
    0x0C,	/* pmdLowerHighThresh */
    0x04,	/* pmdLowerLowThresh */
    0x4,	/* pmdUpperHighGainStepAttack */
    0x2,	/* pmdUpperLowGainStepAttack */
    0x2,	/* pmdLowerHighGainStepRecovery */
    0x4,	/* pmdLowerLowGainStepRecovery */
    0x08,	/* pmdMeasDuration */
    0x02	/* pmdMeasConfig */
};

static mykonosAgcCfg_t rxAgcConfig =
{
    255,	/* agcRx1MaxGainIndex */
    195,	/* agcRx1MinGainIndex */
    255,	/* agcRx2MaxGainIndex */
    195,	/* agcRx2MinGainIndex: */
    255,	/* agcObsRxMaxGainIndex */
    203,	/* agcObsRxMinGainIndex */
    1,		/* agcObsRxSelect */
    1,		/* agcPeakThresholdMode */
    1,		/* agcLowThsPreventGainIncrease */
    30720,	/* agcGainUpdateCounter */
    3,	/* agcSlowLoopSettlingDelay */
    4,	/* agcPeakWaitTime */
    0,	/* agcResetOnRxEnable */
    0,	/* agcEnableSyncPulseForGainCounter */
    &amp;amp;rxPeakAgc,
    &amp;amp;rxPwrAgc
};

static mykonosPeakDetAgcCfg_t obsRxPeakAgc =
{
    0x2A,	/* apdHighThresh: */
    0x16,	/* apdLowThresh */
    0xB5,	/* hb2HighThresh */
    0x72,	/* hb2LowThresh */
    0x40,	/* hb2VeryLowThresh */
    0x03,	/* apdHighThreshExceededCnt */
    0x03,	/* apdLowThreshExceededCnt */
    0x03,	/* hb2HighThreshExceededCnt */
    0x03,	/* hb2LowThreshExceededCnt */
    0x03,	/* hb2VeryLowThreshExceededCnt */
    0x4,	/* apdHighGainStepAttack */
    0x2,	/* apdLowGainStepRecovery */
    0x4,	/* hb2HighGainStepAttack */
    0x2,	/* hb2LowGainStepRecovery */
    0x4,	/* hb2VeryLowGainStepRecovery */
    0x0,	/* apdFastAttack */
    0x0,	/* hb2FastAttack */
    0x1,	/* hb2OverloadDetectEnable */
    0x1,	/* hb2OverloadDurationCnt */
    0x1		/* hb2OverloadThreshCnt */
};

static mykonosPowerMeasAgcCfg_t obsRxPwrAgc =
{
    0x01,	/* pmdUpperHighThresh */
    0x03,	/* pmdUpperLowThresh */
    0x0C,	/* pmdLowerHighThresh */
    0x04,	/* pmdLowerLowThresh */
    0x0,	/* pmdUpperHighGainStepAttack */
    0x0,	/* pmdUpperLowGainStepAttack */
    0x0,	/* pmdLowerHighGainStepRecovery */
    0x0,	/* pmdLowerLowGainStepRecovery */
    0x08,	/* pmdMeasDuration */
    0x02	/* pmdMeasConfig */
};

static mykonosAgcCfg_t obsRxAgcConfig =
{
    255,	/* agcRx1MaxGainIndex */
    195,	/* agcRx1MinGainIndex */
    255,	/* agcRx2MaxGainIndex */
    195,	/* agcRx2MinGainIndex: */
    255,	/* agcObsRxMaxGainIndex */
    203,	/* agcObsRxMinGainIndex */
    1,		/* agcObsRxSelect */
    1,		/* agcPeakThresholdMode */
    1,		/* agcLowThsPreventGainIncrease */
    30720,	/* agcGainUpdateCounter */
    3,		/* agcSlowLoopSettlingDelay */
    4,		/* agcPeakWaitTime */
    0,		/* agcResetOnRxEnable */
    0,		/* agcEnableSyncPulseForGainCounter */
    &amp;amp;obsRxPeakAgc,
    &amp;amp;obsRxPwrAgc
};


static mykonosRxProfile_t rxProfile =
{/* Rx 100MHz, IQrate 153.6MSPS, Dec5 */
    1,              /* The divider used to generate the ADC clock*/
    &amp;amp;rxFir,         /* Pointer to Rx FIR filter structure*/
    2,              /* Rx FIR decimation (1,2,4)*/
    5,              /* Decimation of Dec5 or Dec4 filter (5,4)*/
    1,              /* If set, and DEC5 filter used, will use a higher rejection DEC5 FIR filter (1=Enabled, 0=Disabled)*/
    1,              /* RX Half band 1 decimation (1 or 2)*/
    153600,         /* Rx IQ data rate in kHz*/
    100000000,      /* The Rx RF passband bandwidth for the profile*/
    100000,         /* Rx BBF 3dB corner in kHz*/
    NULL            /* pointer to custom ADC profile*/
};

static mykonosRxProfile_t orxProfile =
{/* ORX 240MHz, IQrate 307.2MSPS, Dec5 */
    1,              /* The divider used to generate the ADC clock*/
    &amp;amp;obsrxFir,      /* Pointer to Rx FIR filter structure or NULL*/
    1,              /* Rx FIR decimation (1,2,4)*/
    5,              /* Decimation of Dec5 or Dec4 filter (5,4)*/
    0,              /* If set, and DEC5 filter used, will use a higher rejection DEC5 FIR filter (1=Enabled, 0=Disabled)*/
    1,              /* RX Half band 1 decimation (1 or 2)*/
    307200,         /* Rx IQ data rate in kHz*/
    240000000,      /* The Rx RF passband bandwidth for the profile*/
    100000,         /* Rx BBF 3dB corner in kHz*/
    NULL            /* pointer to custom ADC profile*/
};


static mykonosRxProfile_t snifferProfile =
{ /* SRx 20MHz, IQrate 38.4MSPS, Dec5 */
    1,              /* The divider used to generate the ADC clock*/
    &amp;amp;snifferRxFir,  /* Pointer to Rx FIR filter structure or NULL*/
    4,              /* Rx FIR decimation (1,2,4)*/
    5,              /* Decimation of Dec5 or Dec4 filter (5,4)*/
    0,              /* If set, and DEC5 filter used, will use a higher rejection DEC5 FIR filter (1=Enabled, 0=Disabled)*/
    2,              /* RX Half band 1 decimation (1 or 2)*/
    38400,          /* Rx IQ data rate in kHz*/
    20000000,       /* The Rx RF passband bandwidth for the profile*/
    120000,         /* Rx BBF 3dB corner in kHz*/
    NULL            /* pointer to custom ADC profile*/
};



static mykonosTxProfile_t txProfile =
{ /* Tx 100/250MHz, IQrate 307.2MSPS, Dec5 */
    DACDIV_2p5,     /* The divider used to generate the DAC clock*/
    &amp;amp;txFir,         /* Pointer to Tx FIR filter structure*/
    1,              /* The Tx digital FIR filter interpolation (1,2,4)*/
    2,              /* Tx Halfband1 filter interpolation (1,2)*/
    1,              /* Tx Halfband2 filter interpolation (1,2)*/
    1,              /* TxInputHbInterpolation (1,2)*/
    307200,         /* Tx IQ data rate in kHz*/
    100000000,      /* Primary Signal BW*/
    250000000,      /* The Tx RF passband bandwidth for the profile*/
    236846,         /* The DAC filter 3dB corner in kHz*/
    125000,         /* Tx BBF 3dB corner in kHz*/
    0               /* Enable DPD, only valid for AD9373*/
};

static mykonosDigClocks_t mykonosClocks =
{
    122880,         /* CLKPLL and device reference clock frequency in kHz*/
   6144000,        /* CLKPLL VCO frequency in kHz*/
    VCODIV_1,       /* CLKPLL VCO divider*/
    4               /* CLKPLL high speed clock divider*/
};

static mykonosRxSettings_t  rxSettings =
{
    &amp;amp;rxProfile,     /* Rx datapath profile, 3dB corner frequencies, and digital filter enables*/
    &amp;amp;rxFramer,      /* Rx JESD204b framer configuration structure*/
    &amp;amp;rxGainControl, /* Rx Gain control settings structure*/
    &amp;amp;rxAgcConfig,   /* Rx AGC control settings structure*/
    1,              /* The desired Rx Channels to enable during initialization*/
    0,              /* Internal LO = 0, external LO*2 = 1*/
    900000000U,     /* Rx PLL LO Frequency (internal or external LO)*/
    0               /* Flag to choose if complex baseband or real IF data are selected for Rx and ObsRx paths. Where, if &amp;gt; 0 = real IF data, &amp;#39;0&amp;#39; = zero IF (IQ) data*/
};

static mykonosDpdConfig_t dpdConfig =
{
    5,              /* 1/2^(damping + 8) fraction of power `forgotten&amp;#39; per sample (default: `1/8192&amp;#39; = 5, valid 0 to 15), 0 = infinite damping*/
    1,              /* number of weights to use for int8_cpx weights weights member of this structure (default = 1)*/
    2,              /* DPD model version: one of four different generalized polynomial models: 0 = same as R0 silicon, 1-3 are new and the best one depends on the PA (default: 2)*/
    1,              /* 1 = Update saved model whenever peak Tx digital RMS is within 1dB of historical peak Tx RMS*/
    20,             /* Determines how much weight the loaded prior model has on DPD modeling (Valid 0 - 32, default 20)*/
    0,              /* Default off = 0, 1=enables automatic outlier removal during DPD modeling */
    512,            /* Number of samples to capture (default: 512, valid 64-32768)*/
    4096,           /* threshold for sample in AM-AM plot outside of 1:1 line to be thrown out. (default: 50% = 8192/2, valid 8192 to 1)*/
    0,              /* 16th of an ORx sample (16=1sample), (default 0, valid -64 to 64)*/
    255,            /* Default 255 (-30dBFs=(20Log10(value/8192)), (valid range  1 to 8191)*/
    {{64,0},{0,0},{0,0}}/* DPD model error weighting (real/imag valid from -128 to 127)*/
};

static mykonosClgcConfig_t clgcConfig =
{
    -2000,          /* (value = 100 * dB (valid range -32768 to 32767) - total gain and attenuation from Mykonos Tx1 output to ORx1 input in (dB * 100)*/
    -2000,          /* (value = 100 * dB (valid range -32768 to 32767) - total gain and attenuation from Mykonos Tx2 output to ORx2 input in (dB * 100)*/
    0,              /* (valid range 0 - 40dB), no default, depends on PA, Protects PA by making sure Tx1Atten is not reduced below the limit*/
    0,              /* (valid range 0 - 40dB), no default, depends on PA, Protects PA by making sure Tx2Atten is not reduced below the limit*/
    75,             /* valid range 1-100, default 75*/
    75,             /* valid range 1-100, default 45*/
    0,              /* 0= allow CLGC to run, but Tx1Atten will not be updated. User can still read back power measurements.  1=CLGC runs, and Tx1Atten automatically updated*/
    0,              /* 0= allow CLGC to run, but Tx2Atten will not be updated. User can still read back power measurements.  1=CLGC runs, and Tx2Atten automatically updated*/
    0,              /* 16th of an ORx sample (16=1sample), (default 0, valid -64 to 64)*/
    255,            /* Default 255 (-30dBFs=(20Log10(value/8192)), (valid range  1 to 8191)*/
    600,            /* Threshold for Tx1 in order to stop tracking, value = 100 * dB, default 6db then value = 600*/
    600,            /* Threshold for Tx2 in order to stop tracking, value = 100 * dB, default 6db then value = 600*/
    0,              /* Threshold feature enable for Tx1, 0 = disable, 1 = enable, default = 0*/
    0               /* Threshold feature enable for Tx1, 0 = disable, 1 = enable, default = 0*/
};

static mykonosVswrConfig_t vswrConfig =
{
    0,              /* 16th of an ORx sample (16=1sample), (default 0, valid -64 to 64)*/
    255,            /* Default 255 (-30dBFs=(20Log10(value/8192)), (valid range  1 to 8191)*/
    0,              /* 3p3V GPIO pin to use to control VSWR switch for Tx1 (valid 0-11) (output from Mykonos)*/
    1,              /* 3p3V GPIO pin to use to control VSWR switch for Tx2 (valid 0-11) (output from Mykonos)*/
    0,              /* 3p3v GPIO pin polarity for forward path of Tx1, opposite used for reflection path (1 = high level, 0 = low level)*/
    0,              /* 3p3v GPIO pin polarity for forward path of Tx2, opposite used for reflection path (1 = high level, 0 = low level)*/
    50,             /* Delay for Tx1 after flipping the VSWR switch until measurement is made. In us resolution*/
    50              /* Delay for Tx2 after flipping the VSWR switch until measurement is made. In us resolution*/
};

static mykonosTxSettings_t txSettings =
{
    &amp;amp;txProfile,     /* Tx datapath profile, 3dB corner frequencies, and digital filter enables*/
    &amp;amp;deframer,      /* Mykonos JESD204b deframer config for the Tx data path*/
    TX1,            /* The desired Tx channels to enable during initialization*/
    0,              /* Internal LO=0, external LO*2 if =1*/
    900000000U,     /* Tx PLL LO frequency (internal or external LO)*/
    TXATTEN_0P05_DB,/* Initial and current Tx1 Attenuation*/
    10000,          /* Initial and current Tx1 Attenuation mdB*/
    10000,          /* Initial and current Tx2 Attenuation mdB*/
    NULL,           /* DPD,CLGC,VSWR settings. Only valid for AD9373 device, set pointer to NULL otherwise*/
    NULL,           /* CLGC Config Structure. Only valid for AD9373 device, set pointer to NULL otherwise*/
    NULL            /* VSWR Config Structure. Only valid for AD9373 device, set pointer to NULL otherwise*/
};


static mykonosObsRxSettings_t obsRxSettings =
{
    &amp;amp;orxProfile,    /* ORx datapath profile, 3dB corner frequencies, and digital filter enables*/
    &amp;amp;orxGainControl,/* ObsRx gain control settings structure*/
    &amp;amp;obsRxAgcConfig,/* ORx AGC control settings structure*/
    &amp;amp;snifferProfile,/* Sniffer datapath profile, 3dB corner frequencies, and digital filter enables*/
    &amp;amp;snifferGainControl,/* SnRx gain control settings structure*/
    &amp;amp;obsRxFramer,   /* ObsRx JESD204b framer configuration structure */
    (MYK_ORX1_ORX2 | MYK_SNRXA_B_C),/* obsRxChannel */
    OBSLO_TX_PLL,   /* (obsRxLoSource) The Obs Rx mixer can use the Tx Synth(TX_PLL) or Sniffer Synth (SNIFFER_PLL) */
    900000000U,     /* SnRx PLL LO frequency in Hz */
    0,              /* Flag to choose if complex baseband or real IF data are selected for Rx and ObsRx paths. Where if &amp;gt; 0 = real IF data, &amp;#39;0&amp;#39; = complex data*/
    NULL,           /* Custom Loopback ADC profile to set the bandwidth of the ADC response */
    OBS_RXOFF       /* Default ObsRx channel to enter when radioOn called */
};

static mykonosArmGpioConfig_t armGpio =
{
    0,	// useRx2EnablePin; /*!&amp;lt; 0= RX1_ENABLE controls RX1 and RX2, 1 = separate RX1_ENABLE/RX2_ENABLE pins */
    0,	// useTx2EnablePin; /*!&amp;lt; 0= TX1_ENABLE controls TX1 and TX2, 1 = separate TX1_ENABLE/TX2_ENABLE pins */
    0,	// txRxPinMode;     /*!&amp;lt; 0= ARM command mode, 1 = Pin mode to power up Tx/Rx chains */
    0,	// orxPinMode;      /*!&amp;lt; 0= ARM command mode, 1 = Pin mode to power up ObsRx receiver*/

    /*Mykonos ARM input GPIO pins -- Only valid if orxPinMode = 1 */
    0,	// orxTriggerPin; /*!&amp;lt; Select desired GPIO pin (valid 4-15) */
    0,	// orxMode2Pin;   /*!&amp;lt; Select desired GPIO pin (valid 0-18) */
    0,	// orxMode1Pin;   /*!&amp;lt; Select desired GPIO pin (valid 0-18) */
    0,	// orxMode0Pin;   /*!&amp;lt; Select desired GPIO pin (valid 0-18) */

    /* Mykonos ARM output GPIO pins  --  always available, even when pin mode not enabled*/
    0,	// rx1EnableAck;  /*!&amp;lt; Select desired GPIO pin (0-15), [4] = Output Enable */
    0,	// rx2EnableAck;  /*!&amp;lt; Select desired GPIO pin (0-15), [4] = Output Enable */
    0,	// tx1EnableAck;  /*!&amp;lt; Select desired GPIO pin (0-15), [4] = Output Enable */
    0,	// tx2EnableAck;  /*!&amp;lt; Select desired GPIO pin (0-15), [4] = Output Enable */
    0,	// orx1EnableAck;  /*!&amp;lt; Select desired GPIO pin (0-15), [4] = Output Enable */
    0,	// orx2EnableAck;  /*!&amp;lt; Select desired GPIO pin (0-15), [4] = Output Enable */
    0,	// srxEnableAck;  /*!&amp;lt; Select desired GPIO pin (0-15), [4] = Output Enable */
    0 	// txObsSelect;   /*!&amp;lt; Select desired GPIO pin (0-15), [4] = Output Enable */
    /* When 2Tx are used with only 1 ORx input, this GPIO tells the BBIC which Tx channel is   */
    /* active for calibrations, so BBIC can route correct RF Tx path into the single ORx input*/
};

static mykonosGpio3v3_t gpio3v3 =
{
    0,				/*!&amp;lt; Oe per pin, 1=output, 0 = input */
    GPIO3V3_BITBANG_MODE,	/*!&amp;lt; Mode for GPIO3V3[3:0] */
    GPIO3V3_BITBANG_MODE,	/*!&amp;lt; Mode for GPIO3V3[7:4] */
    GPIO3V3_BITBANG_MODE,	/*!&amp;lt; Mode for GPIO3V3[11:8] */
};

static mykonosGpioLowVoltage_t gpio =
{
    0,/* Oe per pin, 1=output, 0 = input */
    GPIO_MONITOR_MODE,/* Mode for GPIO[3:0] */
    GPIO_MONITOR_MODE,/* Mode for GPIO[7:4] */
    GPIO_MONITOR_MODE,/* Mode for GPIO[11:8] */
    GPIO_MONITOR_MODE,/* Mode for GPIO[15:12] */
    GPIO_MONITOR_MODE,/* Mode for GPIO[18:16] */
};

static mykonosAuxIo_t mykonosAuxIo =
{
    0,	//auxDacEnableMask uint16_t
    {0,0,0,0,0,0,0,0,0,0},	 //AuxDacValue uint16[10]
    {0,0,0,0,0,0,0,0,0,0},	 //AuxDacSlope uint8[10]
    {0,0,0,0,0,0,0,0,0,0},	 //AuxDacVref uint8[10]
    &amp;amp;gpio3v3,	//pointer to gpio3v3 struct
    &amp;amp;gpio,	//pointer to gpio1v8 struct
    &amp;amp;armGpio
};

static spiSettings_t mykSpiSettings =
{
    2, /* chip select index - valid 1~8 */
    0, /* the level of the write bit of a SPI write instruction word, value is inverted for SPI read operation */
    1, /* 1 = 16-bit instruction word, 0 = 8-bit instruction word */
    1, /* 1 = MSBFirst, 0 = LSBFirst */
    0, /* clock phase, sets which clock edge the data updates (valid 0 or 1) */
    0, /* clock polarity 0 = clock starts low, 1 = clock starts high */
    0, /* Not implemented in ADIs platform layer. SW feature to improve SPI throughput */
    1, /* Not implemented in ADIs platform layer. For SPI Streaming, set address increment direction. 1= next addr = addr+1, 0:addr=addr-1 */
    1  /* 1: Use 4-wire SPI, 0: 3-wire SPI (SDIO pin is bidirectional). NOTE: ADI&amp;#39;s FPGA platform always uses 4-wire mode */
};

static mykonosTempSensorConfig_t tempSensor =
{
    7,              /* 3-bit value that controls the AuxADC decimation factor when used for temp sensor calculations; AuxADC_decimation = 256 * 2^tempDecimation*/
    67,             /* 8-bit offset that gets added to temp sensor code internally*/
    1,              /* this bit overrides the factory-calibrated fuse offset and uses the value stored in the offset member*/
    15,             /* 4-bit code with a resolution of 1&amp;#176;C/LSB, each time a temperature measurement is performed, the device compares the current temperature against the previous value.*/
};

static mykonosTempSensorStatus_t tempStatus =
{
    0,              /* 16-bit signed temperature value (in deg C) that is read back*/
    0,              /* If the absolute value of the difference is greater than the value in temperature configuration tempWindow, the windowExceeded flag is set.*/
    0,              /* when windowExceeded member gets set, this bit is set to 1 if current value is greater than previous value, else reset*/
    0,              /* when the reading is complete and a valid temperature value stored in tempCode.*/
};

mykonosDevice_t mykDevice =
{
    &amp;amp;mykSpiSettings,    /* SPI settings data structure pointer */
    &amp;amp;rxSettings,        /* Rx settings data structure pointer */
    &amp;amp;txSettings,        /* Tx settings data structure pointer */
    &amp;amp;obsRxSettings,     /* ObsRx settings data structure pointer */
    &amp;amp;mykonosAuxIo,          /* Auxiliary IO settings data structure pointer */
    &amp;amp;mykonosClocks,     /* Holds settings for CLKPLL and reference clock */
    0                   /* Mykonos initialize function uses this as an output to remember which profile data structure pointers are valid */
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;myk_ad9528init.c&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/* AD9528 data structure initialization file */

/**
* \page Disclaimer Legal Disclaimer
* Copyright 2015-2017 Analog Devices Inc.
* Released under the AD9371 API license, for more information see the &amp;quot;LICENSE.txt&amp;quot; file in this zip file.
*
*/


#include &amp;lt;stdint.h&amp;gt;
#include &amp;quot;common.h&amp;quot;
#include &amp;quot;t_ad9528.h&amp;quot;

static spiSettings_t clockSpiSettings =
{
     1,         /* chip select Index */
     0,         /* Write bit polarity */
     1,         /* 16bit instruction word */
     1,         /* MSB first */
     0,         /* Clock phase */
     0,         /* Clock polarity */
     0,         /* uint8_t enSpiStreaming */
     1,         /* uint8_t autoIncAddrUp */
     1,         /* uint8_t fourWireMode */
     25000000   /* spiClkFreq_Hz */   
};

ad9528pll1Settings_t clockPll1Settings =
{
    30720000,
    1,
    3,
    0,
    1,
    0,
    122880000,
    2,
    4
};

ad9528pll2Settings_t clockPll2Settings =
{
    3,
    10,
    30
};

ad9528outputSettings_t clockOutputSettings =
{
    53237,
    {0,0,0,2,0,0,0,0,0,0,0,0,2,0},
    {0,0,0,2,0,0,0,0,0,0,0,0,0,0},
    {0,0,0,2,0,0,0,0,0,0,0,0,0,0},
    {0,0,0,2,0,0,0,0,0,0,0,0,0,0},
    {10,10,10,10,10,10,10,10,10,10,10,10,10,10},
    {122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000, 122880000}
};

ad9528sysrefSettings_t clockSysrefSettings =
{
   0,
   2,
   0,
   0,
   0,
   0,
   512
};

ad9528Device_t clockAD9528_ =
{
    &amp;amp;clockSpiSettings,
    &amp;amp;clockPll1Settings,
    &amp;amp;clockPll2Settings,
    &amp;amp;clockOutputSettings,
    &amp;amp;clockSysrefSettings
};
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Porting zc706-adrv9371 HDL to custom xc7z035: JESD204 TX fails with CPLL/QPLL unlocked</title><link>https://ez.analog.com/thread/602603?ContentTypeID=0</link><pubDate>Thu, 05 Feb 2026 17:46:03 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:f86bdaba-64a1-4b02-8b28-1ed0a6f387e1</guid><dc:creator>Danial25548</dc:creator><slash:comments>8</slash:comments><comments>https://ez.analog.com/thread/602603?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/602603/porting-zc706-adrv9371-hdl-to-custom-xc7z035-jesd204-tx-fails-with-cpll-qpll-unlocked/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello everyone&lt;/p&gt;
&lt;p data-start="538" data-end="690"&gt;I am trying to port the official &lt;strong data-start="571" data-end="614"&gt;HDL reference design for zc706-adrv9371&lt;/strong&gt; to my &lt;strong data-start="621" data-end="657"&gt;custom Zynq-7000 board (xc7z035)&lt;/strong&gt; using &lt;strong data-start="664" data-end="683"&gt;ADRV9371-W/PCBZ&lt;/strong&gt; (FMC).&lt;/p&gt;
&lt;h3 id="mcetoc_1jgne62530" data-start="692" data-end="713"&gt;1) Hardware setup&lt;/h3&gt;
&lt;ul data-start="714" data-end="1051"&gt;
&lt;li data-start="714" data-end="753"&gt;
&lt;p data-start="716" data-end="753"&gt;Custom carrier: &lt;strong data-start="732" data-end="753"&gt;Zynq 7000 xc7z035&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="754" data-end="784"&gt;
&lt;p data-start="756" data-end="784"&gt;RF card: &lt;strong data-start="765" data-end="784"&gt;ADRV9371-W/PCBZ&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="785" data-end="837"&gt;
&lt;p data-start="787" data-end="837"&gt;Connection:&amp;nbsp;HPC&amp;nbsp;&lt;strong data-start="799" data-end="806"&gt;FMC&lt;/strong&gt; (REFCLK + SYSREF + JESD lanes)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="838" data-end="1051"&gt;
&lt;p data-start="840" data-end="883"&gt;AD9528 on the ADRV9371 provides FMC clocks:&lt;/p&gt;
&lt;ul data-start="886" data-end="1051"&gt;
&lt;li data-start="886" data-end="923"&gt;
&lt;p data-start="888" data-end="923"&gt;&lt;code data-start="888" data-end="923"&gt;out_altvoltage1_FMC_CLK_frequency&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="926" data-end="966"&gt;
&lt;p data-start="928" data-end="966"&gt;&lt;code data-start="928" data-end="966"&gt;out_altvoltage3_FMC_SYSREF_frequency&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="969" data-end="1007"&gt;
&lt;p data-start="971" data-end="1007"&gt;&lt;code data-start="971" data-end="1007"&gt;out_altvoltage13_DEV_CLK_frequency&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1010" data-end="1051"&gt;
&lt;p data-start="1012" data-end="1051"&gt;&lt;code data-start="1012" data-end="1051"&gt;out_altvoltage12_DEV_SYSREF_frequency&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1jgne62531" data-start="1053" data-end="1084"&gt;2) What I did (HDL + Linux)&lt;/h3&gt;
&lt;ol data-start="1085" data-end="1676"&gt;
&lt;li data-start="1085" data-end="1145"&gt;
&lt;p data-start="1088" data-end="1145"&gt;Took the &lt;strong data-start="1097" data-end="1115"&gt;zc706-adrv9371&lt;/strong&gt; HDL design from ADI HDL repo.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1146" data-end="1358"&gt;
&lt;p data-start="1149" data-end="1172"&gt;Ported it for my board:&lt;/p&gt;
&lt;ul data-start="1176" data-end="1358"&gt;
&lt;li data-start="1176" data-end="1215"&gt;
&lt;p data-start="1178" data-end="1215"&gt;Updated &lt;strong data-start="1186" data-end="1193"&gt;TCL&lt;/strong&gt; (project/board setup)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1219" data-end="1290"&gt;
&lt;p data-start="1221" data-end="1290"&gt;Updated &lt;strong data-start="1229" data-end="1236"&gt;XDC&lt;/strong&gt; (pinout for FMC signals / ref_clk pins / constraints)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1294" data-end="1358"&gt;
&lt;p data-start="1296" data-end="1358"&gt;Updated &lt;strong data-start="1304" data-end="1320"&gt;system_top.v&lt;/strong&gt; (top-level ports mapping to my board)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/440/2555.System_5F00_top.txt"&gt;ez.analog.com/.../2555.System_5F00_top.txt&lt;/a&gt;&lt;/p&gt;
&lt;ol data-start="1085" data-end="1676"&gt;
&lt;li data-start="1359" data-end="1395"&gt;
&lt;p data-start="1362" data-end="1395"&gt;Generated the bitstream + &lt;strong data-start="1388" data-end="1395"&gt;XSA&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1396" data-end="1528"&gt;
&lt;p data-start="1399" data-end="1419"&gt;Built &lt;strong data-start="1405" data-end="1418"&gt;PetaLinux&lt;/strong&gt;:&lt;/p&gt;
&lt;ul data-start="1423" data-end="1528"&gt;
&lt;li data-start="1423" data-end="1475"&gt;
&lt;p data-start="1425" data-end="1475"&gt;Used device-tree approach similar to zc706 project&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1479" data-end="1528"&gt;
&lt;p data-start="1481" data-end="1528"&gt;Generated BOOT files (BOOT.BIN, image.ub, etc.)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-start="1529" data-end="1676"&gt;
&lt;p data-start="1532" data-end="1571"&gt;Linux boots fine and the drivers probe:&lt;/p&gt;
&lt;ul data-start="1575" data-end="1676"&gt;
&lt;li data-start="1575" data-end="1611"&gt;
&lt;p data-start="1577" data-end="1611"&gt;&lt;code data-start="1577" data-end="1593"&gt;axi-jesd204-rx&lt;/code&gt;, &lt;code data-start="1595" data-end="1611"&gt;axi-jesd204-tx&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1615" data-end="1643"&gt;
&lt;p data-start="1617" data-end="1643"&gt;&lt;code data-start="1617" data-end="1643"&gt;axi-adxcvr-{tx,rx,rx-os}&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1647" data-end="1676"&gt;
&lt;p data-start="1649" data-end="1676"&gt;&lt;code data-start="1649" data-end="1661"&gt;ad9371-phy&lt;/code&gt; appears in IIO&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="mcetoc_1jgne62532" data-start="1678" data-end="1700"&gt;3) Current problem&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/440/4812.Linux_5F00_logs.txt"&gt;ez.analog.com/.../4812.Linux_5F00_logs.txt&lt;/a&gt;&lt;/p&gt;
&lt;p data-start="1701" data-end="1749"&gt;The JESD link never comes up. I get errors like:&lt;/p&gt;
&lt;ul data-start="1751" data-end="1995"&gt;
&lt;li data-start="1751" data-end="1874"&gt;
&lt;p data-start="1753" data-end="1874"&gt;&lt;code data-start="1753" data-end="1820"&gt;axi_adxcvr_drv 44a80000.axi-adxcvr-tx: CPLL TX Unlocked Error: 10&lt;/code&gt;&lt;br /&gt; (sometimes it shows QPLL depending on build/config)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1875" data-end="1933"&gt;
&lt;p data-start="1877" data-end="1933"&gt;&lt;code data-start="1877" data-end="1933"&gt;axi-jesd204-tx ... Link0 enable lane clock failed (-5)&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1934" data-end="1995"&gt;
&lt;p data-start="1936" data-end="1995"&gt;JESD FSM rolls back during &lt;code data-start="1963" data-end="1980"&gt;clk_sync_stage3&lt;/code&gt; / &lt;code data-start="1983" data-end="1995"&gt;link_setup&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1997" data-end="2002"&gt;Also:&lt;/p&gt;
&lt;ul data-start="2003" data-end="2126"&gt;
&lt;li data-start="2003" data-end="2031"&gt;
&lt;p data-start="2005" data-end="2031"&gt;&lt;code data-start="2005" data-end="2031"&gt;Measured Link Clock: off&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2032" data-end="2052"&gt;
&lt;p data-start="2034" data-end="2052"&gt;&lt;code data-start="2034" data-end="2052"&gt;Link is disabled&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2053" data-end="2126"&gt;
&lt;p data-start="2055" data-end="2126"&gt;RX lanes stay &lt;code data-start="2069" data-end="2086"&gt;CGS state: INIT&lt;/code&gt; and &lt;code data-start="2091" data-end="2126"&gt;Initial Frame Synchronization: No&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1jgne62533" data-start="2128" data-end="2164"&gt;4) Debugging steps already tried&lt;/h3&gt;
&lt;h4 data-start="2165" data-end="2204"&gt;A) Verified AD9528 IIO nodes exist&lt;/h4&gt;
&lt;p data-start="2205" data-end="2270"&gt;I can read the AD9528 output frequencies from sysfs, for example:&lt;/p&gt;
&lt;ul data-start="2271" data-end="2428"&gt;
&lt;li data-start="2271" data-end="2330"&gt;
&lt;p data-start="2273" data-end="2330"&gt;&lt;code data-start="2273" data-end="2320"&gt;out_altvoltage1_FMC_CLK_frequency = 122880000&lt;/code&gt; (default)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2331" data-end="2381"&gt;
&lt;p data-start="2333" data-end="2381"&gt;&lt;code data-start="2333" data-end="2381"&gt;out_altvoltage13_DEV_CLK_frequency = 122880000&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2382" data-end="2428"&gt;
&lt;p data-start="2384" data-end="2428"&gt;SYSREF nodes exist and show &lt;code data-start="2412" data-end="2419"&gt;60000&lt;/code&gt; (60 kHz)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-start="2430" data-end="2471"&gt;B) Tested changing FMC_CLK frequency&lt;/h4&gt;
&lt;p data-start="2472" data-end="2512"&gt;I tried to write other clock rates into:&lt;/p&gt;
&lt;ul data-start="2513" data-end="2618"&gt;
&lt;li data-start="2513" data-end="2618"&gt;
&lt;p data-start="2515" data-end="2618"&gt;&lt;code data-start="2515" data-end="2583"&gt;/sys/bus/iio/devices/iio:deviceX/out_altvoltage1_FMC_CLK_frequency&lt;/code&gt;&lt;br /&gt; and then &lt;code data-start="2593" data-end="2617"&gt;echo 1 &amp;gt; sync_dividers&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="2620" data-end="2794"&gt;Some values are accepted (e.g., 153.6 MHz, 245.76 MHz, 307.2 MHz), but the JESD TX still fails with the same &lt;strong data-start="2729" data-end="2760"&gt;CPLL/QPLL TX Unlocked Error&lt;/strong&gt; and &lt;strong data-start="2765" data-end="2793"&gt;enable lane clock failed&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 data-start="2796" data-end="2833"&gt;C) Checked Linux clock framework&lt;/h4&gt;
&lt;p data-start="2834" data-end="3036"&gt;&lt;code data-start="2834" data-end="2869"&gt;/sys/kernel/debug/clk/clk_summary&lt;/code&gt; shows &lt;code data-start="2876" data-end="2891"&gt;ad9528-1_out1&lt;/code&gt; and also clocks like &lt;code data-start="2913" data-end="2925"&gt;tx_out_clk&lt;/code&gt;, &lt;code data-start="2927" data-end="2938"&gt;tx_gt_clk&lt;/code&gt;, etc., but when the failure happens, the lane clock is never established and JESD stays disabled.&lt;/p&gt;
&lt;h4 data-start="3038" data-end="3090"&gt;D) Tried reset sequencing / re-enabling drivers&lt;/h4&gt;
&lt;ul data-start="3091" data-end="3260"&gt;
&lt;li data-start="3091" data-end="3121"&gt;
&lt;p data-start="3093" data-end="3121"&gt;Forced &lt;code data-start="3100" data-end="3121"&gt;ensm_mode=radio_off&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="3122" data-end="3177"&gt;
&lt;p data-start="3124" data-end="3177"&gt;Disabled/enabled JESD cores (&lt;code data-start="3153" data-end="3176"&gt;echo 0/1 &amp;gt; .../enable&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="3178" data-end="3229"&gt;
&lt;p data-start="3180" data-end="3229"&gt;Disabled/enabled transceiver cores (&lt;code data-start="3216" data-end="3228"&gt;axi-adxcvr&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="3230" data-end="3260"&gt;
&lt;p data-start="3232" data-end="3260"&gt;Unbind/bind platform drivers&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="3262" data-end="3283"&gt;The failure persists.&lt;/p&gt;
&lt;h4 data-start="3285" data-end="3333"&gt;E) Vivado timing / clock period constraints&lt;/h4&gt;
&lt;p data-start="3334" data-end="3519"&gt;I also adjusted &lt;code data-start="3350" data-end="3364"&gt;create_clock&lt;/code&gt; constraints for ref clocks (example: 8.0 ns vs 8.138 ns) but this does not fix the issue. The failure appears hardware/clocking related (PLL not locking).&lt;/p&gt;
&lt;h3 id="mcetoc_1jgne62534" data-start="3521" data-end="3555"&gt;5) My understanding / question&lt;/h3&gt;
&lt;p data-start="3556" data-end="3576"&gt;My understanding is:&lt;/p&gt;
&lt;p data-start="3578" data-end="3785"&gt;&lt;strong data-start="3578" data-end="3596"&gt;AD9528 FMC_CLK&lt;/strong&gt; &amp;rarr; goes through &lt;strong data-start="3612" data-end="3619"&gt;FMC&lt;/strong&gt; &amp;rarr; arrives to FPGA pins &lt;code data-start="3643" data-end="3657"&gt;ref_clk*_p/n&lt;/code&gt; &amp;rarr; becomes &lt;strong data-start="3668" data-end="3680"&gt;GTREFCLK&lt;/strong&gt; &amp;rarr; used by &lt;strong data-start="3691" data-end="3715"&gt;Xilinx GTX QPLL&lt;/strong&gt;&amp;rarr; creates TX serial clock &amp;rarr; provides &lt;strong data-start="3753" data-end="3765"&gt;lane_clk&lt;/strong&gt; for AXI-JESD204-TX.&lt;/p&gt;
&lt;p data-start="3787" data-end="3896"&gt;So the message &lt;code data-start="3802" data-end="3839"&gt;axi_adxcvr... CPLL/QPLL TX Unlocked&lt;/code&gt; is coming from the &lt;strong data-start="3859" data-end="3895"&gt;FPGA transceiver PLL not locking&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-start="3898" data-end="4003"&gt;&lt;strong data-start="3900" data-end="3913"&gt;Question:&lt;/strong&gt;&lt;br data-start="3913" data-end="3916" /&gt; What are the most likely causes for &lt;strong data-start="3952" data-end="3981"&gt;GTX QPLL not locking&lt;/strong&gt; in this porting case?&lt;/p&gt;
&lt;p data-start="4005" data-end="4065"&gt;Specifically, I would like guidance on what to verify first:&lt;/p&gt;
&lt;ul data-start="4066" data-end="4389"&gt;
&lt;li data-start="4066" data-end="4135"&gt;
&lt;p data-start="4068" data-end="4135"&gt;Refclk frequency mismatch vs the GTX configuration / JESD lane rate&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="4136" data-end="4200"&gt;
&lt;p data-start="4138" data-end="4200"&gt;Wrong refclk pin mapping / IBUFDS_GTE2 usage / polarity issues&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="4201" data-end="4262"&gt;
&lt;p data-start="4203" data-end="4262"&gt;Any required constraints or resets for GTX reference clocks&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="4263" data-end="4389"&gt;
&lt;p data-start="4265" data-end="4389"&gt;Any known requirements in the zc706 design (Si5324/clocking assumptions) that do not apply directly to ADRV9371 FMC clocking&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TES feature request: transceiver output sample magnitude view</title><link>https://ez.analog.com/thread/600095?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:18:12 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:28e0abcd-d7a7-4aee-974d-2b8ffaea3856</guid><dc:creator>RKH</dc:creator><slash:comments>1</slash:comments><comments>https://ez.analog.com/thread/600095?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/600095/tes-feature-request-transceiver-output-sample-magnitude-view/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Would it be possible to provide the feature within TES to view the transceiver output sample magnitudes [sqrt(I^2+Q^2)] with either linear or log scaling?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>ZCU102+AD9371</title><link>https://ez.analog.com/thread/589180?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:15:46 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:f556a223-ad97-4b86-b3bc-8bb590bcc1de</guid><dc:creator>PavankumarV</dc:creator><slash:comments>17</slash:comments><comments>https://ez.analog.com/thread/589180?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/589180/zcu102-ad9371/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;hi all, i have ZCU102+AD9371, i am new to Programming and want to learn and implement frequency measurement algorithm. share if any links or docs for quick start.&lt;/p&gt;
&lt;p&gt;thanks in advance.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>ad9371 +40MHz offset in Tx</title><link>https://ez.analog.com/thread/590786?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:14:43 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:b02b8745-dcda-464f-82af-2f952348762b</guid><dc:creator>RFSOM</dc:creator><slash:comments>1</slash:comments><comments>https://ez.analog.com/thread/590786?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/590786/ad9371-40mhz-offset-in-tx/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;hello, with default configuration, I see +40Mhz offset in the Tx of AD9371. moving the LO moves the offset so 2500MHz transmit at 2540. disabling Tx channles, destroying buffer and falsing the cyclic transmit DO NOT stop the transmit. only builidng a new waveform and transmitting it aligns the transmit freq. Once destoying the buffer, the signal jumps again to the +40MHz offset to the respective LO. the signal is strong&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>AD9371 Mykonos Charge Pump Error</title><link>https://ez.analog.com/thread/80830?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:14:28 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:f673e325-ec20-41e3-9ab3-9a6437437731</guid><dc:creator>RMahar</dc:creator><slash:comments>6</slash:comments><comments>https://ez.analog.com/thread/80830?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/80830/ad9371-mykonos-charge-pump-error/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am developing a setup using a custom AD9371 board with the ZC706 for the baseband processor. &amp;nbsp;On some units, I intermittently get the following debug message during configuration:&lt;/p&gt;
 &lt;p&gt;.&lt;/p&gt;
 &lt;p&gt;.&lt;/p&gt;
 &lt;p&gt;.&lt;/p&gt;
 &lt;p&gt;clock locked&lt;br /&gt;BBIC JESD204B Initialization&lt;br /&gt;Mykonos Initialization&lt;br /&gt;MESSAGE: 0: MYKONOS_resetDevice()&lt;/p&gt;
 &lt;p&gt;MESSAGE: 0: MYKONOS_initialize()&lt;/p&gt;
 &lt;p&gt;MESSAGE: 0: MYKONOS_verifyDeviceDataStructure()&lt;/p&gt;
 &lt;p&gt;MESSAGE: 0: MYKONOS_verifyProfiles()&lt;/p&gt;
 &lt;p&gt;MESSAGE: 0: MYKONOS_setSpiSettings()&lt;/p&gt;
 &lt;p&gt;MESSAGE: 0: MYKONOS_initDigitalClocks()&lt;/p&gt;
 &lt;p&gt;MESSAGE: 0: MYKONOS_calculateScaledDeviceClk_kHz()&lt;/p&gt;
 &lt;p&gt;MESSAGE: 0: MYKONOS_waitForEvent()&lt;/p&gt;
 &lt;p&gt;WARNING: 233: Clock PLL Charge Pump Cal event timed out in MYKONOS_waitForEvent()&lt;/p&gt;
 &lt;p&gt;Clock PLL Charge Pump Cal event timed out in MYKONOS_waitForEvent()&lt;/p&gt;
 &lt;p&gt;MESSAGE: 0: MYKONOS_checkPllsLockStatus()&lt;/p&gt;
 &lt;p&gt;PLL not locked&lt;/p&gt;
 &lt;p&gt;As this does not happen on all boards or consistently on all power ups, what should I look at for troubleshooting?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>ZCU102 and ADRV9371</title><link>https://ez.analog.com/thread/588493?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:14:20 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:cbe28d5c-b164-442a-9f7f-73934600eeab</guid><dc:creator>Maxplus</dc:creator><slash:comments>7</slash:comments><comments>https://ez.analog.com/thread/588493?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/588493/zcu102-and-adrv9371/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I have a ZCU102 rev1 board, and ADRV9371 eval board that I&amp;#39;m starting a project on.&lt;/p&gt;
&lt;p&gt;I manage to communicate with the ADI IIO Scope Capture.&lt;/p&gt;
&lt;p&gt;However, I like to use the ADRV9371 TESS but the software is not seeing it. Not sure why this is happening as it is ok with ADI IIO.&lt;/p&gt;
&lt;p&gt;Is it possible to operate the TESS with ZCU102 and ADRV9371?&lt;/p&gt;
&lt;p&gt;Regarding the scope capture, I can see plots in the time domain. Are these individual I and Q components or is it the magnitude of sqrt (I^2 + Q^2)? Thank you&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Maximum and Minimum Sampling Rates for Tx and Rx in AD9371 with TES or FilterWizard application</title><link>https://ez.analog.com/thread/587090?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:13:21 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:3f38e9df-5154-4b49-8db4-1c4e0e2303fb</guid><dc:creator>IttyGayathri</dc:creator><slash:comments>3</slash:comments><comments>https://ez.analog.com/thread/587090?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/587090/maximum-and-minimum-sampling-rates-for-tx-and-rx-in-ad9371-with-tes-or-filterwizard-application/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am currently working with the AD9371 RF transceiver and using either the Transceiver Evaluation Software (TES) or the AD9371 FilterWizard application for a No-OS application. I need to configure the sampling rates for both the Tx and Rx paths.&lt;/p&gt;
&lt;p&gt;Could someone provide me with the maximum and minimum sampling rates that can be configured for Tx and Rx using these tools or is there any other tools where I can configure the minimum sampling rate less than 50MHz and above 500MHz?&lt;/p&gt;
&lt;p&gt;Specifically:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What is the maximum and minimum sampling rate that can be set for Tx (transmit) in TES or FilterWizard?&lt;/li&gt;
&lt;li&gt;What is the maximum and minimum sampling rate that can be set for Rx (receive) in TES or FilterWizard?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If there are any additional considerations or constraints when setting these rates, such as specific configurations or limitations based on the sampling rate, I would appreciate that information as well.&lt;/p&gt;
&lt;p&gt;Thank you in advance for your help!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Configuring AD9371 for Integer IQ Sample Rate Below 49.152 MHz in No OS Application:</title><link>https://ez.analog.com/thread/584111?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:12:49 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:fd5e70a1-67b5-4624-98ef-93e1d916ed60</guid><dc:creator>IttyGayathri</dc:creator><slash:comments>5</slash:comments><comments>https://ez.analog.com/thread/584111?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/584111/configuring-ad9371-for-integer-iq-sample-rate-below-49-152-mhz-in-no-os-application/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am working on an AD9371 and ZC706 No OS application, configuring the AD9371 transceiver with a fixed device clock of 122.88 MHz. To ensure compatibility with my system, I need to achieve an IQ sample rate that is an integer and less than 49.152 MHz.&amp;nbsp;&amp;nbsp;Is there any TES gui software source, for changing the device clock.&lt;/p&gt;
&lt;p&gt;I have attempted to configure the transceiver using the available settings but have not yet achieved the desired integer sample rate below 49.152 MHz. Could anyone confirm if my approach is correct, or if there are any other methods or configurations I should consider to achieve this?&lt;/p&gt;
&lt;p&gt;Any insights or suggestions would be greatly appreciated. Thank you!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>PLL LOCK STATUS for AD9371</title><link>https://ez.analog.com/thread/586398?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:12:45 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:153a6d04-d47f-4675-8c0b-ca00bfc8f437</guid><dc:creator>Prasanth89</dc:creator><slash:comments>1</slash:comments><comments>https://ez.analog.com/thread/586398?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/586398/pll-lock-status-for-ad9371/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Good Morning Sir / Madam,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;we are working on AD9371 evaluation board with xilinx linux drivers.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Our application needs to set continuously RX RF LO at a speed off 500microsecond.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;so would like to know the following&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; a) what is the PLL settling time&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; b) how to check PLL lock status from user code.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; c) How to reduce the settling time if required.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to Dynamic Configuration of Sampling Frequencies, Device Frequency, and Bandwidth for AD9371 and AD9358 Without Using Mykonos.c Files from TEST Software</title><link>https://ez.analog.com/thread/584110?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:12:08 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:ccb3c20f-195a-43f7-949e-555da2eb7b0c</guid><dc:creator>IttyGayathri</dc:creator><slash:comments>7</slash:comments><comments>https://ez.analog.com/thread/584110?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/584110/how-to-dynamic-configuration-of-sampling-frequencies-device-frequency-and-bandwidth-for-ad9371-and-ad9358-without-using-mykonos-c-files-from-test-software/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;#39;m working with the AD9371 and AD9358 RF transceivers on a ZC706 evaluation board. My project involves configuring the sampling frequencies, device frequency, and bandwidth for these transceivers. So far, I&amp;#39;ve been using the TES (Transceiver Evaluation Software) to generate the necessary Mykonos.c files, which I then integrate into my project.&lt;/p&gt;
&lt;p&gt;However, I would like to streamline this process by dynamically configuring these parameters directly from my code instead of relying on pre-generated Mykonos.c files.&lt;/p&gt;
&lt;p&gt;Could anyone provide guidance on how to achieve this? Are there specific API functions or register settings that can be used for dynamic configuration? Any sample code or references to relevant documentation would be greatly appreciated.&lt;/p&gt;
&lt;p&gt;Thank you in advance for your help!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Configuring AD9371 for Integer IQ Sample Rate Below 49.152 MHz in No OS Application:</title><link>https://ez.analog.com/thread/583926?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:11:56 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:6980a4ef-0e0e-4b02-8387-6890cc30bf77</guid><dc:creator>Xdlinx</dc:creator><slash:comments>1</slash:comments><comments>https://ez.analog.com/thread/583926?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/583926/configuring-ad9371-for-integer-iq-sample-rate-below-49-152-mhz-in-no-os-application/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am working on an AD9371 and ZC706 No OS application, configuring the AD9371 transceiver with a fixed device clock of 122.88 MHz. To ensure compatibility with my system, I need to achieve an IQ sample rate that is an integer and less than 49.152 MHz.&amp;nbsp;&amp;nbsp;Is there any TES gui software source, for changing the device clock.&lt;/p&gt;
&lt;p&gt;I have attempted to configure the transceiver using the available settings but have not yet achieved the desired integer sample rate below 49.152 MHz. Could anyone confirm if my approach is correct, or if there are any other methods or configurations I should consider to achieve this?&lt;/p&gt;
&lt;p&gt;Any insights or suggestions would be greatly appreciated. Thank you!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Disabling ORX channel and allocating all four JESD lanes to RX</title><link>https://ez.analog.com/thread/578042?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:11:47 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:2d30dfcf-4e9a-4c4d-9c1c-83102d04e6a8</guid><dc:creator>gavint</dc:creator><slash:comments>23</slash:comments><comments>https://ez.analog.com/thread/578042?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/578042/disabling-orx-channel-and-allocating-all-four-jesd-lanes-to-rx/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello&lt;/p&gt;
&lt;p&gt;I have an ADRV9375 evaluation board that I am using with a ZCU102. I have used the ADI 2022_R2 HDL reference design to build the FPGA firmware in Vivado. I am using the ADI 2022_R2 meta ADI layer in Petalinux. It is working in the following configuration:&lt;/p&gt;
&lt;p&gt;RX: 125MSPS, 2 channels, 2 JESD lanes&lt;/p&gt;
&lt;p&gt;ORX: 250MSPS, 1 channel, 2 JESD lanes&lt;/p&gt;
&lt;p&gt;TX: 250MSPS, 2 channels, 4 JESD lanes&lt;/p&gt;
&lt;p&gt;The customer has now requested that I change the configuration and allocate all four RX JESD lanes to the RX channel. So the configuration becomes:&lt;/p&gt;
&lt;p&gt;RX: 166.67MSPS, 2 channels, 4 JESD lanes&lt;/p&gt;
&lt;p&gt;ORX: 166.67MSPS, only internal to the AD9375, no data to the FPGA&lt;/p&gt;
&lt;p&gt;TX: 166.67MSPS, 2 channels, 4 JESD lanes&lt;/p&gt;
&lt;p&gt;I am about to start making the changes to the FPGA HDL firmware so that all four RX JESD lanes are allocated to the RX.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, I wanted to check:&lt;/p&gt;
&lt;p&gt;1) Is this configuration (all 4 lanes allocated to RX with no OBS RX) supported by the IIO Linux device driver?&lt;/p&gt;
&lt;p&gt;2) If so, what are the required updates to the device tree to support this configuration? I assume I need to make changes to the JESD framer configuration in the device tree.&lt;/p&gt;
&lt;p&gt;3) If not, how extensive would the changes need to be to the IIO Linux device driver to support this mode? Some guidance would be greatly appreciated.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Issue with the SPI for ADRV9371 Board on a VCU108</title><link>https://ez.analog.com/thread/80837?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:11:24 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:2294e086-e928-4d12-9398-ff26e83162fd</guid><dc:creator>L.Christin</dc:creator><slash:comments>8</slash:comments><comments>https://ez.analog.com/thread/80837?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/80837/issue-with-the-spi-for-adrv9371-board-on-a-vcu108/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
 &lt;p style="text-indent:.5in;"&gt;We are working with the ADRV9371, but we get an issue when we try to communicate by the SPI. We use the Xilinx SPI IP on a VCU108, with a Micro blaze MCU to implement the Mykonos code.&lt;/p&gt;
 &lt;p style="text-indent:.5in;"&gt;We put both Resetb and FMC_clk_resetb to one, and we have something coming out from the FPGA SPI, we checked it with a probe and everything is going through the FMC connector as it should be.&lt;/p&gt;
 &lt;p style="text-indent:.5in;"&gt;But at the moment we can’t get any response coming back from the Analog device board, but it’s working with the TES software on a ZC706. We compared the frame shape and they match (clock polarity and phases are good).&lt;/p&gt;
 &lt;p style="padding:0px;text-indent:.5in;"&gt;&amp;nbsp;&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;Did we forgot something that is essential for the AD9371 evaluation board?&lt;/li&gt;
  &lt;li&gt;Also what is the purpose of the HAL_initSpi() in CMB_setSPIOptions() because we don´t have any information about this, what do we need to do to replace it? It is used to change the register of the AD9371 SPI or only for the FPGA?&lt;/li&gt;
  &lt;li&gt;In the constraint file we can´t use the IOSTANDARD LVCMOS25 we can only use LVCMOS18, can we have issue due to that with the High level?&lt;/li&gt;
 &lt;/ol&gt;
 &lt;p style="text-indent:.5in;"&gt;Best regards.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How Do I load the Binary File into an AD9373?</title><link>https://ez.analog.com/thread/574154?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:10:55 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:e2142ccd-7209-4f0a-a140-4309ed8cc436</guid><dc:creator>DaveTacoma</dc:creator><slash:comments>1</slash:comments><comments>https://ez.analog.com/thread/574154?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/574154/how-do-i-load-the-binary-file-into-an-ad9373/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p class="western" style="line-height:100%;margin-bottom:0in;" align="left"&gt;1. It seems that we need to load a binary file into the AD9371 ARM processor as part of the boot-up procedure. Is &amp;ldquo;Mykonos_M3.bin&amp;rdquo; the name of the correct binary file, or is there a more recent version?&lt;/p&gt;
&lt;p class="western" style="line-height:100%;margin-bottom:0in;" align="left"&gt;2. Does the binary file get loaded into the ARM processor using the SPI interface, or is there some other method which is used? Can I get a copy of the source code for the ARM init procedure?&lt;/p&gt;
&lt;p class="western" style="line-height:100%;margin-bottom:0in;" align="left"&gt;3. Is the SPI interface implemented as an HDL object, or is it implemented by &amp;ldquo;bit banging&amp;rdquo;? Did you use code for this which was supplied by Analog Devices, or did you write it yourself? Can I get a copy of the SPI drivers and/or SPI IP core?&lt;/p&gt;
&lt;p class="western" style="line-height:100%;margin-bottom:0in;" align="left"&gt;4. Is the SPI driver used for the initialization of the ARM the same driver used for sending Tx and Rx commands to the chip?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TES GUI Source Code</title><link>https://ez.analog.com/thread/102459?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:10:41 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:1128d0b3-0139-480b-aa1a-80769b36f8bb</guid><dc:creator>myZone2180</dc:creator><slash:comments>3</slash:comments><comments>https://ez.analog.com/thread/102459?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/102459/tes-gui-source-code/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Is the latest release of the Windows TES GUI 2.0.68 Source Code available? Or earlier releases?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Looking for example IronPython or C code for reading(writing)&amp;nbsp; I/Q data from(to) AD9371 Zynq platform in a Windows aplication.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>AD9375 CFR</title><link>https://ez.analog.com/thread/570822?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:10:25 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:d904c730-56ed-4d55-96ee-89088b2775fd</guid><dc:creator>Yashar</dc:creator><slash:comments>3</slash:comments><comments>https://ez.analog.com/thread/570822?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/570822/ad9375-cfr/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;May I ask you to know whether i can control the CFR of signal with AD9375&amp;#39;S SOFTWARE?! OR we can not control it at all?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Algorithm negotiation fail</title><link>https://ez.analog.com/thread/564800?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:08:26 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:0d62a19c-8e4d-493a-a625-d774b4cc26be</guid><dc:creator>Ivan18</dc:creator><slash:comments>1</slash:comments><comments>https://ez.analog.com/thread/564800?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/564800/algorithm-negotiation-fail/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m using the AD9371 Transceiver Evaluation Software but when I try to connect I have the next error message:&amp;nbsp;Algorithm negotiation fail; Platform problem:&amp;nbsp;&lt;span&gt;Algorithm negotiation fail. On the right botoom corner I have the nextone message: Please update SD card, but I have the last version of OS.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Now, I have a setup with both boards on a AP and my host PC too using DHCP for IP configuration. When I do&amp;nbsp;&amp;quot;ping&amp;quot; between my PC and the boad I get a connection and the other way around as well. I have unzipped the src folder (&lt;a href="https://www.analog.com/en/design-center/landing-pages/001/transceiver-evaluation-software.html"&gt;Wideband RF Transceiver Evaluation Software | Analog Devices&lt;/a&gt;) in the directory &amp;quot;/&amp;quot; on my board, I dont have run nothing of this new directory because I dont have read about it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Regards.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>SPI API control of TX datapath attenuation -- Value discrepancy</title><link>https://ez.analog.com/thread/559262?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:08:20 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:ce2cade6-8334-453c-bb22-7408016cbed5</guid><dc:creator>Matt_Centauri</dc:creator><slash:comments>12</slash:comments><comments>https://ez.analog.com/thread/559262?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/559262/spi-api-control-of-tx-datapath-attenuation----value-discrepancy/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Tx attenuation step size is set to 0.05 dB (TXATTEN_0P05_DB)&lt;br /&gt;&lt;br /&gt;When running the following API -- MYKONOS_setTx1Attenuation(&amp;amp;device,15000) -- I am trying to attenuate by 15 decibels. This is within range of the TX attenuation, from 0 - 41.95 dB.&lt;br /&gt;&lt;br /&gt;However, later on when I call the get API -- MYKONOS_getTx1Attenuation(&amp;amp;device,&amp;amp;atten) -- the attenuation value shown is 17000 mdB. Nowhere else do I set the attenuation to this value via the API calls.&lt;br /&gt;&lt;br /&gt;Any idea why this discrepancy is happening? The step size should not be an issue, but even if it were the value should be lower, not higher.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Experiencing inconsistency with MYKONOS_waitInitCal timing out With the TX_QEC init cal flag enabled</title><link>https://ez.analog.com/thread/563143?ContentTypeID=0</link><pubDate>Fri, 30 Jan 2026 00:08:16 GMT</pubDate><guid isPermaLink="false">a884d118-f55f-49de-87eb-b9dbaf99b3e3:778b824a-1e1b-4fa1-af6a-2bd5afae1930</guid><dc:creator>Matt_Centauri</dc:creator><slash:comments>3</slash:comments><comments>https://ez.analog.com/thread/563143?ContentTypeID=0</comments><wfw:commentRss>https://ez.analog.com/rf/wide-band-rf-transceivers/design-support-ad9371/f/q-a/563143/experiencing-inconsistency-with-mykonos_waitinitcal-timing-out-with-the-tx_qec-init-cal-flag-enabled/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;We&amp;#39;re running into an issue where 9.7% of the time MYKONOS_waitInitCals returns the error: MYKONOS_ERR_WAIT_INITCALS_ARMERROR. The data we measured was over a span of 1300+ configurations of the chip across a few unique mykonos profiles. This specific error is split evenly across profiles that target RX and TX only configurations. To be clear, the profilesValid mask is set to 0x7, which means the TX,RX, and ORX profiles are &lt;strong&gt;valid&lt;/strong&gt;, however when we run a &amp;quot;TX only&amp;quot; configuration we only run initial calibrations for the TX side (including the QEC calibration). Same goes for RX only configuration.&lt;br /&gt;&lt;br /&gt;Essentially, 5% of the time our configuration sequence times out for initial calibrations when we used TX calibration flags, and 5% of the time it happens with RX.&lt;br /&gt;&lt;br /&gt;The kicker to all of this is, 90% of the time we don&amp;#39;t experience these timeouts on the &lt;strong&gt;same set of unique configurations&lt;/strong&gt;. As I mentioned, we logged this data over 1300+ configuration sequences, but there&amp;#39;s a small set of &lt;strong&gt;unique&lt;/strong&gt; configurations that are getting repeated. So the question is, why does the MYKONOS_waitInitCals timeout so inconsistently? &lt;strong&gt;Why does this number&lt;/strong&gt; &lt;strong&gt;drop to zero when QEC calibration flags are commented out?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I tried looking at similar posts to this forum about this very issue but it doesn&amp;#39;t seem to be very clear. One thing mentioned is making sure the ports are impedance matched, but these configurations are all happening in the same environment so why would it fail 10% of the time?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>