Analog.com Analog Dialogue Wiki 简体中文
EngineerZone
EngineerZone
  • Log In
  • Site
  • Search
  • User
  • Support

    Popular Forums

    • RF and Microwave
    • Power Management
    • Video
    • FPGA Reference Designs
    • Precision ADCs
    • Linux Software Drivers
    • SigmaDSP Processors & SigmaStudio Dev. Tool

    Product Forums

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

    Application Forums

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

    Design Center Forums

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

    Highlighted Webinar

    Audio Design Solutions for Augmented and Virtual Reality (AR/VR) Glasses

    Recent Discussions

    • Standalone Data logging using ADALM2000
    • About sdr.tx(). Can I change the transmitter frequency after call this function?
    • About the values of CurV1,2 displayed in the cursors frame of scopy.
    • Purpose of "Load" in Scopy signal generator configuration GUI
    • about the transient response experiment example of RL Circuit using adalm2000

    Places

    • ADI Education Home
    • ADI Education China
    • ADI Education India
    • ADI Education Philippines
    • StudentZone (Analog Dialogue)
    • Virtual Classroom

    Latest Webinars

    • Audio Design Solutions for Augmented and Virtual Reality (AR/VR) Glasses
    • Robust Industrial Motor Encoder Signal Chain Solutions
    • Precision Low Power Measurement Solutions for Intelligent Edge
    • Advantages of Integrating Digital Power System Management (DPSM) into your Design
    • Optimizing GaN and GaAs RF Amplifier Performance Using Novel Biasing Techniques
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC's Quizzes AQQ231 about Birthdays and Cake Candles
    View All

    Places

    • Community Help
    • Logic Lounge

    Resources

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

    Highlighted Blogs

    Understanding Public Key Infrastructures

     

    Share Your Insights! How Can We Improve Your Engineering Design Needs?

    Latest Blogs

    • 10BASE-T1L Makes Powering Intelligent Field Instruments Painless
    • Using Python To Control The Pluto Radio And Plot Data
    • Resistance is NOT Futile
    • What is The Continuity of Engineering?
    • Move Over Sensors: Actuators Are Entering The Smart Factory Stage
    Read All Blogs

    ADI Blogs

    • EZ Spotlight
    • The Engineering Mind
  • Partners

    Electronic Design Services - PartnerZone

    • Boston Engineering
    • Calian, Advanced Technologies
    • Colorado Engineering Inc. (DBA CAES AT&E)
    • Clockworks Signal Processing
    • Epiq Solutions
    • Fidus
    • PalmSens
    • Richardson RFPD
    • Tri-Star Design, Inc.
    • VadaTech
    • Vanteon
    • X-Microwave
    View All
High-Speed DACs
  • Data Converters
High-Speed DACs
Documents AD9106 / AD9102 Low-Power DAC and Waveform Generator: FAQs
  • Forums
  • File Uploads
  • FAQs/Docs
  • Members
  • Tags
  • More
  • Cancel
  • HIGH-SPEED DAC SUPPORT COMMUNITY
  • +Documents
  • +AD768ARZ: FAQ
  • -AD9102: FAQ
    • AD9106 / AD9102 Low-Power DAC and Waveform Generator: FAQs
    • Digital Pattern Generator?
    • What is the tuning resolution of the output frequency of these devices?
  • +AD9106: FAQ
  • +AD9115: FAQ
  • +AD9116: FAQ
  • +AD9117: FAQ
  • +AD9119: FAQ
  • +AD9122: FAQ
  • +AD9129: FAQ
  • +AD9135: FAQ
  • +AD9142A: FAQ
  • +AD9144: FAQ
  • +AD9146: FAQ
  • +AD9148: FAQ
  • +AD9286: FAQ
  • +AD9712: FAQ
  • +AD9716: FAQ
  • +AD9717: FAQ
  • +AD9726: FAQ
  • +AD9734: FAQ
  • +AD9736: FAQ
  • +AD9739: FAQ
  • +AD9739A: FAQ
  • +AD9742: FAQ
  • +AD9744: FAQ
  • +AD9747: FAQ
  • +AD9748: FAQ
  • +AD974: FAQ
  • +AD9763: FAQ
  • +AD9765: FAQ
  • +AD9767:FAQ
  • +AD976A: FAQ
  • +AD9774: FAQ
  • +AD9776: FAQ
  • +AD9777: FAQ
  • +AD9779: FAQ
  • +AD9779A: FAQ
  • +AD977: FAQ
  • +AD977A: FAQ
  • +AD9780: FAQ
  • +AD9783: FAQ
  • +AD9786: FAQ
  • +AD9788: FAQ
  • +AD9789: FAQ
  • +DPG3: FAQ

