1 Introduction
This guide goes through the steps for installing the driver for the purpose of running Xillybus / XillyUSB on a Linux host. How to try out the basic functionality of the IP core is also shown.
For the sake of simplicity, it is assumed that the host is a fully capable computer, which is able to perform compilation. The procedure for an embedded platform is similar, with a few straightforward differences (in particular, cross compilation may be necessary).
This guide also assumes that a bitstream which is based upon Xillybus’ demo bundle has already been loaded into the FPGA, and that the FPGA has been recognized as a peripheral by the host (through PCI Express, the AXI bus, or USB 3.x, as relevant).
The steps for reaching this stage are outlined in one of these documents (depending on the chosen FPGA):
The host driver generates device files which behave like named pipes: These device files are opened, read from and written to just like any file. However, these files behave in a similar way to pipes between processes. This behavior is also similar to TCP/IP streams. To the program running on the host, the difference is that the other side of the stream is not another process (on the same computer or on a different computer on the network) but instead, the other side is a FIFO inside the FPGA. Just like a TCP/IP stream, the Xillybus stream is designed to work efficiently with high-rate data transfers, but the stream also performs well when small amounts of data are transmitted occasionally.
One single driver on the host is used with all Xillybus IP cores that communicate with the host through PCIe. A different driver is intended for the AXI interface. There is also a different driver for XillyUSB.
There is no need to change the driver when a different IP core is used in the FPGA: The streams and their attributes are automatically detected by the driver as the driver is loaded into the host’s operating system. The device files are created accordingly, with file names of the format /dev/xillybus_something. Likewise, the driver for XillyUSB creates device files with the format /dev/xillyusb_00_something. In these file names, the 00 part is the index of the device. This part is replaced with 01, 02 etc. when more than one XillyUSB device is connected to the computer at the same time.
More in-depth information on topics related to the host can be found in Xillybus host application programming guide for Linux.
