CONTENTS

Home
Updates
Software
Electronics
Android / iOS
Videos
Music
Resume
Contact



HTTPS VERSION


5i20 PCI FPGA Board

Posted: December 23, 2008

Introduction

So I bought this 5i20 PCI board from http://www.mesanet.com/ 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 http://linuxcnc.org/ 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.

Links

Mesanet.com - This is the web site that sells the 5i20 card.
http://linuxcnc.org/ - 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