AD9106 / AD9102 Low-Power DAC and Waveform Generator: FAQs

Q1:

What is the recommended clock source?

------------------------------------------------------------------------------------------------------------------------------

A1:

For optimum DAC performance, the clock input signal should be a very low jitter, fast rise time differential signal. The clock receiver generates its own common-mode voltage so the differential pair (CLKP and CLKN) should be AC-coupled.

For fixed frequency clock input, a low-jitter LVDS-output temperature-compensated crystal oscillator (TCXO) will work well.  Refer to Table 5 of the device datasheets for CLKP and CLKN specifications, and the evaluation board schematic in EVAL-AD910x Wiki Page for the clocking circuit and recommended crystal oscillator part number.

If frequency division of the clock input is desired, use AD9514 clock distribution IC for low-jitter performance. Refer to the Clock Input section of the device datasheets for more information.

------------------------------------------------------------------------------------------------------------------------------

FAQ1 is generated from the following threads:

22815/clock-source-for-ad9102 | 115703/sawtooth-waveform-generation-with-ad9102 | 22866/ad9106-questions | 539279/ad9106-software-and-hardware | 22857/ad9106-ad9102-clock-issue | 22765/ad9106-ebz-input-clock | 22660/ad9106-clocking-and-output-questions | 22708/ad9106-no-spi-startup-after-clock-update

------------------------------------------------------------------------------------------------------------------------------

Q2:

What is the minimum DAC clock input frequency?

------------------------------------------------------------------------------------------------------------------------------

A2:

There is no minimum input clock frequency. Any clock rate up to 180MHz will work. For optimum AC performance, the recommended clock frequency fCLK in terms of DAC output frequency fOUT is fCLK ≥ 4 x fOUT.

------------------------------------------------------------------------------------------------------------------------------

FAQ2 is generated from the following threads:

22636/about-the-clkin-frequency-of-the-ad9102 | 22495/what-s-the-minimum-input-frequency-for-ad9106-for-generating-10mhz-sine-wave | 22327/ad9106

------------------------------------------------------------------------------------------------------------------------------

Q3:

What is SPI clock polarity and phase?

------------------------------------------------------------------------------------------------------------------------------

A3:

SCLK is idle low. It leads with a rising edge and trails with a falling edge. SPI data is sampled on SCLK rising edge and shifted out on the falling edge. This is SPI Mode 0, one of the four SPI modes discussed in Introduction to SPI Interface Analog Dialogue.

------------------------------------------------------------------------------------------------------------------------------

FAQ3 is generated from the following threads:

23094/ad9102-spi-clock-polarity | 110049/ad9102-spi-communication-clock-polarity-and-phase-fpga

------------------------------------------------------------------------------------------------------------------------------

Q4:

How can I generate waveforms out of the DAC? Are there any examples of SPI register settings and SRAM data vectors I can try?

------------------------------------------------------------------------------------------------------------------------------

A4:

There is a proper register write sequence that should be followed before waveforms can be generated out of the DACs. Below is an outline of how to set up SPI communication with AD9106 or AD9102.

  1. Set initial values of IOs.
    • RESET - logic high
    • TRIGGER - logic high
    • CS - logic high
  2. Set SPI frequency and mode. Refer to FAQ3.
  3. Pulse RESET to logic low then high to reset register values.
  4. Proceed with register read or write. Refer to page 18 of AD9102 datasheet, and pages 22-23 of AD9106 datasheet.
    1. If loading a pattern from SRAM, write data on SRAM registers first. Refer to page 23 of AD9102 datasheet, and page 27 of AD9106 datasheet.
      • To write data: Enable MEM_ACCESS bit in 0x1E register. Write left-justified data to SRAM registers, 0x6000 to 0x6FFF. Disable MEM_ACCESS bit.
      • To read data: Enable BUF_READ and MEM_ACCESS bits in 0x1E register. After reading data from SRAM registers, disable BUF_READ and MEM_ACCESS bits.
    2. Write to or read from SPI registers. Update last bits of registers 0x1E (RUN bit) and 0x1D (RAMUPDATE bit) at the end of the write sequence.
  5. Set TRIGGER high to start pattern generation.

