Electronic – Transceivers in the field of FPGAs: When and why will we use them


I am recently getting myself into the field of FPGA design and development, and lately I've found myself hearing a lot about transceivers. I tried searching the net for some answers about these components and learn their role in the world of FPGAs but could not find much information but a few articles related to serial communications and Ser/Des's…

I wanted to ask, why, when, and most importantly how will I use transceivers on FPGAs? What are their alternatives (if any exist)? Is there some kind of a thumb rule for transceivers usage? And how can I "harness" all of that transceiving good to my advantage?

Best Answer

You need to use a transceiver when you want to bring out high speed signals from inside the FPGA and interface with the real world.

Typical examples are to communicate with other high speed parts on the same board (for example another FPGA or ADC) or to interface off board (for example using PCI, HDMI or ethernet).

In order to send these high speed signals correctly there are a number of encoding and electrical considerations. Perhaps it is necessary to remove DC bias, for example using some form of symbol encoding (e.g. 8b/10b). Maybe the communication channel uses differential pairs to accurately send high speed data across a wire. FPGA manufacturers build in flexible transceivers to do this work, saving you the effort.

For example, the Spartan 6 LXT contains what Xilinx call a "3.2Gbps GTP transceiver". Their literature says:

  • Implement serial protocols at lowest power
  • Devices contain up to 8 gigabit transceiver circuits
  • Up to 3.2Gbps performance
  • High speed interfaces: Serial ATA, Aurora, 1G Ethernet, PCI Express, OBSAI, CPRI, EPON, GPON, DisplayPort, and XAUI
  • Lower power consumption: < 150mW (typical) at 3.2Gbps

That's a lot of high speed interfaces which can be achieved using the transceivers.

You could implement a lot of this on your own and in older/smaller/cheaper FPGAs this is often the only way. However you soon run into problems designing logic that will run fast enough to keep up and you will require a lot of external components for the electrical interface.

Unfortunately with many modern interfaces the normal FPGA I/O pins simply don't run fast enough to achieve the high data rates required.

So in summary, the benefits of internal transceivers are:

  • Encoding mechanisms don't take up FPGA resources and can run at a guaranteed high speed (no need to compromise other parts of your design to keep timing constraints).
  • Electrical interfaces are handled for you with minimum external parts.
  • Implementation of extremely complicated interfaces (e.g. PCI Express) is done for you and (if appropriate) certified.
  • Dedicated silicon will (probably) use lower power than other blocks within the FPGA.

Disadvantages include:

  • You are limited to a small number of specific external interfaces. However most modern FPGAs are flexible enough and there are a number of high speed interfaces that are becoming common.
  • FPGAs with powerful transceivers will probably cost more compared to parts without.