Android / iOS


5i20 PCI FPGA Board

Posted: December 23, 2008


So I bought this 5i20 PCI board from to practice doing FPGA work from Linux. The card has a 200k gate Xilinx Spartan II FPGA (XC2S200-PQ208) on board along with a PLX9030 PCI bridge chip. On the board is 8 LED's and a bunch of connectors I never plan on using. My ultimate goal (which I'll post in on this page later) is to write a Linux driver for the card and to do to some processing on the card to test the speed of the FPGA vs another project I did in assembly.

Related Projects

FPGA: FPGA VGA, Nexys2, 5i20

How To Use This Card With Linux

So my first test program is called pciblink. Basically it just turns the LED's on the board into a binary counter to prove I could create a bitfile (the actual program/firmware programmed onto the FPGA) and load the card using Linux. So for anyone else interested in developing with this card, here's how I set up my Linux system:

First I went to Xilinx's website and downloaded their free webpack for Linux. For anyone with a 64 bit system like me, when you install it, make sure you run bin/lin/setup instead of the setup program in the root dir. This will install the 32bit ISE instead of the 64 bit ISE which won't include the IDE.

Next create a new project, add the .ucf file, type in the VHDL, synthesize, implement, generate. This should create a pciblink.bit file which I copied to the computer that has the card installed.

Now all that is needed the bfload program that tranfers the bitfile to the card. Download the emc2 program from and untar it. Unforunately their configure script didn't work for me so I had to create my own makefile here: Makefile. Copy this file to src/hal/utils, cd into src/hal/utils, and type: make. This should build the bfload program. Now you should be able to type: bfload pciblink.bit

Future Project

So I've alread created my first Linux kernel module (a netdisk kernel module) to practice with. My next step is to make a kernel module that talks to the PCI bus/5i20 card and make a bitfile that can read and write from the bus through the PLX9030.


5i20 blinking LEDs

Here's a close up of the card with the LED's running.

5i20 blinking LEDs

Another pic of the LED's going from a different angle.

Links - This is the web site that sells the 5i20 card. - The emc2 package which contains bfload, which is used to load bitfiles on the 5i20 card from Linux.

Source code

pciblink: pciblink.vhdl pciblink.ucf pciblink.bit

Copyright 1997-2018 - Michael Kohn