Example SPI register settings and SRAM data vectors can be found in the ADI Mbed repositories below:

  • Program files: https://os.mbed.com/teams/AnalogDevices/code/EVAL-AD910x/
  • Library files: https://os.mbed.com/teams/AnalogDevices/code/AD910x/

The codes in the repositories can be used with the evaluation boards EVAL-AD9106 and EVAL-AD9102 which are designed to work with SDP-K1, an Mbed-enabled hardware.

------------------------------------------------------------------------------------------------------------------------------

FAQ4 is generated from the following threads:

22773/ad9102-register-settings-for-qpsk-modulation-using-its-internal-4k-buffer | 28889/need-the-command-format-for-the-ad9106 | 22849/ad9102---trouble-with-dds-mode-and-reading-from-sram | 99729/ad9102-how-set-run-bit-in-pat_status-register | 110441/trigger-for-fpga-and-update-bit-ad9102 | 110692/ad9102-trigger-and-update-bit-0x1d | 23072/ad9102-output-signal | 22929/ad9102-spi-connection-question | 110967/ad9106-when-to-set-ramupdate-and-run-bits | 22645/ad9106-how-to-output-the-waves-that-saved-in-the-sram-of-ad9106/399897#399897 | 22720/about-the-function-of-ad9102 | 22520/ad9102-help-with-generator-random-waveform | 106990/sinewave-from-ram-with-ad9102 | 22921/ad9106-sram-read-write | 22668/ad9106-how-to-generate-amplitude-modulated-sine-waves | 22664/for-ad9106-how-to-output-sine-single-with-amplitude-modulated | 22625/ad9106-sine-output-and-tuning-words | 72635/signal-generation-with-ad9106 | 103558/ad9102-dac-constant-gain-offset

------------------------------------------------------------------------------------------------------------------------------

Q5:

How much does trigger to output delay vary?

------------------------------------------------------------------------------------------------------------------------------

 A5:

Trigger to output delay is tSU plus tDLY as shown in Figure 43 of AD9106 datasheet (Figure 41 of AD9102 datasheet) is 96ns for DAC clock frequency of 180MHz.

tSU is the duration between the first rising edge of the clock signal encountered after trigger falling edge. Its minimum values are indicated in Digital Specifications Tables in the datasheet. It should be less than one clock period.

tDLY is the duration between the first rising edge of the clock signal encountered after trigger falling edge and start of pattern generation, it can be programmed in the PATTERN_DELAY register. Minimum value is 0x000E.

------------------------------------------------------------------------------------------------------------------------------

FAQ5 is generated from the following threads:

115781/ad9102-ad9106-delay-between-trigger-and-start-of-generation-from-ram | 22935/ad9102-help-with-trigger-programming/90506#90506 | 22941/ad9106-a-bunch-of-questions

------------------------------------------------------------------------------------------------------------------------------

Q6:

Is it possible to synchronize multiple AD9102 or AD9106 DACs?

------------------------------------------------------------------------------------------------------------------------------

A6:

To synchronize multiple AD9102 or AD9106 DACs, tie the /Trigger pins together. For finer trigger to output delay, consider clock synchronization, and tSU and tDELAY as described in FAQ5.

------------------------------------------------------------------------------------------------------------------------------

FAQ6 is generated from the following threads:

536450/ad9102-6---synch-multiple-dds/391549?focus=true#391549 | 22681/ad9106-waveform-synchronisation

------------------------------------------------------------------------------------------------------------------------------

Q7:

What is SRAM size, word length, and data format?

------------------------------------------------------------------------------------------------------------------------------

A7:

There are 4096 addresses, 0x6000 to 0x6FFF in the on-chip SRAM. Word length is 14 bits for AD9102, 12 bits for AD9106, and is left justified. For AD9102 data should be written in bits [15:2] and for AD9106 in bits [15:4] of each SRAM address.

SRAM data format or code follows the two’s complement notation. 14-bit code should be shifted left by 2 bits before writing it to AD9102 SRAM while 12-bit code should be shifted left by 4 bits before writing it to AD9106 SRAM. Alternatively, 14-bit data shifted left by 2 bits can be written to AD9106 SRAM but the last two bits will be truncated. Refer to the table below for equivalent current outputs of some input codes.

