From 27692d6b932a0cb37f3d95df84ddfc0000a0372b Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Fri, 27 Mar 2026 16:50:37 +0200 Subject: [PATCH 1/5] reference-designs/eval-ad6676: Add untracked wiki-migration pages Co-Authored-By: Claude Opus 4.6 --- ...ad6676-wideband_rx_subsystem_ad6676ebz.rst | 95 +++ .../reference-designs/eval-ad6676/ad6676.rst | 564 ++++++++++++++++++ .../reference-designs/eval-ad6676/index.rst | 8 + ...ad6676-wideband_rx_subsystem_ad6676ebz.rst | 95 +++ .../linux-drivers/iio-adc/ad6676.rst | 564 ++++++++++++++++++ 5 files changed, 1326 insertions(+) create mode 100644 docs/solutions/reference-designs/eval-ad6676/ad6676-wideband_rx_subsystem_ad6676ebz.rst create mode 100644 docs/solutions/reference-designs/eval-ad6676/ad6676.rst create mode 100644 docs/solutions/reference-designs/eval-ad6676/index.rst create mode 100644 docs/wiki-migration/resources/eval/ad6676-wideband_rx_subsystem_ad6676ebz.rst create mode 100644 docs/wiki-migration/resources/tools-software/linux-drivers/iio-adc/ad6676.rst diff --git a/docs/solutions/reference-designs/eval-ad6676/ad6676-wideband_rx_subsystem_ad6676ebz.rst b/docs/solutions/reference-designs/eval-ad6676/ad6676-wideband_rx_subsystem_ad6676ebz.rst new file mode 100644 index 00000000000..d3cb84c84c4 --- /dev/null +++ b/docs/solutions/reference-designs/eval-ad6676/ad6676-wideband_rx_subsystem_ad6676ebz.rst @@ -0,0 +1,95 @@ +AD6676 : Design Tools and Startup Guide for the AD6676 evaluation board, a high dynamic range, Wideband Receiver +================================================================================================================ + +Summary +------- + +This wiki site includes information about the :adi:`ad6676` and the associated evaluation board, the :adi:`AD6676EBZ `. + +The :adi:`ad6676` datasheet provides a significant amount of information to aid in understanding the :adi:`ad6676` capabilities and can assist in the evaluation process. The datasheet along with the user guide and other board files provided here should be consulted when using the evaluation board. + +The AD6676 is compatible with the :adi:`HSC-ADC-EVALEZ `, the ADI FPGA-Based Data Capture Kit. + +The software required to use the AD6676EBZ with the :adi:`HSC-ADC-EVALEZ ` capture board can be downloaded at the following Analog Devices ftp site: + +`AD6676 Evaluation Software `_ + +For additional information or questions, send an email to highspeed.converters@analog.com. The user guide describes the AD6676 evaluation board, :adi:`AD6676EBZ `, which provides all of the support circuitry required to operate the part in various modes and configurations. The application software used to interface with the devices is also described. + +Features +-------- + +- Full featured evaluation board with FMC connector for the :adi:`AD6676`, a Wideband IF Receiver Subsystem +- High Instantaneous dynamic range + + - IIP up to 36 dBm, + + - NSD as low as -159 dBFS/Hz, + + - Noise Figure as low as 13 dB + - Spurious tones < -97 dBFS + +- On chip digital Signal Processing including + + - NCO and quadrature digital downconverter + + - Decimation + + - AGC Configuration + +- SPI interface for setup and control +- JESD204B single or dual lane outputs +- On-board LDO regulator powered through the FMC interface +- MATLAB (R) User Interface provides complete AD6676 configuration based on + user entries + +Helpful Links +------------- + +- :adi:`AD6676` data sheet +- High Speed ADC Capture Evaluation Kit Rev E (:adi:`HSC-ADC-EVALEZ `) +- :adi:`AN-835 Application Note `, *Understanding ADC Testing and Evaluation* +- :adi:`AN-877 Application Note `, *Interfacing to High Speed ADCs via SPI* +- :adi:`VRMS / dBm / dBu / dBV Calculator ` +- :adi:`ADI RF Impedance Matching Tool ` +- `ADIsimRF Software `_ +- :adi:`ADI RF/IF Transceiver Products Web page ` +- :doc:`AD6676 Wideband IF Receiver Subsystem Linux device driver ` + +AD6676 Evaluation Platform User Guides +-------------------------------------- + +User Guide for the AD6676 `ad6676_evb_rev1_quickstartguide_2015_03_27.pdf `_ (UPDATED March 2015) + +AD6676 Evaluation Board Files +----------------------------- + +AD6676 Evaluation Board Schematic Board 13029 Rev D `SCHEMATIC [PDF File `_] AD6676 Evaluation Board Gerber Files Board 13029 Rev D `GERBERS [Zip File `_] AD6676 Evaluation Board BOM File Board 13029 Rev D `Bill of Material [XLS file `_] + +AD6676 Software Files +--------------------- + +AD6676 DemoTool Software Installation Files : `AD6676 Evaluation Software `_ + +AD6676 Evaluation Board HDL Libraries and Project +------------------------------------------------- + +The link below is to an external website which has a project with HDL code that +can be used with some FPGA development board to interface to the AD6676 + +`AD6676EVB HDL project documentation `_ :git-hdl:`External Link to github.com AD6676 library ` :git-hdl:`External Link to github.com AD6676EVB project ` `External Link to general ADI github.com website `_ + +AD6676 Ibis Model Files +----------------------- + +AD6676 Ibis Model `AD6676 Ibis [ZIP file `_] + +AD6676 Ibis AMI Model Files +--------------------------- + +AD6676 Ibis AMI Model Email highspeed.converters@analog.com to request + +AD6676 Matlab R2013a Simulink Model Files +----------------------------------------- + +AD6676 Simulink Model Package `AD6676 Simulink Model `_ AD6676 Simulink User's Guide // `AD6676 Simulink User's Guide [pdf file `_] diff --git a/docs/solutions/reference-designs/eval-ad6676/ad6676.rst b/docs/solutions/reference-designs/eval-ad6676/ad6676.rst new file mode 100644 index 00000000000..eba95c7c476 --- /dev/null +++ b/docs/solutions/reference-designs/eval-ad6676/ad6676.rst @@ -0,0 +1,564 @@ +AD6676 Wideband IF Receiver Subsystem Linux device driver +========================================================= + +The AD6676 is a highly integrated IF subsystem that can digitize radio frequency +(RF) bands up to 160 MHz in width centered on an intermediate frequency (IF) of +70 MHz to 450 MHz. + +Supported Devices +----------------- + +- :adi:`AD6676` + +Reference Circuits +------------------ + +- :adi:`AD6676-EBZ ` + +Evaluation Boards +----------------- + +- :adi:`AD6676-EBZ ` +- :doc:`AD6676 : Design Tools and Startup Guide for the AD6676 evaluation board, a high dynamic range, Wideband Receiver ` + +Description +----------- + +This is a Linux industrial I/O (:doc:`IIO `) subsystem driver, targeting RF Transceivers. The industrial I/O subsystem provides a unified framework for drivers for many different types of converters and sensors using a number of different physical interfaces (i2c, spi, etc). See :doc:`IIO ` for more information. + +Source Code +=========== + +Status +------ + ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| Source | Mainlined? | ++==========================================================================================+=========================================================================================+ +| :git-linux:`git ` | :git-linux:`No ` | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + +Files +----- + ++----------+---------------------------------------------------------------------------------------------------------------+ +| Function | File | ++==========+===============================================================================================================+ +| driver | :git-linux:`drivers/iio/adc/ad6676.c` | ++----------+---------------------------------------------------------------------------------------------------------------+ +| include | :git-linux:`drivers/iio/adc/ad6676.h` | ++----------+---------------------------------------------------------------------------------------------------------------+ + +Related Device Drivers +~~~~~~~~~~~~~~~~~~~~~~ + ++----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | File | ++==========+===============================================================================================================================================+ +| driver | :git-linux:`drivers/iio/adc/cf_axi_adc_core.c` | ++----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| driver | :git-linux:`drivers/iio/adc/cf_axi_adc_ring_stream.c` | ++----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| include | :git-linux:`drivers/iio/adc/cf_axi_adc.h` | ++----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + +Example Linux Device-Tree Initialization +======================================== + +The AD6676 driver is a spi-bus driver and can currently only be instantiated via +device tree. + +Required devicetree properties: + +- compatible: Should always be "ad6676" +- reg: SPI slave select number + ++------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | File | ++========================+===================================================================================================================================================+ +| AD6676-EBZ Device Tree | :git-linux:`arch/arm/boot/dts/zynq-zc706-adv7511-ad6676-fmc.dts` | ++------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ + +Device Driver Customization +=========================== + ++-----------------------------------+----------------------------------------------------+ +| Devicetree Property | Description | ++===================================+====================================================+ +| adi,adc-frequency-hz | Initial ADC frequency in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,adc-frequency-fixed-enable | Prevents ADC frequency changes after initial setup | ++-----------------------------------+----------------------------------------------------+ +| adi,use-external-clk-enable | Use external CLK | ++-----------------------------------+----------------------------------------------------+ +| adi,decimation | Initial decimation rate [12, 16, 24, 32] | ++-----------------------------------+----------------------------------------------------+ +| adi,intermediate-frequency-hz | Initial IF in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,intermediate-frequency-min-hz | Allowed minimum IF in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,intermediate-frequency-max-hz | Allowed maximum IF in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,bandwidth-hz | Initial bandwidth in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,bandwidth-margin-low-mhz | Initial bandwidth margin low in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,bandwidth-margin-high-mhz | Initial bandwidth margin high in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,bandwidth-margin-if-mhz | Initial bandwidth margin IF in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,external-inductance-l-nh | The inductance of the external inductors in nH | ++-----------------------------------+----------------------------------------------------+ +| adi,idac1-fullscale-adjust | Initial IDAC_FS [64..16] | ++-----------------------------------+----------------------------------------------------+ +| adi,shuffler-control | Initial shuffler control setting | ++-----------------------------------+----------------------------------------------------+ +| adi,shuffler-thresh | Initial shuffler threshold | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-scrambling-enable | Enables JESD204B link scrambling | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-use-lvds-syncb-enable | Use LVDS SYNCB | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-powerdown-sysref-enable | Powerdown SYSREF | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-l-lanes | Number of JESD204B lanes | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-f-frames-per-multiframe | Number of frames per multiframe | ++-----------------------------------+----------------------------------------------------+ +| adi,spi-3wire-enable | Enables SPI 3-WIRE mode | ++-----------------------------------+----------------------------------------------------+ + +Enabling Linux driver support +============================= + +Configure kernel with "make menuconfig" (alternatively use "make xconfig" or +"make qconfig") + +.. hint:: + + The AD6676 driver depends on CONFIG_SPI + +Adding Linux driver support +=========================== + +Configure kernel with "make menuconfig" (alternatively use "make xconfig" or +"make qconfig") + +:: + + Linux Kernel Configuration + Device Drivers ---> + <*> Industrial I/O support ---> + --- Industrial I/O support + - *- Enable ring buffer support within IIO + - *- Industrial I/O lock free software ring + - *- Enable triggered sampling support + + Analog to digital converters + [--snip--] + + <*> Analog Devices AD9467 AD9643 High-Speed AXI ADC driver + + [--snip--] + +Hardware configuration +====================== + +Driver testing / API +==================== + +Each and every IIO device, typically a hardware chip, has a device folder under +/sys/bus/iio/devices/iio:deviceX. Where X is the IIO index of the device. Under +every of these directory folders reside a set of files, depending on the +characteristics and features of the hardware device in question. These files are +consistently generalized and documented in the IIO ABI documentation. In order +to determine which IIO deviceX corresponds to which hardware device, the user +can read the name file /sys/bus/iio/devices/iio:deviceX/name. In case the +sequence in which the iio device drivers are loaded/registered is constant, the +numbering is constant and may be known in advance. + +.. tip:: + + \ TIP: An example program which uses the interface can be found here: + + + - :doc:`IIO Oscilloscope ` + + .. image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676-osc-screenshot.png + :align: center + :width: 600 + + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/> cd /sys/bus/iio/devices/ + root:/sys/bus/iio/devices> ls + iio:device0 iio:device1 + + root:/sys/bus/iio/devices> cd iio:device1 + + root:/sys/bus/iio/devices/iio:device1# ls -l + drwxr-xr-x 5 root root 0 Jan 22 08:19 . + drwxr-xr-x 4 root root 0 Jan 22 08:19 .. + drwxr-xr-x 2 root root 0 Jan 22 08:19 buffer + -r--r--r-- 1 root root 4096 Jan 22 08:19 dev + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_adc_frequency + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bandwidth + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_high + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_if + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_low + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_hardwaregain + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_intermediate_frequency + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_sampling_frequency + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_scale + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_control + -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_control_available + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_thresh + -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_thresh_available + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_test_mode + -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_test_mode_available + -r--r--r-- 1 root root 4096 Jan 22 08:19 name + drwxr-xr-x 2 root root 0 Jan 22 08:19 power + drwxr-xr-x 2 root root 0 Jan 22 08:19 scan_elements + lrwxrwxrwx 1 root root 0 Jan 22 08:19 subsystem -> ../../../../../bus/iio + -rw-r--r-- 1 root root 4096 Jan 22 08:19 uevent + + root:/sys/bus/iio/devices/iio:device1# + + +Show device name +---------------- + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/sys/bus/iio/devices/iio:device1> cat name + axi-ad6676-hpc + + +ADC frequency FADC (in_voltage_adc_frequency) +--------------------------------------------- + +The clock frequency of the ADC. Maximizing the clock frequency is helpful when +the IF or bandwidth are high. A lower clock frequency reduces power consumption +and is appropriate for low IFs and narrow bandwidths. + +Range using external synthesizer [2.0,3.2] GHz in Hz Range using internal +synthesizer [2.925,3.2] GHz in Hz + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_adc_frequency + 3200000000 + root@analog:/sys/bus/iio/devices/iio:device1# echo 3000000000 > in_voltage_adc_frequency + -bash: echo: write error: Invalid argument + + +.. tip:: + + \ TIP: If writing this attribute returns "Invalid argument" (-EINVAL) this + means that the underlying HDL or Hardware's JESD204B Core and Gigabit + Transceiver (GT) doesn't support changing the JESD204B Lane Rate. + + + +Complex IQ Data Rate (in_voltage_sampling_frequency) +---------------------------------------------------- + +The complex (I/Q) data rate in SPS. The AD6676 supports decimation factors (DFs) +of 12, 16, 24 and 32. The complex (I/Q) data rate at the JESD204B outputs is +FADC / DF. + +In case the underlying HDL or Hardware's JESD204B Core and Gigabit Transceiver +(GT) support arbitrary JESD204B Lane Rates. This attribute can be writable. And +it will select the appropriate AD6676 supported DFs. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_sampling_frequency + 200000000 + + +IF intermediate frequency (in_voltage_intermediate_frequency) +------------------------------------------------------------- + +The IF (intermediate frequency) to which the ADC is tuned. The AD6676 supports +IFs from 70 to 450 MHz provided the external inductors are chosen appropriately. +Since the AD6676-EBZ by default includes a pair of 19-nH inductors soldered to +the evaluation board, the IF range allowed is less than the full range supported +by the AD6676. + +.. tip:: + + \ TIP: Please see paragraph Lext Selection in the datasheet: Maximum External + Inductor Value as a Function of IF Frequency + + + The min/max values the device driver accepts can be set via following + devicetree attributes: + + :: + + adi,intermediate-frequency-min-hz = <150000000>; + adi,intermediate-frequency-max-hz = <450000000>; + + +Since the tuning accuracy is finite - reading back this value allows the user to +determine the offset. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo 200000000 > in_voltage_intermediate_frequency + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_intermediate_frequency + 200000000 + + root@analog:/sys/bus/iio/devices/iio:device1# echo 199000000 > in_voltage_intermediate_frequency + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_intermediate_frequency + 199218750 + + +Bandwidth (in_voltage_bandwidth) +-------------------------------- + +The bandwidth of the ADC. Since the AD6676 uses delta-sigma technology, the +available bandwidth is a relatively small fraction of the ADC clock rate and the +AD6676 achieves the lowest noise and distortion when the bandwidth is small. + +The allowed range is between [0.005,0.05]*FADC in Hz + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo 100000000 > in_voltage_bandwidth + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bandwidth + 100000000 + + +Bandwidth Margins (in_voltage_bw_margin\_[low|high]) +---------------------------------------------------- + +Lower (in_voltage_bw_margin_low) and upper (in_voltage_bw_margin_high) bandwidth +margins for the noise-shaping profile of the ADC. + +Typical values are 5 MHz, but the user may want to increase these margins in +wideband operation in order to optimize the noise profile of the ADC. + +Typical range [0,30] MHz in MHz + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo 5 > in_voltage_bw_margin_low + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bw_margin_low + 5 + + +Bandwidth Margin IF (in_voltage_bw_margin_if) +--------------------------------------------- + +Displacement of the resonance frequency (F1Shift) of the first resonator within +the ADC from band-center. Typically 0 is appropriate, but in the widest +bandwidth modes positive shifts can be used to reduce the noise density near the +upper edge of the passband. + +Typical range [-30,30] MHz in MHz + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo -1 > in_voltage_bw_margin_if + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bw_margin_if + -1 + + +Full-Scale (in_voltage_scale) +----------------------------- + +One of the convenient features of the AD6676 is that the full-scale of its ADC +is relatively small and adjustable over a 12-dB range [1.00 .. 0.25] The dynamic +range of the ADC is highest at the maximum full-scale setting but the noise +figure of the system is lowest at the minimum full-scale setting. + +Writing a value of 0.5 to this device attribute lowers the PIN_0dBFS by 6 dB. +Likewise writing a value of 0.25 to this device attribute lowers the PIN_0dBFS +by 12 dB. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_scale + 1.000000 + root@analog:/sys/bus/iio/devices/iio:device1# echo 0.25 > in_voltage_scale + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_scale + 0.250000 + + +Attenuation Control (in_voltage_hardwaregain) +--------------------------------------------- + +The AD6676 contains a 50-ohm input attenuator programmable in 1-dB steps. Use +this device attribute to set the attenuator's attenuation. The dynamic range of +the system increases somewhat with moderate attenuation settings of 6-12 dB, at +the expense of an increased noise figure. + +The range is from 0 to -27.00 dB in 1dB steps. The nomenclature used here is +gain instead of attenuation, so all values are expressed negative. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo -10.00 > in_voltage_hardwaregain + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_hardwaregain + -10.000000 dB + + +Shuffle Control (in_voltage_shuffler_control) +--------------------------------------------- + +The AD6676 includes dynamic reordering of the comparators within the ADC in order to break up the spurious tones and distortion products associated with a fixed ordering. The Shuffle Control device attribute allows the user to experiment with different shuffling rates. The **fadc** option (Shuffle every 1) reorders the comparators on every clock cycle with 50% probability. This shuffle scheme is able to randomize deterministic spurs but tends to increase the noise density and creates FADC/32 "shuffle humps" in the output spectrum. Similarly, the **fadc/2 fadc/3 fadc/4** (Shuffle every 2,3,4) options reorder the comparators every n clock cycles with 50% probability. Using a high value of n decreases the noise degradation at the expense of less effective randomization and FADC/(32\*n) shuffle humps that are closer to the main carrier. Fast shuffling can be disabled by selecting the **disable** option. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control_available + disable fadc fadc/2 fadc/3 fadc/4 + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control + fadc + root@analog:/sys/bus/iio/devices/iio:device1# echo disable > in_voltage_shuffler_control + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control + disable + + +Shuffle Threshold (in_voltage_shuffler_thresh) +---------------------------------------------- + +In order to obtain the spur-reduction benefits of shuffling at large signal +levels while retaining the low noise of not shuffling when the signal is small, +the AD6676 supports dynamic shuffle control via the Shuffle Threshold attribute. +Shuffling is disabled if the raw ADC output is below the specified threshold for +~5000 clock cycles. A threshold of zero implies that shuffling is always +enabled. + +The supported range is from 0..8 + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh_available + 0 1 2 3 4 5 6 7 8 + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh + 5 + root@analog:/sys/bus/iio/devices/iio:device1# echo 4 > in_voltage_shuffler_thresh + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh + 4 + + +Test Modes (in_voltage_test_mode) +--------------------------------- + +Interface test modes supported by the AD6676. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_test_mode_available + off checkerboard one_zero_toggle pn23 pn9 rep_user_pat sing_user_pat ramp mod_rpat jspat jtspat + + root@analog:/sys/bus/iio/devices/iio:device1# echo ramp > in_voltage_test_mode + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_test_mode + ramp + + +JESD204B Interface Testing +-------------------------- + +Below Eyes were captured on a Xilinx ZC706 after > 4 hours of operation: + +:doc:`JESD204B Eye Scan ` + +|LANE0| |LANE1| + +More Information +================ + +- IIO mailing list: linux-iio@vger.kernel.org +- `IIO Linux Kernel Documentation sysfs-bus-iio-\* `_ +- `IIO Documentation `_ +- :doc:`IIO test and visualization application ` +- :doc:`libiio - IIO system library ` +- :doc:`libiio - Internals ` +- :doc:`Pointers and good books ` +- `IIO High Speed `_ +- `Software Defined Radio using the IIO framework `_ +- + +|libiio introduction| + +*Need Help?* + +- :ez:`Analog Devices Linux Device Drivers Help Forum ` +- `Ask a Question `_ + +.. |libiio introduction| image:: https://wiki.analog.com/_media/software/linux/docs/iio/youtube>p_vntewue24 + +.. |LANE0| image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676_lane0_9.54e-08bert.png + :width: 300 +.. |LANE1| image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676_lane1_9.54e-08bert.png + :width: 300 diff --git a/docs/solutions/reference-designs/eval-ad6676/index.rst b/docs/solutions/reference-designs/eval-ad6676/index.rst new file mode 100644 index 00000000000..d50c960c89a --- /dev/null +++ b/docs/solutions/reference-designs/eval-ad6676/index.rst @@ -0,0 +1,8 @@ +AD6676EVB +========= + +.. toctree:: + :hidden: + + ad6676 + ad6676-wideband_rx_subsystem_ad6676ebz diff --git a/docs/wiki-migration/resources/eval/ad6676-wideband_rx_subsystem_ad6676ebz.rst b/docs/wiki-migration/resources/eval/ad6676-wideband_rx_subsystem_ad6676ebz.rst new file mode 100644 index 00000000000..d3cb84c84c4 --- /dev/null +++ b/docs/wiki-migration/resources/eval/ad6676-wideband_rx_subsystem_ad6676ebz.rst @@ -0,0 +1,95 @@ +AD6676 : Design Tools and Startup Guide for the AD6676 evaluation board, a high dynamic range, Wideband Receiver +================================================================================================================ + +Summary +------- + +This wiki site includes information about the :adi:`ad6676` and the associated evaluation board, the :adi:`AD6676EBZ `. + +The :adi:`ad6676` datasheet provides a significant amount of information to aid in understanding the :adi:`ad6676` capabilities and can assist in the evaluation process. The datasheet along with the user guide and other board files provided here should be consulted when using the evaluation board. + +The AD6676 is compatible with the :adi:`HSC-ADC-EVALEZ `, the ADI FPGA-Based Data Capture Kit. + +The software required to use the AD6676EBZ with the :adi:`HSC-ADC-EVALEZ ` capture board can be downloaded at the following Analog Devices ftp site: + +`AD6676 Evaluation Software `_ + +For additional information or questions, send an email to highspeed.converters@analog.com. The user guide describes the AD6676 evaluation board, :adi:`AD6676EBZ `, which provides all of the support circuitry required to operate the part in various modes and configurations. The application software used to interface with the devices is also described. + +Features +-------- + +- Full featured evaluation board with FMC connector for the :adi:`AD6676`, a Wideband IF Receiver Subsystem +- High Instantaneous dynamic range + + - IIP up to 36 dBm, + + - NSD as low as -159 dBFS/Hz, + + - Noise Figure as low as 13 dB + - Spurious tones < -97 dBFS + +- On chip digital Signal Processing including + + - NCO and quadrature digital downconverter + + - Decimation + + - AGC Configuration + +- SPI interface for setup and control +- JESD204B single or dual lane outputs +- On-board LDO regulator powered through the FMC interface +- MATLAB (R) User Interface provides complete AD6676 configuration based on + user entries + +Helpful Links +------------- + +- :adi:`AD6676` data sheet +- High Speed ADC Capture Evaluation Kit Rev E (:adi:`HSC-ADC-EVALEZ `) +- :adi:`AN-835 Application Note `, *Understanding ADC Testing and Evaluation* +- :adi:`AN-877 Application Note `, *Interfacing to High Speed ADCs via SPI* +- :adi:`VRMS / dBm / dBu / dBV Calculator ` +- :adi:`ADI RF Impedance Matching Tool ` +- `ADIsimRF Software `_ +- :adi:`ADI RF/IF Transceiver Products Web page ` +- :doc:`AD6676 Wideband IF Receiver Subsystem Linux device driver ` + +AD6676 Evaluation Platform User Guides +-------------------------------------- + +User Guide for the AD6676 `ad6676_evb_rev1_quickstartguide_2015_03_27.pdf `_ (UPDATED March 2015) + +AD6676 Evaluation Board Files +----------------------------- + +AD6676 Evaluation Board Schematic Board 13029 Rev D `SCHEMATIC [PDF File `_] AD6676 Evaluation Board Gerber Files Board 13029 Rev D `GERBERS [Zip File `_] AD6676 Evaluation Board BOM File Board 13029 Rev D `Bill of Material [XLS file `_] + +AD6676 Software Files +--------------------- + +AD6676 DemoTool Software Installation Files : `AD6676 Evaluation Software `_ + +AD6676 Evaluation Board HDL Libraries and Project +------------------------------------------------- + +The link below is to an external website which has a project with HDL code that +can be used with some FPGA development board to interface to the AD6676 + +`AD6676EVB HDL project documentation `_ :git-hdl:`External Link to github.com AD6676 library ` :git-hdl:`External Link to github.com AD6676EVB project ` `External Link to general ADI github.com website `_ + +AD6676 Ibis Model Files +----------------------- + +AD6676 Ibis Model `AD6676 Ibis [ZIP file `_] + +AD6676 Ibis AMI Model Files +--------------------------- + +AD6676 Ibis AMI Model Email highspeed.converters@analog.com to request + +AD6676 Matlab R2013a Simulink Model Files +----------------------------------------- + +AD6676 Simulink Model Package `AD6676 Simulink Model `_ AD6676 Simulink User's Guide // `AD6676 Simulink User's Guide [pdf file `_] diff --git a/docs/wiki-migration/resources/tools-software/linux-drivers/iio-adc/ad6676.rst b/docs/wiki-migration/resources/tools-software/linux-drivers/iio-adc/ad6676.rst new file mode 100644 index 00000000000..eba95c7c476 --- /dev/null +++ b/docs/wiki-migration/resources/tools-software/linux-drivers/iio-adc/ad6676.rst @@ -0,0 +1,564 @@ +AD6676 Wideband IF Receiver Subsystem Linux device driver +========================================================= + +The AD6676 is a highly integrated IF subsystem that can digitize radio frequency +(RF) bands up to 160 MHz in width centered on an intermediate frequency (IF) of +70 MHz to 450 MHz. + +Supported Devices +----------------- + +- :adi:`AD6676` + +Reference Circuits +------------------ + +- :adi:`AD6676-EBZ ` + +Evaluation Boards +----------------- + +- :adi:`AD6676-EBZ ` +- :doc:`AD6676 : Design Tools and Startup Guide for the AD6676 evaluation board, a high dynamic range, Wideband Receiver ` + +Description +----------- + +This is a Linux industrial I/O (:doc:`IIO `) subsystem driver, targeting RF Transceivers. The industrial I/O subsystem provides a unified framework for drivers for many different types of converters and sensors using a number of different physical interfaces (i2c, spi, etc). See :doc:`IIO ` for more information. + +Source Code +=========== + +Status +------ + ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| Source | Mainlined? | ++==========================================================================================+=========================================================================================+ +| :git-linux:`git ` | :git-linux:`No ` | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + +Files +----- + ++----------+---------------------------------------------------------------------------------------------------------------+ +| Function | File | ++==========+===============================================================================================================+ +| driver | :git-linux:`drivers/iio/adc/ad6676.c` | ++----------+---------------------------------------------------------------------------------------------------------------+ +| include | :git-linux:`drivers/iio/adc/ad6676.h` | ++----------+---------------------------------------------------------------------------------------------------------------+ + +Related Device Drivers +~~~~~~~~~~~~~~~~~~~~~~ + ++----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | File | ++==========+===============================================================================================================================================+ +| driver | :git-linux:`drivers/iio/adc/cf_axi_adc_core.c` | ++----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| driver | :git-linux:`drivers/iio/adc/cf_axi_adc_ring_stream.c` | ++----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| include | :git-linux:`drivers/iio/adc/cf_axi_adc.h` | ++----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + +Example Linux Device-Tree Initialization +======================================== + +The AD6676 driver is a spi-bus driver and can currently only be instantiated via +device tree. + +Required devicetree properties: + +- compatible: Should always be "ad6676" +- reg: SPI slave select number + ++------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | File | ++========================+===================================================================================================================================================+ +| AD6676-EBZ Device Tree | :git-linux:`arch/arm/boot/dts/zynq-zc706-adv7511-ad6676-fmc.dts` | ++------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ + +Device Driver Customization +=========================== + ++-----------------------------------+----------------------------------------------------+ +| Devicetree Property | Description | ++===================================+====================================================+ +| adi,adc-frequency-hz | Initial ADC frequency in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,adc-frequency-fixed-enable | Prevents ADC frequency changes after initial setup | ++-----------------------------------+----------------------------------------------------+ +| adi,use-external-clk-enable | Use external CLK | ++-----------------------------------+----------------------------------------------------+ +| adi,decimation | Initial decimation rate [12, 16, 24, 32] | ++-----------------------------------+----------------------------------------------------+ +| adi,intermediate-frequency-hz | Initial IF in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,intermediate-frequency-min-hz | Allowed minimum IF in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,intermediate-frequency-max-hz | Allowed maximum IF in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,bandwidth-hz | Initial bandwidth in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,bandwidth-margin-low-mhz | Initial bandwidth margin low in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,bandwidth-margin-high-mhz | Initial bandwidth margin high in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,bandwidth-margin-if-mhz | Initial bandwidth margin IF in Hz | ++-----------------------------------+----------------------------------------------------+ +| adi,external-inductance-l-nh | The inductance of the external inductors in nH | ++-----------------------------------+----------------------------------------------------+ +| adi,idac1-fullscale-adjust | Initial IDAC_FS [64..16] | ++-----------------------------------+----------------------------------------------------+ +| adi,shuffler-control | Initial shuffler control setting | ++-----------------------------------+----------------------------------------------------+ +| adi,shuffler-thresh | Initial shuffler threshold | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-scrambling-enable | Enables JESD204B link scrambling | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-use-lvds-syncb-enable | Use LVDS SYNCB | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-powerdown-sysref-enable | Powerdown SYSREF | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-l-lanes | Number of JESD204B lanes | ++-----------------------------------+----------------------------------------------------+ +| adi,jesd-f-frames-per-multiframe | Number of frames per multiframe | ++-----------------------------------+----------------------------------------------------+ +| adi,spi-3wire-enable | Enables SPI 3-WIRE mode | ++-----------------------------------+----------------------------------------------------+ + +Enabling Linux driver support +============================= + +Configure kernel with "make menuconfig" (alternatively use "make xconfig" or +"make qconfig") + +.. hint:: + + The AD6676 driver depends on CONFIG_SPI + +Adding Linux driver support +=========================== + +Configure kernel with "make menuconfig" (alternatively use "make xconfig" or +"make qconfig") + +:: + + Linux Kernel Configuration + Device Drivers ---> + <*> Industrial I/O support ---> + --- Industrial I/O support + - *- Enable ring buffer support within IIO + - *- Industrial I/O lock free software ring + - *- Enable triggered sampling support + + Analog to digital converters + [--snip--] + + <*> Analog Devices AD9467 AD9643 High-Speed AXI ADC driver + + [--snip--] + +Hardware configuration +====================== + +Driver testing / API +==================== + +Each and every IIO device, typically a hardware chip, has a device folder under +/sys/bus/iio/devices/iio:deviceX. Where X is the IIO index of the device. Under +every of these directory folders reside a set of files, depending on the +characteristics and features of the hardware device in question. These files are +consistently generalized and documented in the IIO ABI documentation. In order +to determine which IIO deviceX corresponds to which hardware device, the user +can read the name file /sys/bus/iio/devices/iio:deviceX/name. In case the +sequence in which the iio device drivers are loaded/registered is constant, the +numbering is constant and may be known in advance. + +.. tip:: + + \ TIP: An example program which uses the interface can be found here: + + + - :doc:`IIO Oscilloscope ` + + .. image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676-osc-screenshot.png + :align: center + :width: 600 + + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/> cd /sys/bus/iio/devices/ + root:/sys/bus/iio/devices> ls + iio:device0 iio:device1 + + root:/sys/bus/iio/devices> cd iio:device1 + + root:/sys/bus/iio/devices/iio:device1# ls -l + drwxr-xr-x 5 root root 0 Jan 22 08:19 . + drwxr-xr-x 4 root root 0 Jan 22 08:19 .. + drwxr-xr-x 2 root root 0 Jan 22 08:19 buffer + -r--r--r-- 1 root root 4096 Jan 22 08:19 dev + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_adc_frequency + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bandwidth + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_high + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_if + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_low + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_hardwaregain + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_intermediate_frequency + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_sampling_frequency + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_scale + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_control + -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_control_available + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_thresh + -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_thresh_available + -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_test_mode + -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_test_mode_available + -r--r--r-- 1 root root 4096 Jan 22 08:19 name + drwxr-xr-x 2 root root 0 Jan 22 08:19 power + drwxr-xr-x 2 root root 0 Jan 22 08:19 scan_elements + lrwxrwxrwx 1 root root 0 Jan 22 08:19 subsystem -> ../../../../../bus/iio + -rw-r--r-- 1 root root 4096 Jan 22 08:19 uevent + + root:/sys/bus/iio/devices/iio:device1# + + +Show device name +---------------- + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/sys/bus/iio/devices/iio:device1> cat name + axi-ad6676-hpc + + +ADC frequency FADC (in_voltage_adc_frequency) +--------------------------------------------- + +The clock frequency of the ADC. Maximizing the clock frequency is helpful when +the IF or bandwidth are high. A lower clock frequency reduces power consumption +and is appropriate for low IFs and narrow bandwidths. + +Range using external synthesizer [2.0,3.2] GHz in Hz Range using internal +synthesizer [2.925,3.2] GHz in Hz + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_adc_frequency + 3200000000 + root@analog:/sys/bus/iio/devices/iio:device1# echo 3000000000 > in_voltage_adc_frequency + -bash: echo: write error: Invalid argument + + +.. tip:: + + \ TIP: If writing this attribute returns "Invalid argument" (-EINVAL) this + means that the underlying HDL or Hardware's JESD204B Core and Gigabit + Transceiver (GT) doesn't support changing the JESD204B Lane Rate. + + + +Complex IQ Data Rate (in_voltage_sampling_frequency) +---------------------------------------------------- + +The complex (I/Q) data rate in SPS. The AD6676 supports decimation factors (DFs) +of 12, 16, 24 and 32. The complex (I/Q) data rate at the JESD204B outputs is +FADC / DF. + +In case the underlying HDL or Hardware's JESD204B Core and Gigabit Transceiver +(GT) support arbitrary JESD204B Lane Rates. This attribute can be writable. And +it will select the appropriate AD6676 supported DFs. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_sampling_frequency + 200000000 + + +IF intermediate frequency (in_voltage_intermediate_frequency) +------------------------------------------------------------- + +The IF (intermediate frequency) to which the ADC is tuned. The AD6676 supports +IFs from 70 to 450 MHz provided the external inductors are chosen appropriately. +Since the AD6676-EBZ by default includes a pair of 19-nH inductors soldered to +the evaluation board, the IF range allowed is less than the full range supported +by the AD6676. + +.. tip:: + + \ TIP: Please see paragraph Lext Selection in the datasheet: Maximum External + Inductor Value as a Function of IF Frequency + + + The min/max values the device driver accepts can be set via following + devicetree attributes: + + :: + + adi,intermediate-frequency-min-hz = <150000000>; + adi,intermediate-frequency-max-hz = <450000000>; + + +Since the tuning accuracy is finite - reading back this value allows the user to +determine the offset. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo 200000000 > in_voltage_intermediate_frequency + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_intermediate_frequency + 200000000 + + root@analog:/sys/bus/iio/devices/iio:device1# echo 199000000 > in_voltage_intermediate_frequency + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_intermediate_frequency + 199218750 + + +Bandwidth (in_voltage_bandwidth) +-------------------------------- + +The bandwidth of the ADC. Since the AD6676 uses delta-sigma technology, the +available bandwidth is a relatively small fraction of the ADC clock rate and the +AD6676 achieves the lowest noise and distortion when the bandwidth is small. + +The allowed range is between [0.005,0.05]*FADC in Hz + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo 100000000 > in_voltage_bandwidth + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bandwidth + 100000000 + + +Bandwidth Margins (in_voltage_bw_margin\_[low|high]) +---------------------------------------------------- + +Lower (in_voltage_bw_margin_low) and upper (in_voltage_bw_margin_high) bandwidth +margins for the noise-shaping profile of the ADC. + +Typical values are 5 MHz, but the user may want to increase these margins in +wideband operation in order to optimize the noise profile of the ADC. + +Typical range [0,30] MHz in MHz + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo 5 > in_voltage_bw_margin_low + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bw_margin_low + 5 + + +Bandwidth Margin IF (in_voltage_bw_margin_if) +--------------------------------------------- + +Displacement of the resonance frequency (F1Shift) of the first resonator within +the ADC from band-center. Typically 0 is appropriate, but in the widest +bandwidth modes positive shifts can be used to reduce the noise density near the +upper edge of the passband. + +Typical range [-30,30] MHz in MHz + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo -1 > in_voltage_bw_margin_if + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bw_margin_if + -1 + + +Full-Scale (in_voltage_scale) +----------------------------- + +One of the convenient features of the AD6676 is that the full-scale of its ADC +is relatively small and adjustable over a 12-dB range [1.00 .. 0.25] The dynamic +range of the ADC is highest at the maximum full-scale setting but the noise +figure of the system is lowest at the minimum full-scale setting. + +Writing a value of 0.5 to this device attribute lowers the PIN_0dBFS by 6 dB. +Likewise writing a value of 0.25 to this device attribute lowers the PIN_0dBFS +by 12 dB. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_scale + 1.000000 + root@analog:/sys/bus/iio/devices/iio:device1# echo 0.25 > in_voltage_scale + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_scale + 0.250000 + + +Attenuation Control (in_voltage_hardwaregain) +--------------------------------------------- + +The AD6676 contains a 50-ohm input attenuator programmable in 1-dB steps. Use +this device attribute to set the attenuator's attenuation. The dynamic range of +the system increases somewhat with moderate attenuation settings of 6-12 dB, at +the expense of an increased noise figure. + +The range is from 0 to -27.00 dB in 1dB steps. The nomenclature used here is +gain instead of attenuation, so all values are expressed negative. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# echo -10.00 > in_voltage_hardwaregain + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_hardwaregain + -10.000000 dB + + +Shuffle Control (in_voltage_shuffler_control) +--------------------------------------------- + +The AD6676 includes dynamic reordering of the comparators within the ADC in order to break up the spurious tones and distortion products associated with a fixed ordering. The Shuffle Control device attribute allows the user to experiment with different shuffling rates. The **fadc** option (Shuffle every 1) reorders the comparators on every clock cycle with 50% probability. This shuffle scheme is able to randomize deterministic spurs but tends to increase the noise density and creates FADC/32 "shuffle humps" in the output spectrum. Similarly, the **fadc/2 fadc/3 fadc/4** (Shuffle every 2,3,4) options reorder the comparators every n clock cycles with 50% probability. Using a high value of n decreases the noise degradation at the expense of less effective randomization and FADC/(32\*n) shuffle humps that are closer to the main carrier. Fast shuffling can be disabled by selecting the **disable** option. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control_available + disable fadc fadc/2 fadc/3 fadc/4 + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control + fadc + root@analog:/sys/bus/iio/devices/iio:device1# echo disable > in_voltage_shuffler_control + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control + disable + + +Shuffle Threshold (in_voltage_shuffler_thresh) +---------------------------------------------- + +In order to obtain the spur-reduction benefits of shuffling at large signal +levels while retaining the low noise of not shuffling when the signal is small, +the AD6676 supports dynamic shuffle control via the Shuffle Threshold attribute. +Shuffling is disabled if the raw ADC output is below the specified threshold for +~5000 clock cycles. A threshold of zero implies that shuffling is always +enabled. + +The supported range is from 0..8 + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh_available + 0 1 2 3 4 5 6 7 8 + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh + 5 + root@analog:/sys/bus/iio/devices/iio:device1# echo 4 > in_voltage_shuffler_thresh + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh + 4 + + +Test Modes (in_voltage_test_mode) +--------------------------------- + +Interface test modes supported by the AD6676. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_test_mode_available + off checkerboard one_zero_toggle pn23 pn9 rep_user_pat sing_user_pat ramp mod_rpat jspat jtspat + + root@analog:/sys/bus/iio/devices/iio:device1# echo ramp > in_voltage_test_mode + root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_test_mode + ramp + + +JESD204B Interface Testing +-------------------------- + +Below Eyes were captured on a Xilinx ZC706 after > 4 hours of operation: + +:doc:`JESD204B Eye Scan ` + +|LANE0| |LANE1| + +More Information +================ + +- IIO mailing list: linux-iio@vger.kernel.org +- `IIO Linux Kernel Documentation sysfs-bus-iio-\* `_ +- `IIO Documentation `_ +- :doc:`IIO test and visualization application ` +- :doc:`libiio - IIO system library ` +- :doc:`libiio - Internals ` +- :doc:`Pointers and good books ` +- `IIO High Speed `_ +- `Software Defined Radio using the IIO framework `_ +- + +|libiio introduction| + +*Need Help?* + +- :ez:`Analog Devices Linux Device Drivers Help Forum ` +- `Ask a Question `_ + +.. |libiio introduction| image:: https://wiki.analog.com/_media/software/linux/docs/iio/youtube>p_vntewue24 + +.. |LANE0| image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676_lane0_9.54e-08bert.png + :width: 300 +.. |LANE1| image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676_lane1_9.54e-08bert.png + :width: 300 From 39c863d8292444cc21310bb178e16461469330fb Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Thu, 2 Apr 2026 13:16:31 +0300 Subject: [PATCH 2/5] Replace stub index.rst with template Co-Authored-By: Claude Opus 4.6 --- .../reference-designs/eval-ad6676/index.rst | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/solutions/reference-designs/eval-ad6676/index.rst b/docs/solutions/reference-designs/eval-ad6676/index.rst index d50c960c89a..de90623ccb2 100644 --- a/docs/solutions/reference-designs/eval-ad6676/index.rst +++ b/docs/solutions/reference-designs/eval-ad6676/index.rst @@ -1,8 +1,46 @@ -AD6676EVB -========= +.. _eval_ad6676 eval: + +EVAL AD6676 +=================================================================== + +.. TODO: Add a picture of the chip/board + +Overview +------------------------------------------------------------------------------- + +.. TODO: Describe in max 10 rows the main features and applications. + +Features: + +- feature 1 +- feature 2 + +Applications: + +- application 1 +- application 2 .. toctree:: :hidden: ad6676 ad6676-wideband_rx_subsystem_ad6676ebz + +Recommendations +------------------------------------------------------------------------------- + +People who follow the flow that is outlined, have a much better experience with +things. However, like many things, documentation is never as complete as it +should be. If you have any questions, feel free to ask on our +:ref:`EngineerZone forums `, but before that, please make +sure you read our documentation thoroughly. + +Warning +------------------------------------------------------------------------------- + +.. esd-warning:: + +Help and support +------------------------------------------------------------------------------- + +Please go to :ref:`Help and Support ` page. From 004779ce400610b7cb58db1b281e06caa7ecf099 Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Tue, 7 Apr 2026 13:22:13 +0300 Subject: [PATCH 3/5] Fix build: remove leaked wiki-migration source files, fix index.rst Co-Authored-By: Claude Opus 4.6 --- ...ad6676-wideband_rx_subsystem_ad6676ebz.rst | 95 --- .../linux-drivers/iio-adc/ad6676.rst | 564 ------------------ 2 files changed, 659 deletions(-) delete mode 100644 docs/wiki-migration/resources/eval/ad6676-wideband_rx_subsystem_ad6676ebz.rst delete mode 100644 docs/wiki-migration/resources/tools-software/linux-drivers/iio-adc/ad6676.rst diff --git a/docs/wiki-migration/resources/eval/ad6676-wideband_rx_subsystem_ad6676ebz.rst b/docs/wiki-migration/resources/eval/ad6676-wideband_rx_subsystem_ad6676ebz.rst deleted file mode 100644 index d3cb84c84c4..00000000000 --- a/docs/wiki-migration/resources/eval/ad6676-wideband_rx_subsystem_ad6676ebz.rst +++ /dev/null @@ -1,95 +0,0 @@ -AD6676 : Design Tools and Startup Guide for the AD6676 evaluation board, a high dynamic range, Wideband Receiver -================================================================================================================ - -Summary -------- - -This wiki site includes information about the :adi:`ad6676` and the associated evaluation board, the :adi:`AD6676EBZ `. - -The :adi:`ad6676` datasheet provides a significant amount of information to aid in understanding the :adi:`ad6676` capabilities and can assist in the evaluation process. The datasheet along with the user guide and other board files provided here should be consulted when using the evaluation board. - -The AD6676 is compatible with the :adi:`HSC-ADC-EVALEZ `, the ADI FPGA-Based Data Capture Kit. - -The software required to use the AD6676EBZ with the :adi:`HSC-ADC-EVALEZ ` capture board can be downloaded at the following Analog Devices ftp site: - -`AD6676 Evaluation Software `_ - -For additional information or questions, send an email to highspeed.converters@analog.com. The user guide describes the AD6676 evaluation board, :adi:`AD6676EBZ `, which provides all of the support circuitry required to operate the part in various modes and configurations. The application software used to interface with the devices is also described. - -Features --------- - -- Full featured evaluation board with FMC connector for the :adi:`AD6676`, a Wideband IF Receiver Subsystem -- High Instantaneous dynamic range - - - IIP up to 36 dBm, - - - NSD as low as -159 dBFS/Hz, - - - Noise Figure as low as 13 dB - - Spurious tones < -97 dBFS - -- On chip digital Signal Processing including - - - NCO and quadrature digital downconverter - - - Decimation - - - AGC Configuration - -- SPI interface for setup and control -- JESD204B single or dual lane outputs -- On-board LDO regulator powered through the FMC interface -- MATLAB (R) User Interface provides complete AD6676 configuration based on - user entries - -Helpful Links -------------- - -- :adi:`AD6676` data sheet -- High Speed ADC Capture Evaluation Kit Rev E (:adi:`HSC-ADC-EVALEZ `) -- :adi:`AN-835 Application Note `, *Understanding ADC Testing and Evaluation* -- :adi:`AN-877 Application Note `, *Interfacing to High Speed ADCs via SPI* -- :adi:`VRMS / dBm / dBu / dBV Calculator ` -- :adi:`ADI RF Impedance Matching Tool ` -- `ADIsimRF Software `_ -- :adi:`ADI RF/IF Transceiver Products Web page ` -- :doc:`AD6676 Wideband IF Receiver Subsystem Linux device driver ` - -AD6676 Evaluation Platform User Guides --------------------------------------- - -User Guide for the AD6676 `ad6676_evb_rev1_quickstartguide_2015_03_27.pdf `_ (UPDATED March 2015) - -AD6676 Evaluation Board Files ------------------------------ - -AD6676 Evaluation Board Schematic Board 13029 Rev D `SCHEMATIC [PDF File `_] AD6676 Evaluation Board Gerber Files Board 13029 Rev D `GERBERS [Zip File `_] AD6676 Evaluation Board BOM File Board 13029 Rev D `Bill of Material [XLS file `_] - -AD6676 Software Files ---------------------- - -AD6676 DemoTool Software Installation Files : `AD6676 Evaluation Software `_ - -AD6676 Evaluation Board HDL Libraries and Project -------------------------------------------------- - -The link below is to an external website which has a project with HDL code that -can be used with some FPGA development board to interface to the AD6676 - -`AD6676EVB HDL project documentation `_ :git-hdl:`External Link to github.com AD6676 library ` :git-hdl:`External Link to github.com AD6676EVB project ` `External Link to general ADI github.com website `_ - -AD6676 Ibis Model Files ------------------------ - -AD6676 Ibis Model `AD6676 Ibis [ZIP file `_] - -AD6676 Ibis AMI Model Files ---------------------------- - -AD6676 Ibis AMI Model Email highspeed.converters@analog.com to request - -AD6676 Matlab R2013a Simulink Model Files ------------------------------------------ - -AD6676 Simulink Model Package `AD6676 Simulink Model `_ AD6676 Simulink User's Guide // `AD6676 Simulink User's Guide [pdf file `_] diff --git a/docs/wiki-migration/resources/tools-software/linux-drivers/iio-adc/ad6676.rst b/docs/wiki-migration/resources/tools-software/linux-drivers/iio-adc/ad6676.rst deleted file mode 100644 index eba95c7c476..00000000000 --- a/docs/wiki-migration/resources/tools-software/linux-drivers/iio-adc/ad6676.rst +++ /dev/null @@ -1,564 +0,0 @@ -AD6676 Wideband IF Receiver Subsystem Linux device driver -========================================================= - -The AD6676 is a highly integrated IF subsystem that can digitize radio frequency -(RF) bands up to 160 MHz in width centered on an intermediate frequency (IF) of -70 MHz to 450 MHz. - -Supported Devices ------------------ - -- :adi:`AD6676` - -Reference Circuits ------------------- - -- :adi:`AD6676-EBZ ` - -Evaluation Boards ------------------ - -- :adi:`AD6676-EBZ ` -- :doc:`AD6676 : Design Tools and Startup Guide for the AD6676 evaluation board, a high dynamic range, Wideband Receiver ` - -Description ------------ - -This is a Linux industrial I/O (:doc:`IIO `) subsystem driver, targeting RF Transceivers. The industrial I/O subsystem provides a unified framework for drivers for many different types of converters and sensors using a number of different physical interfaces (i2c, spi, etc). See :doc:`IIO ` for more information. - -Source Code -=========== - -Status ------- - -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Source | Mainlined? | -+==========================================================================================+=========================================================================================+ -| :git-linux:`git ` | :git-linux:`No ` | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ - -Files ------ - -+----------+---------------------------------------------------------------------------------------------------------------+ -| Function | File | -+==========+===============================================================================================================+ -| driver | :git-linux:`drivers/iio/adc/ad6676.c` | -+----------+---------------------------------------------------------------------------------------------------------------+ -| include | :git-linux:`drivers/iio/adc/ad6676.h` | -+----------+---------------------------------------------------------------------------------------------------------------+ - -Related Device Drivers -~~~~~~~~~~~~~~~~~~~~~~ - -+----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ -| Function | File | -+==========+===============================================================================================================================================+ -| driver | :git-linux:`drivers/iio/adc/cf_axi_adc_core.c` | -+----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ -| driver | :git-linux:`drivers/iio/adc/cf_axi_adc_ring_stream.c` | -+----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ -| include | :git-linux:`drivers/iio/adc/cf_axi_adc.h` | -+----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - -Example Linux Device-Tree Initialization -======================================== - -The AD6676 driver is a spi-bus driver and can currently only be instantiated via -device tree. - -Required devicetree properties: - -- compatible: Should always be "ad6676" -- reg: SPI slave select number - -+------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ -| Function | File | -+========================+===================================================================================================================================================+ -| AD6676-EBZ Device Tree | :git-linux:`arch/arm/boot/dts/zynq-zc706-adv7511-ad6676-fmc.dts` | -+------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - -Device Driver Customization -=========================== - -+-----------------------------------+----------------------------------------------------+ -| Devicetree Property | Description | -+===================================+====================================================+ -| adi,adc-frequency-hz | Initial ADC frequency in Hz | -+-----------------------------------+----------------------------------------------------+ -| adi,adc-frequency-fixed-enable | Prevents ADC frequency changes after initial setup | -+-----------------------------------+----------------------------------------------------+ -| adi,use-external-clk-enable | Use external CLK | -+-----------------------------------+----------------------------------------------------+ -| adi,decimation | Initial decimation rate [12, 16, 24, 32] | -+-----------------------------------+----------------------------------------------------+ -| adi,intermediate-frequency-hz | Initial IF in Hz | -+-----------------------------------+----------------------------------------------------+ -| adi,intermediate-frequency-min-hz | Allowed minimum IF in Hz | -+-----------------------------------+----------------------------------------------------+ -| adi,intermediate-frequency-max-hz | Allowed maximum IF in Hz | -+-----------------------------------+----------------------------------------------------+ -| adi,bandwidth-hz | Initial bandwidth in Hz | -+-----------------------------------+----------------------------------------------------+ -| adi,bandwidth-margin-low-mhz | Initial bandwidth margin low in Hz | -+-----------------------------------+----------------------------------------------------+ -| adi,bandwidth-margin-high-mhz | Initial bandwidth margin high in Hz | -+-----------------------------------+----------------------------------------------------+ -| adi,bandwidth-margin-if-mhz | Initial bandwidth margin IF in Hz | -+-----------------------------------+----------------------------------------------------+ -| adi,external-inductance-l-nh | The inductance of the external inductors in nH | -+-----------------------------------+----------------------------------------------------+ -| adi,idac1-fullscale-adjust | Initial IDAC_FS [64..16] | -+-----------------------------------+----------------------------------------------------+ -| adi,shuffler-control | Initial shuffler control setting | -+-----------------------------------+----------------------------------------------------+ -| adi,shuffler-thresh | Initial shuffler threshold | -+-----------------------------------+----------------------------------------------------+ -| adi,jesd-scrambling-enable | Enables JESD204B link scrambling | -+-----------------------------------+----------------------------------------------------+ -| adi,jesd-use-lvds-syncb-enable | Use LVDS SYNCB | -+-----------------------------------+----------------------------------------------------+ -| adi,jesd-powerdown-sysref-enable | Powerdown SYSREF | -+-----------------------------------+----------------------------------------------------+ -| adi,jesd-l-lanes | Number of JESD204B lanes | -+-----------------------------------+----------------------------------------------------+ -| adi,jesd-f-frames-per-multiframe | Number of frames per multiframe | -+-----------------------------------+----------------------------------------------------+ -| adi,spi-3wire-enable | Enables SPI 3-WIRE mode | -+-----------------------------------+----------------------------------------------------+ - -Enabling Linux driver support -============================= - -Configure kernel with "make menuconfig" (alternatively use "make xconfig" or -"make qconfig") - -.. hint:: - - The AD6676 driver depends on CONFIG_SPI - -Adding Linux driver support -=========================== - -Configure kernel with "make menuconfig" (alternatively use "make xconfig" or -"make qconfig") - -:: - - Linux Kernel Configuration - Device Drivers ---> - <*> Industrial I/O support ---> - --- Industrial I/O support - - *- Enable ring buffer support within IIO - - *- Industrial I/O lock free software ring - - *- Enable triggered sampling support - - Analog to digital converters - [--snip--] - - <*> Analog Devices AD9467 AD9643 High-Speed AXI ADC driver - - [--snip--] - -Hardware configuration -====================== - -Driver testing / API -==================== - -Each and every IIO device, typically a hardware chip, has a device folder under -/sys/bus/iio/devices/iio:deviceX. Where X is the IIO index of the device. Under -every of these directory folders reside a set of files, depending on the -characteristics and features of the hardware device in question. These files are -consistently generalized and documented in the IIO ABI documentation. In order -to determine which IIO deviceX corresponds to which hardware device, the user -can read the name file /sys/bus/iio/devices/iio:deviceX/name. In case the -sequence in which the iio device drivers are loaded/registered is constant, the -numbering is constant and may be known in advance. - -.. tip:: - - \ TIP: An example program which uses the interface can be found here: - - - - :doc:`IIO Oscilloscope ` - - .. image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676-osc-screenshot.png - :align: center - :width: 600 - - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root:/> cd /sys/bus/iio/devices/ - root:/sys/bus/iio/devices> ls - iio:device0 iio:device1 - - root:/sys/bus/iio/devices> cd iio:device1 - - root:/sys/bus/iio/devices/iio:device1# ls -l - drwxr-xr-x 5 root root 0 Jan 22 08:19 . - drwxr-xr-x 4 root root 0 Jan 22 08:19 .. - drwxr-xr-x 2 root root 0 Jan 22 08:19 buffer - -r--r--r-- 1 root root 4096 Jan 22 08:19 dev - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_adc_frequency - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bandwidth - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_high - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_if - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_bw_margin_low - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_hardwaregain - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_intermediate_frequency - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_sampling_frequency - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_scale - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_control - -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_control_available - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_thresh - -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_shuffler_thresh_available - -rw-r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_test_mode - -r--r--r-- 1 root root 4096 Jan 22 08:19 in_voltage_test_mode_available - -r--r--r-- 1 root root 4096 Jan 22 08:19 name - drwxr-xr-x 2 root root 0 Jan 22 08:19 power - drwxr-xr-x 2 root root 0 Jan 22 08:19 scan_elements - lrwxrwxrwx 1 root root 0 Jan 22 08:19 subsystem -> ../../../../../bus/iio - -rw-r--r-- 1 root root 4096 Jan 22 08:19 uevent - - root:/sys/bus/iio/devices/iio:device1# - - -Show device name ----------------- - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root:/sys/bus/iio/devices/iio:device1> cat name - axi-ad6676-hpc - - -ADC frequency FADC (in_voltage_adc_frequency) ---------------------------------------------- - -The clock frequency of the ADC. Maximizing the clock frequency is helpful when -the IF or bandwidth are high. A lower clock frequency reduces power consumption -and is appropriate for low IFs and narrow bandwidths. - -Range using external synthesizer [2.0,3.2] GHz in Hz Range using internal -synthesizer [2.925,3.2] GHz in Hz - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_adc_frequency - 3200000000 - root@analog:/sys/bus/iio/devices/iio:device1# echo 3000000000 > in_voltage_adc_frequency - -bash: echo: write error: Invalid argument - - -.. tip:: - - \ TIP: If writing this attribute returns "Invalid argument" (-EINVAL) this - means that the underlying HDL or Hardware's JESD204B Core and Gigabit - Transceiver (GT) doesn't support changing the JESD204B Lane Rate. - - - -Complex IQ Data Rate (in_voltage_sampling_frequency) ----------------------------------------------------- - -The complex (I/Q) data rate in SPS. The AD6676 supports decimation factors (DFs) -of 12, 16, 24 and 32. The complex (I/Q) data rate at the JESD204B outputs is -FADC / DF. - -In case the underlying HDL or Hardware's JESD204B Core and Gigabit Transceiver -(GT) support arbitrary JESD204B Lane Rates. This attribute can be writable. And -it will select the appropriate AD6676 supported DFs. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_sampling_frequency - 200000000 - - -IF intermediate frequency (in_voltage_intermediate_frequency) -------------------------------------------------------------- - -The IF (intermediate frequency) to which the ADC is tuned. The AD6676 supports -IFs from 70 to 450 MHz provided the external inductors are chosen appropriately. -Since the AD6676-EBZ by default includes a pair of 19-nH inductors soldered to -the evaluation board, the IF range allowed is less than the full range supported -by the AD6676. - -.. tip:: - - \ TIP: Please see paragraph Lext Selection in the datasheet: Maximum External - Inductor Value as a Function of IF Frequency - - - The min/max values the device driver accepts can be set via following - devicetree attributes: - - :: - - adi,intermediate-frequency-min-hz = <150000000>; - adi,intermediate-frequency-max-hz = <450000000>; - - -Since the tuning accuracy is finite - reading back this value allows the user to -determine the offset. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# echo 200000000 > in_voltage_intermediate_frequency - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_intermediate_frequency - 200000000 - - root@analog:/sys/bus/iio/devices/iio:device1# echo 199000000 > in_voltage_intermediate_frequency - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_intermediate_frequency - 199218750 - - -Bandwidth (in_voltage_bandwidth) --------------------------------- - -The bandwidth of the ADC. Since the AD6676 uses delta-sigma technology, the -available bandwidth is a relatively small fraction of the ADC clock rate and the -AD6676 achieves the lowest noise and distortion when the bandwidth is small. - -The allowed range is between [0.005,0.05]*FADC in Hz - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# echo 100000000 > in_voltage_bandwidth - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bandwidth - 100000000 - - -Bandwidth Margins (in_voltage_bw_margin\_[low|high]) ----------------------------------------------------- - -Lower (in_voltage_bw_margin_low) and upper (in_voltage_bw_margin_high) bandwidth -margins for the noise-shaping profile of the ADC. - -Typical values are 5 MHz, but the user may want to increase these margins in -wideband operation in order to optimize the noise profile of the ADC. - -Typical range [0,30] MHz in MHz - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# echo 5 > in_voltage_bw_margin_low - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bw_margin_low - 5 - - -Bandwidth Margin IF (in_voltage_bw_margin_if) ---------------------------------------------- - -Displacement of the resonance frequency (F1Shift) of the first resonator within -the ADC from band-center. Typically 0 is appropriate, but in the widest -bandwidth modes positive shifts can be used to reduce the noise density near the -upper edge of the passband. - -Typical range [-30,30] MHz in MHz - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# echo -1 > in_voltage_bw_margin_if - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_bw_margin_if - -1 - - -Full-Scale (in_voltage_scale) ------------------------------ - -One of the convenient features of the AD6676 is that the full-scale of its ADC -is relatively small and adjustable over a 12-dB range [1.00 .. 0.25] The dynamic -range of the ADC is highest at the maximum full-scale setting but the noise -figure of the system is lowest at the minimum full-scale setting. - -Writing a value of 0.5 to this device attribute lowers the PIN_0dBFS by 6 dB. -Likewise writing a value of 0.25 to this device attribute lowers the PIN_0dBFS -by 12 dB. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_scale - 1.000000 - root@analog:/sys/bus/iio/devices/iio:device1# echo 0.25 > in_voltage_scale - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_scale - 0.250000 - - -Attenuation Control (in_voltage_hardwaregain) ---------------------------------------------- - -The AD6676 contains a 50-ohm input attenuator programmable in 1-dB steps. Use -this device attribute to set the attenuator's attenuation. The dynamic range of -the system increases somewhat with moderate attenuation settings of 6-12 dB, at -the expense of an increased noise figure. - -The range is from 0 to -27.00 dB in 1dB steps. The nomenclature used here is -gain instead of attenuation, so all values are expressed negative. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# echo -10.00 > in_voltage_hardwaregain - - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_hardwaregain - -10.000000 dB - - -Shuffle Control (in_voltage_shuffler_control) ---------------------------------------------- - -The AD6676 includes dynamic reordering of the comparators within the ADC in order to break up the spurious tones and distortion products associated with a fixed ordering. The Shuffle Control device attribute allows the user to experiment with different shuffling rates. The **fadc** option (Shuffle every 1) reorders the comparators on every clock cycle with 50% probability. This shuffle scheme is able to randomize deterministic spurs but tends to increase the noise density and creates FADC/32 "shuffle humps" in the output spectrum. Similarly, the **fadc/2 fadc/3 fadc/4** (Shuffle every 2,3,4) options reorder the comparators every n clock cycles with 50% probability. Using a high value of n decreases the noise degradation at the expense of less effective randomization and FADC/(32\*n) shuffle humps that are closer to the main carrier. Fast shuffling can be disabled by selecting the **disable** option. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control_available - disable fadc fadc/2 fadc/3 fadc/4 - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control - fadc - root@analog:/sys/bus/iio/devices/iio:device1# echo disable > in_voltage_shuffler_control - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_control - disable - - -Shuffle Threshold (in_voltage_shuffler_thresh) ----------------------------------------------- - -In order to obtain the spur-reduction benefits of shuffling at large signal -levels while retaining the low noise of not shuffling when the signal is small, -the AD6676 supports dynamic shuffle control via the Shuffle Threshold attribute. -Shuffling is disabled if the raw ADC output is below the specified threshold for -~5000 clock cycles. A threshold of zero implies that shuffling is always -enabled. - -The supported range is from 0..8 - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh_available - 0 1 2 3 4 5 6 7 8 - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh - 5 - root@analog:/sys/bus/iio/devices/iio:device1# echo 4 > in_voltage_shuffler_thresh - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_shuffler_thresh - 4 - - -Test Modes (in_voltage_test_mode) ---------------------------------- - -Interface test modes supported by the AD6676. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_test_mode_available - off checkerboard one_zero_toggle pn23 pn9 rep_user_pat sing_user_pat ramp mod_rpat jspat jtspat - - root@analog:/sys/bus/iio/devices/iio:device1# echo ramp > in_voltage_test_mode - root@analog:/sys/bus/iio/devices/iio:device1# cat in_voltage_test_mode - ramp - - -JESD204B Interface Testing --------------------------- - -Below Eyes were captured on a Xilinx ZC706 after > 4 hours of operation: - -:doc:`JESD204B Eye Scan ` - -|LANE0| |LANE1| - -More Information -================ - -- IIO mailing list: linux-iio@vger.kernel.org -- `IIO Linux Kernel Documentation sysfs-bus-iio-\* `_ -- `IIO Documentation `_ -- :doc:`IIO test and visualization application ` -- :doc:`libiio - IIO system library ` -- :doc:`libiio - Internals ` -- :doc:`Pointers and good books ` -- `IIO High Speed `_ -- `Software Defined Radio using the IIO framework `_ -- - -|libiio introduction| - -*Need Help?* - -- :ez:`Analog Devices Linux Device Drivers Help Forum ` -- `Ask a Question `_ - -.. |libiio introduction| image:: https://wiki.analog.com/_media/software/linux/docs/iio/youtube>p_vntewue24 - -.. |LANE0| image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676_lane0_9.54e-08bert.png - :width: 300 -.. |LANE1| image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676_lane1_9.54e-08bert.png - :width: 300 From bddf3919ef77b79b27ee4289bf2984452c0f2ab9 Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Tue, 7 Apr 2026 13:47:02 +0300 Subject: [PATCH 4/5] Fix :doc: refs to wiki-migration paths and RST errors Co-Authored-By: Claude Opus 4.6 --- .../ad6676-wideband_rx_subsystem_ad6676ebz.rst | 2 +- .../reference-designs/eval-ad6676/ad6676.rst | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/solutions/reference-designs/eval-ad6676/ad6676-wideband_rx_subsystem_ad6676ebz.rst b/docs/solutions/reference-designs/eval-ad6676/ad6676-wideband_rx_subsystem_ad6676ebz.rst index d3cb84c84c4..95189398efb 100644 --- a/docs/solutions/reference-designs/eval-ad6676/ad6676-wideband_rx_subsystem_ad6676ebz.rst +++ b/docs/solutions/reference-designs/eval-ad6676/ad6676-wideband_rx_subsystem_ad6676ebz.rst @@ -54,7 +54,7 @@ Helpful Links - :adi:`ADI RF Impedance Matching Tool ` - `ADIsimRF Software `_ - :adi:`ADI RF/IF Transceiver Products Web page ` -- :doc:`AD6676 Wideband IF Receiver Subsystem Linux device driver ` +- `AD6676 Wideband IF Receiver Subsystem Linux device driver `_ AD6676 Evaluation Platform User Guides -------------------------------------- diff --git a/docs/solutions/reference-designs/eval-ad6676/ad6676.rst b/docs/solutions/reference-designs/eval-ad6676/ad6676.rst index eba95c7c476..8890ea21ec3 100644 --- a/docs/solutions/reference-designs/eval-ad6676/ad6676.rst +++ b/docs/solutions/reference-designs/eval-ad6676/ad6676.rst @@ -19,12 +19,12 @@ Evaluation Boards ----------------- - :adi:`AD6676-EBZ ` -- :doc:`AD6676 : Design Tools and Startup Guide for the AD6676 evaluation board, a high dynamic range, Wideband Receiver ` +- `AD6676 : Design Tools and Startup Guide for the AD6676 evaluation board, a high dynamic range, Wideband Receiver `_ Description ----------- -This is a Linux industrial I/O (:doc:`IIO `) subsystem driver, targeting RF Transceivers. The industrial I/O subsystem provides a unified framework for drivers for many different types of converters and sensors using a number of different physical interfaces (i2c, spi, etc). See :doc:`IIO ` for more information. +This is a Linux industrial I/O (`IIO `_) subsystem driver, targeting RF Transceivers. The industrial I/O subsystem provides a unified framework for drivers for many different types of converters and sensors using a number of different physical interfaces (i2c, spi, etc). See `IIO `_ for more information. Source Code =========== @@ -182,7 +182,7 @@ numbering is constant and may be known in advance. \ TIP: An example program which uses the interface can be found here: - - :doc:`IIO Oscilloscope ` + - `IIO Oscilloscope `_ .. image:: https://wiki.analog.com/_media/resources/tools-software/linux-drivers/iio-adc/ad6676-osc-screenshot.png :align: center @@ -531,7 +531,7 @@ JESD204B Interface Testing Below Eyes were captured on a Xilinx ZC706 after > 4 hours of operation: -:doc:`JESD204B Eye Scan ` +`JESD204B Eye Scan `_ |LANE0| |LANE1| @@ -541,10 +541,10 @@ More Information - IIO mailing list: linux-iio@vger.kernel.org - `IIO Linux Kernel Documentation sysfs-bus-iio-\* `_ - `IIO Documentation `_ -- :doc:`IIO test and visualization application ` -- :doc:`libiio - IIO system library ` -- :doc:`libiio - Internals ` -- :doc:`Pointers and good books ` +- `IIO test and visualization application `_ +- `libiio - IIO system library `_ +- `libiio - Internals `_ +- `Pointers and good books `_ - `IIO High Speed `_ - `Software Defined Radio using the IIO framework `_ - From fb4f221d343638410411c23991714a1b04194c21 Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Tue, 7 Apr 2026 17:33:09 +0300 Subject: [PATCH 5/5] Trigger CI Co-Authored-By: Claude Opus 4.6