This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DAC3482: Spurious signals generated by SIF sync.

Part Number: DAC3482

Using DAC3482 in our design. We have a certain subset of devices where sending the SIF sync can cause bad spurious output in our system.

We are using a DAC3482 in our device and the output updates as expected when we toggle the SIF sync bit: Bit 1 of the config31 register.
However, on certain devices, it will intermittently generate extra spurious signals and it seems dependent on the QMC gain register values.  Initially I would have thought some sort of saturation or overflow, either digital or analog, but further testing reveals that this spurious response is intermittent, sometimes generating a clean signal with the spurious levels in an acceptable range. This is true without changing any of the associated register values.  I have narrowed it down to the SIF sync bit in that I can leave the DAC playing a waveform with no other changes and simply toggling the SIF sync bit causes the problem to occur or disappear.

Data notes on the capture below:

  • Cyan: Good output
  • Yellow: Bad spurious output
  • Green arrows: highlight spurs that increase dramatically when in a bad state, as much as 20-30 dB
  • Spurs +/- 20Mhz from LO increase noticeably, along with other spurs +/- 20Mhz from other observed spurs.
  • The DAC3482 output is being fed to an RF Modulator and up-converted in the graph data provided.
    • 180MHz IF frequency (sinusoidal) output from DAC3482, up-converted to 5.75GHz.
  • The only thing changing between a good and bad output is the toggling of the SIF sync bit.
  • The QMC gain register values can be decreased such that the output does not generate these spurious signals, but then we lose dynamic range.
    • In this test case QMC gain (I,Q):
      • good values (890,895) seem to never generate extra spurs.
      • bad values (893,899) seem to generate spurs every 10 or so times we toggle SIF sync.  Increasing the QMC gain values does appear to increase frequency of problems.
  • The primary signal level seems to jump about 0.5-0.6 dB when in the bad state.
  • FFT is an average of 32 captures.

  • Hello Gavin,

    I would advise that you check if the same SIF SYNC signal is being used to initialize the QMC and also the FIFO logic. The same SIF SYNC, if configured by config 30 to config32, to be registered to multiple DSP blocks, could potentially cause these type of transient response. The FIFO logic, especially, need to be disabled to register the SIF SYNC after the initial data interface bring-up. The reason is that the same SIF SYNC signal could reset the FIFO read pointer, and cause momentary reset in the data path (connected to the FIR and NCOs)

    We can certainly check your configuration file if you are comfortable sharing. If you don't feel comfortable sharing, you may contact your local sales team to have them send over the configuration. I know there are dedicated team calling on your account.

    -Kang
  • Thank you, Kang.
    I will check this. I believe several registers are configured for SIF sync update and I don't believe we have changed this configuration from previous versions of our device. We have used this device for many years and not seen this issue. Suddenly we are seeing this issue and I don't believe anything related has changed.
    Of note, we see this issue in some devices, but not on others. We are currently cross-referencing device date codes to see if we observe a correlation between date codes and this issue. However, what you suggest could definitely be related.
  • Using SPI communications, we configure the 3 sync configuration registers as follows:

    dac3482_write(mod, DAC3482_CONFIG30, 0x1181);
    dac3482_write(mod, DAC3482_CONFIG31, 0x818C);
    dac3482_write(mod, DAC3482_CONFIG32, 0x2401);

    Those values broken down are:

    config30:
    15:12 - syncsel_qmoffset(3:0) = 1h = Bit 12: Auto-sync from register write
    11:8 - Reserved (0x1 default) = 1h
    7:4 - syncsel_qmcorr(3:0) = 8h = Bit 7: sif_sync (via config31)
    3:0 - Reserved (0001 default) = 1h

    config31:
    15:12 - syncsel_mixer(3:0) = 8h = Bit 15: sif_sync (via config31)
    11:8 - Reserved (0x1 default) = 1h
    7:4 - syncsel_nco(3:0) = 8h = Bit 7: sif_sync (via config31)
    3:2 - syncsel_dataformatter = 11b = 11: No sync
    1 - sif_sync .. Toggled for SIF Sync event, causes bad behavior in some units.
    0 - reserved = 0, default.

    config32:
    15:12 - syncsel_fifoin(3:0) = 2h = Bit 13: FRAME
    11:8 - syncsel_fifoout(3:0) = 4h = Bit 10: OSTR – Dual Sync Sources Mode
    7:1 - Reserved (0x0 default) = 0h
    0 - clkdiv_sync_sel = 1b = FRAME, SYNC, or SIF SYNC based on syncsel_fifoin source selection (config32, bit<15:12>)
  • Hi Gavin,

    If it just a few devices, I would suggest that you also check the DVDD rail at the DAC3482 device pin. The DVDD consumes the most amount of current, and sometimes, through power supply filtering and PCB traces, the actual voltage with the device running may be lowered than the device limit. Try elevate by 50mV or so to see if this problem persists. 

    We have also seen cases that the DVDD supply would sag (due to power supply loop constant and local decoupling limitations), and caused a momentarily dip in the DVDD rail and caused the logic inside the DAC3482 to glitch. This usually happens when DVDD rail is shared with other devices such as FPGA. I cannot think of ways that the DAC3482 sif sync trigger could cause sufficient current draw for potential voltage dip, but perhaps other sequence of other logic devices such as FPGA in executing the sif sync could cause this. 

    Other recommendations on the settings. 

    Gavin Schmidt said:
    config30:
    15:12 - syncsel_qmoffset(3:0) = 1h = Bit 12: Auto-sync from register write
    11:8 - Reserved (0x1 default) = 1h
    7:4 - syncsel_qmcorr(3:0) = 8h = Bit 7: sif_sync (via config31)
    3:0 - Reserved (0001 default) = 1h

    please try to set QMcorr to auto-sync (something besides SIF_SYNC) and retry

    Gavin Schmidt said:
    config31:
    15:12 - syncsel_mixer(3:0) = 8h = Bit 15: sif_sync (via config31)
    11:8 - Reserved (0x1 default) = 1h
    7:4 - syncsel_nco(3:0) = 8h = Bit 7: sif_sync (via config31)
    3:2 - syncsel_dataformatter = 11b = 11: No sync
    1 - sif_sync .. Toggled for SIF Sync event, causes bad behavior in some units.
    0 - reserved = 0, default.

    Please advise if data formatter ever had a sync source. It should match the FIFO input sync source such as FRAME in your case. It is used to format the I/Q data in between the data paths. I can understand that after the initial data interface synchronization you can set it to 0 as no sync, but before and during the data interface synchronization, you must select FRAME and use FRAME to initialize this part of logic.

    Gavin Schmidt said:
    config32:
    15:12 - syncsel_fifoin(3:0) = 2h = Bit 13: FRAME
    11:8 - syncsel_fifoout(3:0) = 4h = Bit 10: OSTR – Dual Sync Sources Mode
    7:1 - Reserved (0x0 default) = 0h
    0 - clkdiv_sync_sel = 1b = FRAME, SYNC, or SIF SYNC based on syncsel_fifoin source selection (config32, bit<15:12>)

    clkdiv_sync_sel should be OSTR to match the FIFO output pointer. It is meant to initialize the all the DSP logic after the FIFO output to ensure deterministic latency, and also ensure the FIFO output clocks are initialized the same ways as the OSTR pointer.

    You may refer to the following app note for the details of the mechanics of the synchronization logic.

    www.ti.com/.../slaa584.pdf

  • closing this case for now. You may always reply back to re-open this case.