02-19-2021 03:06 PM - edited 02-19-2021 03:13 PM
I have read the xapp224, and do the clock period mean that the sampling time compared with the origin clock ? and why it is all the 0.75 clock period ?
and I do not understand the clock period in the figure , I think it is wrong ,
it should be 0.25 clock period in position 1 ,and should be 0.5 clock period in position 2,right ?
02-19-2021 06:00 PM
The numbers you are showing appear to be the requirement on the path between the flip-flop and the next flip-flop.
So looking at the second line, the first flip-flop is on the rising edge of CLK90 and the next one is on the rising edge of CLK; this is 0.75 of a clock period. All the remaining ones are on the rising edge of CLK so they are all 1 clock period.
On the third line, the first one is on the falling edge of CLK and the second one is on the rising edge of CLK90 - again 0.75 clock periods. The one after that is on the rising edge of CLK, so, again, 0.75 of a clock period.
The goal of this circuit is to oversample the input; the first flip-flop on each line samples the signal on four different phases; CLK rise, CLK90 rise, CLK fall (so 180 degrees) and CLK90 fall (so 270 degrees). From there, we have three requirements:
Avrum
02-19-2021 06:14 PM - edited 02-19-2021 06:20 PM
By the way - this XAPP is really old. You don't need to (and shouldn't) do this in newer FPGAs.
In the 7 series and the Virtex-6, the ISERDES has a defined oversample mode - in essence this circuit is implemented inside the ISERDES. Take a look at UG471 in the section "OVERSAMPLE Interface Type".
This mode no longer exists in UltraScale/UltraScale+. But you can still use the ISERDES... The "fast" side (CLK) of the ISERDES can be clocked at a very high rate. To do 4x oversampling of a signal, you just need to use the ISERDES in DDR mode with a clock that is 1/2 the rate that you want to sample at; so if you want to have 4 samples at 100MHz, you generate a 200MHz clock, use two clock buffers, one a BUFGCE_DIV in divide by two mode (to generate the 100MHz clock), and the other a BUFGCE to generate the 200MHz clock. Use the 200MHz clock to drive the ISERDES CLK input and the 100MHz clock for CLKDIV, and set the ISERDES to 4:1 mode (DDR). This would almost certainly be faster than trying to use fabric flip-flops with the above circuit.
And both of these solutions are better. In these solutions the input data is captured only by one cell - the ISERDES; you don't have to worry about routing skew between the data input and the four capture flip-flops.
Avrum
02-21-2021 05:11 PM - edited 02-21-2021 05:25 PM
Thank you very much, and I still have a question ,
but I can not upload the figure,so I post another one,