Topic: Timing shift of FMC DAC output  (Read 19418 times)

fmcuser December 01, 2014, 06:41 AM

  • Member
  • *
  • Posts: 22
Hello,
I am using a development board ML605 with an FMC150 connected to the LPC site. I want to generate two signals, one is output from a DAC of FMC150, the other is output from a GPIO SMA of ML605. These two signals are supposed to begin at the same time, same phase. However, only the initiation timing of the waveform from the DAC of the FMC150 shifts. This shift occurs every time I power on, re-program or does a reset through a push button written in the program, all using the same .bit file.

Can anybody help me solve this problem?
Thanks in advance

arnaudNL December 03, 2014, 07:39 AM (#1)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
Dear Sir,


You need to get the design synchronous. This is outside the scope of technical support but I assume you want to use your DAC clock as reference to your SMA clock so it is always in phase?


Not sure, just an idea.


I hope that helps,
Arnaud

fmcuser December 03, 2014, 11:01 AM (#2)

  • Member
  • *
  • Posts: 22
Dear Arnaud,

Thank you for your advice.

The 491.52-MHz clock on FMC150 is the main clock source in my design. CDCE72010 outputs 61.44-MHz clock from U4P/N (to FPGA) and U7P/N (to DACs). I used the 61.44-MHz clock coming from U4P/N as reference to my SMA signal (ML605) and the signal which is designed to be output from a DAC (FMC150). Therefore, both have to be always in phase.

However, they are not working as intended. Only the initiation timing of the signal from the DAC shifts every time I power on, re-program or does a reset through a push button written in the program, all using the same .bit file.

I would appreciate it if you would give me any suggestion.
  • « Last Edit: December 03, 2014, 11:03 AM by fmcuser »

lmunoz December 05, 2014, 03:02 PM (#3)

  • Member
  • *
  • Posts: 160
Hi,

If I understand correctly you want to align a clock out of the SMA connector to a signal coming out of the DAC?

Have you completely changed the reference design provided? What signal are you sending out the DAC and how are you generating it, are you using the 4dsp waveform repeat code? When do you start sending it? What clock are you using on the SERDES the same one going to the SMA connector?


-Luis

fmcuser December 07, 2014, 03:07 AM (#4)

  • Member
  • *
  • Posts: 22
Dear Luis,


Thank you for your reply.

Yes, I want to align a clock out of the SMA connector to a signal coming out of the DAC. I am not using the reference design. Both of those two signals are identical 4-MHz clock. I am not using the 4DSP waveform repeat code.

We had tested our design, and we did not find any suspicious areas that will create that shift. The DAC data bits are in sync with the yellow trigger in our design. The clock that I am using for SERDES is the one coming from U4P/N, which is 61.44 MHz.

arnaudNL December 08, 2014, 12:06 PM (#5)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
Dear Sir,


Luis will be back to the office next Monday.


Best Regards,
Arnaud

lmunoz December 16, 2014, 03:02 PM (#6)

  • Member
  • *
  • Posts: 160

One guess that I have is that it is serialization. Are the shifts completely random or they always shifted a multiple of some number?

For example say the ADC takes a sampling clock of 250 MHz and you get a divided version to the FPGA at 62 MHz and you do 4-to-1 serialization. Because it takes 4 cycles of the 250 MHz the same time as 1 cycle of the 62 MHz, it might be randomly aligned in 1 out of 4 positions.

Is the clock you going directly from INPUT BUFFER to a BUFG to a SERDES? I would try an artificial delay on the digital data to see if moving fixes the alignment. For example have a MUX where you can change (while running) if the data going to SERDES gets a delay of 1,2,3,or 4 clocks.







fmcuser December 19, 2014, 02:18 AM (#7)

  • Member
  • *
  • Posts: 22
Dear lmunoz,


Thank you for your information.
As for the vhd files for DAC clock, data, and frame, I used the Xilinx component "OSERDES".
(the clock was input to an MMCM, converted to the single-ended scheme, and input to those OSERDES.)
Besides, I also tried self-made OSERDES.
The timing shift occurs for both of the above cases.
The time resolution of the timing shift is around 2 ns, and its dynamic range is around 150 ns.
  • « Last Edit: December 19, 2014, 02:21 AM by fmcuser »

lmunoz December 23, 2014, 08:48 PM (#8)

  • Member
  • *
  • Posts: 160
For FMC150 I believe the clock coming from U4P/N is 245.76. You can see that in the constraint file where it shows

NET "CLK_TO_FPGA_P_0" TNM_NET = CLK_TO_FPGA_P_0;
TIMESPEC TS_CLK_TO_FPGA_P_0 = PERIOD "CLK_TO_FPGA_P_0" 245.76 MHz HIGH 50%;


Why do you think it is 61.44 MHz, have you done modifications to slow the clock? That clock then should go to a PLL and from the PLL to the OSERDES. You should use the same clock going to OSERDES to go out the SMA connector. They should be in phase if you are generating the waveform correctly. Without looking at the code and knowing what modifications you have made it is difficult to say what can be causing random phase shifts.

ebarhorst December 29, 2014, 07:17 AM (#9)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 1222
Dear Chao,
do you have an update on this topic?


Best regards,
Erik

ebarhorst January 07, 2015, 09:57 AM (#10)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 1222
Dear Chao,


would you have an update on this topic?


best regards,
erik

fmcuser January 07, 2015, 12:58 PM (#11)

  • Member
  • *
  • Posts: 22
Dear Imunoz,


Thank you for your information.

Why the clock coming from U4P/N is 245.76 MHz?
I set the dividing ratio of the output divider 4 to be 8 and the 491.52 MHz was divided by 8.
Then, the output from U4P/N is 61.44 MHz.
Later on, as you mentioned, this clock is input to an MMCM and from the MMCM to the OSERDES.

I used the same clock going to OSERDES to go out the SMA connector.

lmunoz January 07, 2015, 09:36 PM (#12)

  • Member
  • *
  • Posts: 160

I was looking at 088_ml605_fmc150

In the reference design that is what the constraint is set to, probably because that is the sampling rate and that is what the DAC requires for LVDS communication at that sampling rate. I suppose you can set it to whatever you want if you are using a different sampling rate or adjusting it later inside the FPGA. 

fmcuser January 08, 2015, 01:25 PM (#13)

  • Member
  • *
  • Posts: 22
Thank you.
Noted, I will check that.
Besides, I checked the clock coming from U4P/N and U2P/N (connected to the ADC on FMC150), they were in-phase when I re-program or does a reset through a push button written in the program.
Is there any possibility that the sampling clock for DAC on FMC150 has the timing shift that I have described below?

lmunoz January 09, 2015, 08:14 PM (#14)

  • Member
  • *
  • Posts: 160
I think that is possible, would have to read through the DAC datasheet to see if that is likely, especially where it talks about the elastic buffers.

Overall I don't think I can really help you without spending a lot of time reading carefully through the DAC datasheet, looking at your code or trying a few things on hardware. The best I can do is guess what can cause the problem.  My guess is that it is something digital, either the way the DAC or OSERDES are getting reset and starting up. Or the DAC is not meeting setup and hold times which you would have to add an odelay component. 



   
  • « Last Edit: January 09, 2015, 08:19 PM by lmunoz »