14-bit DAC Input Code
(Base 10)

AD9102 SRAM Data
(Base 16)

12-bit DAC Input Code
(Base 10)

AD9106 SRAM Data
(Base 16)

IOUTxP

IOUTxN

8191

0x7FFC

2047

0x7FF0

IOUTFS

0

0

0x0000

0

0x0000

IOUTFS/2

IOUTFS/2

-8192

0x8000

-2048

0x8000

0

IOUTFS


Select SRAM as input to a DAC channel by setting WAVE_SELx bits to 0b00 in the following WAV_CONFIG registers:

  • 0x27 [1:0] for AD9102,
  • 0x27 [1:0], 0x27 [9:8], 0x26 [1:0], 0x26 [9:8] for AD9106 Channels 1 to 4, respectively.

Refer to FAQ10 for more information on generating data vectors.

------------------------------------------------------------------------------------------------------------------------------

FAQ7 is generated from the following threads:

105661/ad9102-sram-changes-while-running | 22919/ad9102-sram-data | 109305/ad9102-triangle-wave-with-78-125-khz | 104301/bit-memory-pattern-on-ad9106 | 103558/ad9102-dac-constant-gain-offset

------------------------------------------------------------------------------------------------------------------------------

Q8:

How can double SPI data write to AD9102 SRAM work?

------------------------------------------------------------------------------------------------------------------------------

A8:

AD9102 does not have double SPI data write to SRAM feature that AD9106 has.

------------------------------------------------------------------------------------------------------------------------------

FAQ 8 is generated from the following threads:

22912/ad9102-double-data-spi-mode | 22860/doube-spi-data-line-not-working-on-ad9102

------------------------------------------------------------------------------------------------------------------------------

Q9:

Does the SRAM address auto-decrement for consecutive SPI read or write operations?

------------------------------------------------------------------------------------------------------------------------------

A9:

For consecutive write operations in the SRAM address space, the SPI port automatically decrements the register address, 0x6FFF down to 0x6000, if /CS stays low beyond the first data-word. Unfortunately, this auto-decrement feature does not apply to consecutive read operations from the SRAM.

------------------------------------------------------------------------------------------------------------------------------

FAQ9 is generated from the following threads:

22838/ad9106-sram | 537164/ad9102-sram-read-write

------------------------------------------------------------------------------------------------------------------------------

Q10:

How can I use the on-chip SRAM for arbitrary pattern generation?

------------------------------------------------------------------------------------------------------------------------------

A10:

Data vector of any waveform shape can be written to the on-chip SRAM but creating the vector can be challenging and time consuming. It will be more convenient to use DPG Lite. Shown below are the waveforms that can be generated using the software. 

When creating data vectors for AD9106 and AD9102, make sure to choose the proper DAC resolution and leave the Unsigned Data box unchecked. A continuous wave vector with record length of 4096 can be created but the SRAM can also be composed of different types of waveforms like in the example below where there are 3 vectors with combined record length of 4096. These can be saved as text files and integrated into the application software.

It is not required to write to all 4096 addresses. Each DAC channel can fetch data from a fixed SRAM address to another. The start and stop addresses can be set using the following registers:

  • 0x5E and 0x5F for AD9102
  • 0x5E and 0x5F, 0x59 and 0x5A, 0x55 and 0x56, and 0x51 and 0x52 for AD9106 Channels 1 to 4, respectively.

------------------------------------------------------------------------------------------------------------------------------

FAQ10 is generated from the following threads:

166167/how-to-use-sram-to-output-arbitrary-wave/375798#375798 | 23024/ad9102-output-sweeping-sine-wave | 23009/ad9102-dds---arbitrary-waveform-generation | 22928/awg-using-the-ad9102 | 22833/ad9102-6-frequency-change | 22539/ad9106-ebz | 23025/ad9106-as-a-pulse-generator | 109232/ad9106-and-white-noise | 22981/ad9106-termination-to-avdd-or-gnd-phase-shift-square-wave

------------------------------------------------------------------------------------------------------------------------------

Q11:

What is the maximum value and resolution of RSET?

------------------------------------------------------------------------------------------------------------------------------

A11:

