Other Parts Discussed in Thread: DAC3484, DAC3482
Hello,
I am using DAC3484 for an application and running into some SPI programming issues. I have tried to provide as much details possible below.
The DAC setup is as follows: Quad Channel Mode, Interpolation by 4, Dual Sync Source Mode, NCO ON, Internal PLL OFF.
Also our application needs pulsed DAC output with repeatable phases per pulse. So we need to reset the NCO per pulse, which determine central frequency of the pulse. So the Frame input is periodic and follows the datasheet recommendation of fdataclk/(n x16). Our system is configured such that all clock signals (Fdataclk, Fdacclk, Fostr and Fframe) are stable and provided to the DAC before the SPI programming routine starts in the FPGA.
My DAC synchronization registers are configured for Dual Sync Source Mode as follows:
X"1E9999", %% Register x1E, SyncSel QMC Offset/ Correction set to sif_sync OR auto_sync via reg write
X"1F2210", %% Register x1F, SyncSel Mixer set to OSTR, NCO and Data Formatter to FRAME
X"202400", %% Register x20, Syncsel FIFO, input sync(FRAME),output sync (OSTR)
I follow the programming sequence described in datasheet, page-72 and Table-10. I follow the steps in Table-10 and reach the stage when i have to read the alarms. This is what i observe:
1. When i read the alarm in Reg 0x05, i know that i have provided the periodic Fframe and Fostr to the FIFO. When i read the alarm i see alarms_from_fifo(2:0) = 001 (2 away) or 011 (1 away), but never 000. Since there is no FIFO collision detected i consider this as acceptable and complete the SPI routine, start sending LVDS patterns out and the DAC output look good on a spectrum analyzer. Are the observed alarms_from_fifo(2:0) values OK ? Should it always be 000?
2. Very rarely i see alarms_from_fifo(2:0) = 1XX, or collision detected. In this case i keep clearing Reg 0x05 and keep reading back Register 0x05, hoping that the alarm goes away with the next Fframe pulse. But my routine is stuck, as it always sees 1XX. What is the best procedure to re-synchronize the FIFO? Should i clear the all FIFO sync options in Reg 0x20, reprogram it, and then read the alarms again?
I would highly appreciate your feedback on this issue.
Thanks,
AB