Hi TI,
We are using a DAC3164 to generate complex baseband waveforms from an FPGA, going into a discrete integrated upconverter (ie, fairly standard software defined radio applications). We have the ability to produce test patterns from our FPGA to the DAC3164 running at 500 MS/s. The test patterns are Fs/4 tones, Fs/8 tones, etc. When we generate these complex tones, we get the following fairly confusing results:
- Fs/4 tones always look fine.
- Fs/8 shows -45-ish dB attenuated tones at -Fs/8, Fs/4, and -Fs/4
- As Fs tones approach 0 Hz, more and more side tones appear, but they are no longer at obvious relations to the sample rates (and are not symmetric about 0 Hz).
When investigating this, we have started to think this has something to do with the sample transfer FIFO in the device from DATACLK to DACCLK. We always see FIFO pointers being close (either 1 away, 2 away, or collision), but only on *one* of the two FIFOs (usually A, sometimes B). I have only once seen both FIFOs act “in sync”, which is what I would have expected for the system. I suspect this is the root of the problem (the A/B samples are not aligned).
I am using the “sync” input by asserting "sync" for two clock cycles (4 ns @ 500 MHz), but it doesn’t seem to be done anything. It seems to me that there should be no way to have the A/B FIFOs with different pointer values, since they are both driven by the same clocks. I find this confusing in the part, and I think this is the source of my problem.
For what it’s worth, I tried repeatedly disabling/re-enabling the B clock (register 0x01, bit 14) and repeatedly forcing a SYNC operation and I once got a “reasonable” looking tone out (and the FIFO pointers were all showing valid A and B FIFO pointers), but I have not been able to repeat that.
We are 86.7% sure the board is laid out correctly and we do not have pin pair swaps and/or LVDS pair inversions.
Any ideas how to move forward?
Thanks,
Nathan