Based on the DC specifications tables in the datasheets, maximum full-scale output current IOUTxFS is 8mA and minimum is 2mA. Following the formula in the DAC Transfer Function section of the datasheets, IOUTxFS = 32 x (VREFIO/RSETx), to set IOUTxFS to 8mA with a VREFIO of 1V, an RSETx of 4KΩ should be connected to the FSADJx pin of the DAC. Also, to set IOUTxFS to 2mA, RSETx should be 16KΩ, the maximum resistor value. 

If DACx_RSET_EN bit of the FSADJx register is enabled and the on-chip resistors are used for IOUTxFS tuning, bits [4:0] of the same register can be used to set the on-chip resistor value. Refer to the table of values below. The maximum DACx_RSET value is 0x14 and minimum is 0x05 denoting a resolution of 800Ω.

RSETx (Ω)

IOUTxFS (mA),
VREFIO = 1V

DACx_RSET bits [4:0]
of FSADJx Register

4000

8

0x05

8000

4

0x0A

16000

2

0x14


On-chip RSETx values can be set using the following registers:

  • 0x0C for AD9102,
  • 0x0C, 0x0B, 0x0A, 0x09 for AD9106 Channels 1 to 4, respectively.

------------------------------------------------------------------------------------------------------------------------------

FAQ11 is generated from the following threads:

22542/ad9106-internal-rset-range-and-values | 22731/internal-rset-values/138634#138634 | 22389/ad9106-full-scale-output-current | 22979/ad9106-minimum-hardware-set

------------------------------------------------------------------------------------------------------------------------------

Q12:

Why does automatic IOUTFS calibration result to an overflow or underflow?

------------------------------------------------------------------------------------------------------------------------------

A12:

Automatic IOUTFS calibration may result to an overflow or underflow if the hardware setup and step-by-step procedure described in pages 19-20 of AD9102 datasheet and page 24 of AD9106 datasheet are not followed correctly. Automatic calibration only works when on-chip resistors RSETx are used for IOUTxFS tuning and has a very small effect in gain adjustment.

Default clock divider value for the calibration clock is 512 but it can also be set to the values in the table below:

CAL_CLK_DIV 0x0D [2:0] Value (decimal)

Exponent
of 2

CLK Divider

0

2

4

1

3

8

2

4

16

3

5

32

4

6

64

5

7

128

6

8

256

7

9

512

------------------------------------------------------------------------------------------------------------------------------

FAQ12 is generated from the following threads:

164308/ad9106-cal_clk_div-and-bgdr-bits | 22736/underflow-during-ioutfs-calibration | 22866/ad9106-questions | 22893/ad9106 | 22839/ad9106-calibration | 22545/ad9102-calibration-overflow-always

------------------------------------------------------------------------------------------------------------------------------

Q13:

What is the gain drift with temperature when off-chip/external voltage reference is used?

------------------------------------------------------------------------------------------------------------------------------

A13:

Gain temperature drift specification does not include effects of the on-chip/internal reference REFIO temperature drift because the ideal gain is calculated using the measured VREFIO. So even with a perfect off-chip/external voltage reference, gain drift will still be around 220 to 250 ppm/°C. Internal reference temperature drift specification is provided separately. Actual values are in the DC Specifications tables in both AD9102 and AD9106 datasheets. Using an off-chip voltage reference with low temperature drift and using off-chip temperature-tracking RSET resistors may result in lower full-scale output drift than using the on-chip options.

------------------------------------------------------------------------------------------------------------------------------

FAQ13 is generated from the following threads:

111847/ad9106---thermal-drift | 22990/ad9106-external-vref-gain-drift

------------------------------------------------------------------------------------------------------------------------------

Q14:

How is DACx_DGAIN configured? How does it affect the DAC output waveform?

------------------------------------------------------------------------------------------------------------------------------

A14:

DACx_DGAIN or digital gain multiplies the digital data at a DAC channel input path by gain values that ranges from -2 to +2. It follows two’s complement notation. See example gain values and corresponding 12-bit code in the table below.

Gain

DACx_DGAIN [15:4] Value

1

0x400

-1

0xC00

-2

0x800


Although the digital data can be multiplied by up to a magnitude of 2, the DAC current output is limited to the range 0 to IOUTxFS. If the resulting DAC input code, (digital data x digital gain) + offset, exceeds full scale, output will be clipped at IOUTxFS. If code is lower than negative full scale, output will be clipped at 0A.

