Pretty much. Here is the generic structure
Transceivers are usually in blocks of two, three or four (depending on FPGA family). Each block has:
- Reference clock selection MUX. Options are usually limited to something like this:
- a couple reference clocks
- the reference clock from a neighboring transceiver block.
- maybe a clock that runs the entire column of transceivers
- and an 'unusable' option that comes from the fabric.
- That then feeds into a high-quality PLL, usually based around an LC tank that is integrated on the die. This then generated the high speed clocks.
- Signals from that PLL can then feed the individual transceiver channels, but only within that block of transceivers.
- Each channel also has a not-so-smart channel PLL, that is used to perform clock data recovery on any incoming data stream, using the output of the high quality PLL as a reference clock.
On 7-series this is two PLLs per block of four transceivers. On Altera Cyclone V the middle channel of a bank of three has a PLL that can act as the master for other channels in the bank (and routed to adjacent banks).
Have a look at
https://github.com/hamsternz/FPGA_DisplayPort/blob/master/src/artix7/transceiver.vhd if you want to see 7-series TX implemented with primitives. The important bit for your design may be GTPE2_COMMON. It has ports that you can't make use of in the wizard:
GTGREFCLK0 - Clock Reference clock generated by the internal FPGA logic. This input is reserved for internal testing purposes only (as per the User Guide).
There is also GTFREFCLK1 that can be used as an input for the other PLL_1 in the same block of 4.
As others mention, see the really good documentation at
http://www.xilinx.com/support/documentation/user_guides/ug482_7Series_GTP_Transceivers.pdf for full details and feel free to ask me questions.