Home    Bloggers    Messages    Webinars    Resources   
Tw  |  Fb  |  In  |  Rss
Warren Miller

SerDes for FPGAs: What Are Today's Challenges?

Warren Miller
Page 1 / 2 Next >
Max Maxfield
Max Maxfield
3/7/2013 3:05:49 PM
User Rank
Blogger
Re: The challenges?
@Jan: My wife is from Lousianna -- I LOVE andouillette (and my wife, of course)

50%
50%
ab6vu
ab6vu
2/21/2013 10:24:05 AM
User Rank
Guru
Re: The challenges?
Thank you again,

 

I have sent this off to be looked at.  I offer you no excuses, nor any further explanations.  I will get back when I know something.


Austin Lesea, Principal Engineer, Xilinx

50%
50%
Adam Taylor
Adam Taylor
2/21/2013 3:19:30 AM
User Rank
Blogger
My Challenge
SerDes especially the MGT are very interesting technology, we are already investigating high end ADC and DAC for flight which interface using this technology.

The only problem I have at the moment is finding suitable cabling solutions for breaking out and fanning out a large number of these MGT links.

50%
50%
devel@latke.net
devel@latke.net
2/20/2013 7:07:50 PM
User Rank
Guru
Re: The challenges?
austin:

I would like an example (link), and why it is (so) poor, so I may go fix the problem, if at all possible.

Here's a specific example. UG381 (Spartan 6 SelectIO Resources), in the chapter on  "Select IO Logic Resources," there's a discussion called I/O DELAY Overview. It's rather baffling in some respects. For example, there's the list of signals in Table 2-8 (in version 1.4 of this doc). The description of IOCLK0 and IOCLK1 have no correlation to how those inputs are used in an example.

IOCLK0: "This is the primary clock input when the clock doubler is engaged."

IOCLK1: "This is the secondary clock input and is only used when the clock doubler is engaged."

Fantastic. What the heck does that mean? And then there's the signal:

CLK: "This is the clock for the FPGA logic interconnect domain." How about saying what that clock is used for in the IODELAY2 block?

Also, apparently if you have a differential input clock, you're supposed to use two IODELAY2 primitives, one for the inverting and another for the non-inverting sides, also you need an IBUFGDS_DIFF_OUT on the input. The mapper wouldn't accept that.

UG382 (Spartan-6 FPGA Clocking Resources) mentions all over the place that you can use IODELAY2 on clock inputs as well as data inputs. But there are no pictures that show usable configurations. Page 30 of v1.7 of that guide says SDR Data Rate (FD register in IOB, no IOSERDES2) and there are two pictures. The descriptions of both figures include the line, "Works With Or Without IODELAY2." Same for the DDR, and for the ISERDES2 pictures. BUT -- show me where I put the IODELAY2 for these guys. A picture, please.

And then there are the placement rules ...

 

 

100%
0%
jandecaluwe
jandecaluwe
2/20/2013 6:48:31 PM
User Rank
Blogger
Re: The challenges?
@hamster "I pick Paris. I've always wanted a latch in Paris."

Good choice! I have just been to Paris, and they surely have great andouillette there :-)

 

50%
50%
hamster
hamster
2/20/2013 6:39:05 PM
User Rank
Blogger
Re: The challenges?
@Austin:

"I would like an example (link), and why it is (so) poor, so I may go fix the problem, if at all possible."

Chapter 3 of "UG381 Spartan-6 FPGA SelectIO Resources" includes timing diagrams, but it does not show how you can implement those timings.

You need to have studied Figure 4, page 34 of the UG382 Spartan 6 Clocking Resources User Guide if you are to stand a chance of implementing it!

I don't want to be mean, but since you offered....

Oh, and just open "UG625 Constraints Guide" to pretty much any page in chapter 3.  It reads like an internal engineering document that sneeked out into the wild.

It perfectly describes how to specifiy a constraint but puts zero context around it. Take for example the entry for "IOB", a relatvely simple constraint:

This option allows flip-flop or latch primitives to be pushed into the following on
a global scale:
• Input IOB (i)
• Output IOB (o)
• Input/output IOB (b)

What? Since when is "pushed" in an FPGA end-user's vocab? What does "global scale" mean - Will it really push a flipflop to the other side of the planet? I pick Paris. I've always wanted a latch in Paris.

How about something like:

This option insures that the associated flip-flop or latch will be located with the device's I/O Block. It can be applied to input, output or bidirectional signals. 

In doing so this ensures that minimal delays occur between the device pin and the sink or source of the signal within the device.

 

 

100%
0%
devel@latke.net
devel@latke.net
2/20/2013 6:16:36 PM
User Rank
Guru
Re: The challenges?
Austin,

Not long ago, I spent a good week working through getting a simple deserializer (without any gigabit stuff, either, just the standard ISERDES) with IODELAY2 to work in a Spartan6. The documentation for the clocking and the data path is woefully inadequate. Following what was noted in the user guide simply wouldn't even get past the mapper. This was with locating everything, too, according to the documented rules.

I sent the design to my local FAE and I also opened a WebCase on it. It took the FAE a couple of days to work it all out, and he said that, "you started with what was in the examples and the docs and it should work, but ..." 

Sorry, but in this specific instance the docs were a total fail.

BTW, it was XAPP1064 I was using as well as the clocking and SelectIO user guides.

 

50%
50%
ab6vu
ab6vu
2/20/2013 6:10:40 PM
User Rank
Guru
Re: The challenges?
d,


Excuse me?  Did I miss something?  Is someone having a bad day?  Poor documentation is a terrible thing.  It is something not to be tolerated, ever.

I would like an example (link), and why it is (so) poor, so I may go fix the problem, if at all possible.

Thank you,

50%
50%
devel@latke.net
devel@latke.net
2/20/2013 5:39:09 PM
User Rank
Guru
The challenges?
How about this: absolutely piss-poor documentation of the gigabit transceivers themselves, and even worse documentation for the clocking mechanisms needed to run the transceivers?

50%
50%
hamster
hamster
2/20/2013 4:24:55 PM
User Rank
Blogger
The clocking infrastructure is painful.
I've used the Spartan 6's SERDES2 to send TMDS output.

Getting the clocking to work was painful. I found out a lot more about the clocking infrastructure of the IO Banks that I ever wanted to know! Unless I really need the speed I am going to stick with DDR while I play with my little hobby desgns.

See http://hamsterworks.co.nz/mediawiki/index.php/OSERDES2_clocking if you want an example of how to hook the PLL_BASE primative to the BUFPLL. You have to get just the right clock buffers in just the right place.

50%
50%
More Blogs from Warren Miller
Warren has finally started to write some HDL code to implement his chess-playing FPGA, but he's not a professional coder, so he needs our help and advice.
What might we see in new Ultra Low Density (ULD) CPLD families three-to-five years down the road? Are there new technologies or programmable structures that will find their way into ULD devices?
Following our evaluations, the resources required by a chess-playing FPGA implementation would seem reasonable, even for a small or midsized device.
A number of challenges are faced by the users and manufacturers of ultra-low-density devices (ULDs).
We are ready to consider how to use our Move Generator to traverse the tree of possible moves efficiently and find the sequence that produces the best board position.
flash poll
follow us on twitter
follow Xilinx on twitter
like us on facebook
like Xilinx on facebook
All Programmable Planet     About Us     Contact Us     Help     Register     Twitter     Facebook     RSS