Digital gain can be set using the following registers:

  • 0x35 for AD9102,
  • 0x35, 0x34, 0x33, 0x32 for AD9106 Channels 1 to 4, respectively.

------------------------------------------------------------------------------------------------------------------------------

FAQ14 is generated from the following threads:

22962/setting-ad9102-output-amplitude | 90355/ad9102-dac-datapaths-function | 22663/for-ad9106-how-to-configure-the-dac4_gain-dac4_dig_gain-register | 533522/ad9106-gain-setting-question/405239#405239 | 22972/ad9106-errata

------------------------------------------------------------------------------------------------------------------------------

Q15:

How can I use DDSx_PW register for phase adjustment? Can I use it to offset phase of SRAM-generated waveform?

------------------------------------------------------------------------------------------------------------------------------

A15:

DDSx_PW register or DDSx phase offset register can be used to adjust phase offset of a DDS-generated waveform only. It will not affect other prestored waveforms and SRAM-generated waveform. DDSx_PW is 16 bits wide and corresponds to up to 360 degrees of phase offset. Resolution is around 0.055 degrees.

Select DDS pattern generator as input to a DAC channel by choosing prestored waveform and DDS output in the following WAV_CONFIG registers:

  • 0x27 [5:0] for AD9102,
  • 0x27 [5:0], 0x27 [13:8], 0x26 [5:0], 0x26 [13:8] for AD9106 Channels 1 to 4, respectively.

DDS waveform phase offset can be adjusted using the following registers:

  • 0x43 for AD9102,
  • 0x43, 0x42, 0x41, 0x40 for AD9106 Channels 1 to 4, respectively.

------------------------------------------------------------------------------------------------------------------------------

FAQ15 is generated from the following threads:

22968/questions-regarding-ad9102-trigger-signal | 22566/about-ad9102-phase | 22975/ad6102-phase-adjustment/79867#79867 | 141267/initialization-of-ad9106/366030#366030 | 22941/ad9106-a-bunch-of-questions

------------------------------------------------------------------------------------------------------------------------------

Q16:

What is the resolution of the DAC constant?

------------------------------------------------------------------------------------------------------------------------------

A16:

AD9106 and AD9102 can output a DC signal by selecting prestored waveform and constant value in the following registers:

  • 0x27 [5:0] for AD9102,
  • 0x27 [5:0], 0x27 [13:8], 0x26 [5:0], 0x26 [13:8] for AD9106 Channels 1 to 4, respectively.

The DAC constant value, like SRAM data, follows the two’s complement notation. It is 14 bits wide and can be set in bits [15:4] of the DACx_CST registers in the following addresses:

  • 0x31 for AD9102,
  • 0x31, 0x30, 0x2F, 0x2E for AD9106 Channels 1 to 4, respectively.

In the table below are equivalent current outputs of some input codes.

14-bit DAC Input Code
(Base 10)

DACx_CST Register
(Base 16)

IOUTxP

IOUTxN

8191

0x7FFC

IOUTFS

0

0

0x0000

IOUTFS/2

IOUTFS/2

-8192

0x8000

0

IOUTFS

------------------------------------------------------------------------------------------------------------------------------

FAQ 16 is generated from the following threads:

22537/digital-gain-in-ad9106-does-not-seem-to-have-an-effect | 22922/ad9102-configuration-register-values

------------------------------------------------------------------------------------------------------------------------------

Q17:

How can I generate sawtooth waveforms?

------------------------------------------------------------------------------------------------------------------------------

A17:

To generate sawtooth or triangle waveforms using the on-chip sawtooth pattern generator, select it first as input to a DAC channel by choosing prestored waveform and sawtooth in the following registers:

  • 0x27 [5:0] for AD9102,
  • 0x27 [5:0], 0x27 [13:8], 0x26 [5:0], 0x26 [13:8] for AD9106 Channels 1 to 4, respectively.

Select desired type of sawtooth waveform (ramp up, ramp down, or triangle) and set number of samples per step using the following SAW_CONFIG registers:

  • 0x37 [7:0] for AD9102,
  • 0x37 [7:0], 0x37 [15:8], 0x36 [7:0], 0x36 [15:8] for AD9106 Channels 1 to 4, respectively.

Alternatively, sawtooth waveforms can be generated using the on-chip SRAM. Refer to FAQ10.

