Serial (not parallel) transmission
In most of the projects, we get to the point where we need to transmit data – either the input as the output. They can be transferred in serial (bit by bit in one line) or parallel mode (multiple bits at once using multiple lines). In this post, we will talk about serial transmission as it’s more popular in common world. Mainly because it uses fewer wires compared to parallel transmission and it’s more immune to signal noise. And when we talk about sending tens of Gigabits of data – it makes a huge difference.It’s (mainly) about the speed
Even simplest microcontrollers have some serial communication interfaces embedded in hardware – UART, SPI, 1-Wire, I2C are just some of the acronyms you may have heard. These are fairly slow with maximum speed below 100 Mb/s (yes, when we speak about communication in FPGA, these speeds are slow…), so they can be easily implemented using common pins. The real advantage of FPGA is visible when we need much faster transfers. How fast? Well, in Virtex UltraScale+ from Xilinx you can find line rates up to 58Gb/s and combine more of these can give bandwidth measured in Terabits per second.Interfaces, transceivers
We don’t always need such speed. Also, not every project needs such a big chip for it. That’s why we can choose a chip that fits our needs – each family of devices has got different transceivers in it (check the table below). So what transceivers and what speeds are available? Let’s start with some common interfaces in processor side (PS) of Zynq 7000/Zynq MPSoC.Chip Family | Interfaces |
---|---|
Zynq 7000 | 2 x UART, 2 x CAN 2.0B, 2 x I2C, 2 x SPI, 2 x USB 2.0 (OTG), 2 10/100/1000 Ethernet, 2 x SD/SDIO |
ZYNQ MPSoC UltraScale+ | 2xUSB 2.0, 2x SD/SDIO, 2x UART, 2x CAN 2.0B, 2x I2C, 2x SPI, PCIe Gen2 x4, 2x USB3.0, SATA 3.1, DisplayPort, 4x 10/100/1000 Ethernet, SATA 3.1 |
Transceivers in Xilinx FPGAs
Chip family | transceiver name | integrated IP | speed [Gb/s] |
---|---|---|---|
Virtex UltraScale+ | GTY/GTM | PCIe Gen3/4, 150G Interlaken, 100G Ethernet w/ KR4 RS-FEC, CCIX | 32.75/58.0 |
Kintex UltraScale+ | GTH/GTY [1] | PCIe Gen3/4, 150G Interlaken, 100G Ethernet w/ RS-FEC | 16.3/32.75 |
Zynq UltraScale+ | GTH/GTY | PCIe Gen3/4, 150G Interlaken, 100G Ethernet MAC/PCS w/ RS-FEC | 16.3/32.75 |
Virtex UltraScale | GTH/GTY | PCIe Gen1/2/3, Interlaken, 100G Ethernet | 16.3/30.5 |
Kintex UltraScale | GTH [2] | PCIe Gen1/2/3, Interlaken, 100G Ethernet | 16.3 |
Virtex-7 | GTX/GTH/GTZ | PCIe Gen2 (Gen3 Soft IP) | 12.5/13.1/28.05 |
Kintex-7 | GTX [3] | PCIe Gen2 | 12.5 |
Artix-7 | GTP | PCIe Gen1/2 | 6.6 |
Zynq-7000 | GTX | PCIe Gen2 | 12.5 |
Spartan-6 | GTP | Endpoint PCIe v1.1 – 1lane | 3.2 |