CONTENTS

Home
Updates
Software
Electronics
Android / iOS
Music
Resume
Contact


YouTube
Twitter
GitHub


5i20 PCI FPGA Board

Posted: December 23, 2008

Introduction

So I bought this 5i20 PCI board from Mesanet.com (appears to be gone) 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 @mikekohn.net

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 LinuxCNC 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.

Pictures

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.

Source code

pciblink: pciblink.vhdl pciblink.ucf pciblink.bit

Copyright 1997-2021 - Michael Kohn