High Speed PCIe Communications Package Between Host Computer and FPGA

The Problem

You've created an amazing FPGA circuit, and downloaded it to your demo board. Now you want to monitor and control the circuit from your PC, send data from the PC to the FPGA and get the results back. If you are using an Altera/Terasic DE-4 or DE-5 demo board, this package is for you.

The Solution

The TME (TransMogrifier pciE) ports package allows you to quickly and easily transfer data between a program on a Linux workstation and your circuit in a FPGA development board. This implementation of the ports package uses the PCIe bus to talk to the board. The boards supported are the Altera DE-4 (Stratix IV) and DE-5 (Stratix V) sold by Terasic.

We are seeing data transfer rates of 40 Mbytes/second when reading data from the FPGA, and 100 Mbytes/second when writing data to the FPGA from the host.

[If you don't have PCIe available, you might be interested in our TMU FPGA communications package, which is very similar, but uses USB to talk to Altera DE-3 or DE-4 boards at lower data rates.]

Easy to Use

On the FPGA side, you declare the names of your circuit's input and output ports and connect them to a Verilog communications sub-module that is automatically generated by TME. On the workstation side, you can open the ports by name, and read or write to them:
	int p1, p2;
	char data[720], result[500];

	p1 = tmopen("my_circuit_input_bus", "w");
	tmwrite(p1, data, 720);

	p2 = tmopen("my_output", "r");
	tmread(p2, result, 500);

Download it Here

Version 1.3, March 13, 2014 Download tme1.3.tar.gz

To install the package, you need to unpack the tar file, and read the installation instructions in the README.txt file that it contains:

The tar file contains the source for the package, along with two example Verilog circuits. One of the examples is a simple counter that increments its output every time it is read. The other example is a summation circuit that adds up all of the data that is fed to it.

The package supports circuits written in Verilog or VHDL.


The TME Ports Package

Creating and Running Circuits with the TME Ports Package

An Example Application for the TME Package

The tmemon Program