Number of steps of the sawtooth waveform for both AD9102 and AD9106 is 214 or 16,384. Total number of steps for a triangle waveform is twice as many. Total number of steps multiplied by step time is the sawtooth ramp up and/or ramp down time. Step time is the number of samples per step multiplied by the pattern period resolution.

Pattern period resolution or pattern period LSB is determined by DAC clock period and PAT_PERIOD_BASE [7:4] value in the PAT_TIMEBASE 0x28 register. Since PAT_PERIOD_BASE is 4 bits wide, pattern period LSB ranges from 1 to 16 times the DAC clock period.

Pattern period, on the other hand, is not the same as sawtooth ramp time. Pattern period is pattern period LSB multiplied by the value in PAT_PERIOD 0x29 register. 

Below are example register configurations and the resulting sawtooth waveforms for DAC clock frequency of 180MHz (TCLK = 5.56ns) and PAT_PERIOD = 0xFFFF:

PAT_TIMEBASE
[7:4] base10

Pattern Period LSB
= TCLK 
x PAT_TIMEBASE

Samples/Step
SAW_CONFIG
[15:10] or [7:2]
base10

Step Time
= TCLK x Samples/Step

Sawtooth Ramp Time
= 214 x Step Time

Pattern Period
= TCLK x PAT_PERIOD

Waveform

1

5.56 ns

1

5.56 ns

91.02 us

364.08 us

a

1

5.56 ns

2

11.11 ns

182.04 us

364.08 us

c

1

5.56 ns

64

355.56 ns

5.825 ms

364.08 us

2

11.11 ns

1

5.56 ns

91.02 us

728.17 us

d

2

11.11 ns

64

355.56 ns

5.825 ms

728.17 us

a.   b. 

c.   d. 

The waveforms are from the positive output of a DAC channel. Waveform b is the triangle version of waveform a.

------------------------------------------------------------------------------------------------------------------------------

 FAQ17 is generated from the following threads:

109305/ad9102-triangle-wave-with-78-125-khz/ | 97981/how-can-i-adjust-the-ad9102-sawtooth-output-frequency | 97979/sawtooth-problem | 22578/ad9102-high-speed-signal-generation-issues | 22744/ad9106-sawtooth-frequency-range-as-function-of-clk/136436#136436 | 90371/ad9106-sawtooth | 90428/ad9106-sawtooth-speed | 22448/sawtooth-waveform-generation-of-5khz-using-dds-ad9106/184421#184421 | 90370/what-is-the-fastest-sawtooth-wave-the-ad9106-can-put-out/201362#201362

------------------------------------------------------------------------------------------------------------------------------

Q18:

What is the state of the DAC outputs on power up?

------------------------------------------------------------------------------------------------------------------------------

A18:

On power up and with proper load resistors connected, the DAC outputs IOUTxP and IOUTxN go to midrange or IOUTxFS/2. This is also the case when the DACs are idle – before and after pattern generation.

To save power before and after pattern generation, the DACs can be put to sleep by setting bits [3:0] of the POWERCONFIG 0x01 register to 0b1111.

------------------------------------------------------------------------------------------------------------------------------

FAQ 18 is generated from the following threads:

22619/ad9106-output-state-on-power-up | 119839/ad9102-output-going-to-midrange-after-pattern-period-executed | 90365/ad9102-dac-output-state-in-sleep-mode

------------------------------------------------------------------------------------------------------------------------------

  • high_speed_da_converter
  • ad9102
  • high_speed_converter
  • high_speed_dac
  • dds
  • ad9106
  • high_speed_digital_to_analog_converter
  • high_speed
  • Share
  • History
  • More
  • Cancel
Related
Recommended
Social
Quick Links
  • About ADI
  • ADI Signals+
  • Analog Dialogue
  • Careers
  • Contact us
  • Investor Relations
  • News Room
  • Quality & Reliability
  • Sales & Distribution
  • Incubators
Languages
  • English
  • 简体中文
  • 日本語
Newsletter

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

Sign Up
Analog Logo
©1995 - 2023 Analog Devices, Inc. All Rights Reserved
沪ICP备09046653号-1
  • Sitemap
  • Legal
  • Privacy & Security
  • Privacy Settings
EngineerZone Uses cookies to ensure you get the best experience in our community. For more information on cookies, please read our Privacy & Security Statement.