kmod's blog


Building a Processor, Part 1: Getting Started

This is part 1 of my Building a Processor series, where I try to build a processor on an FPGA board.  This post is about selecting+buying a development board, and what we'll get with one.


At this point, I've hopefully gotten you uncontrollably excited about buying and using an FPGA, and now you're wondering how to actually get started with one.  But first, what exactly is an FPGA in the first place?

Essentially, an FPGA is a programmable piece of hardware, where by programmable I mean that rather than loading a software program onto it, you program it with a description of hardware that you want it to be, and it will reconfigure itself to be that.  At a high level, an FPGA is an array of configurable components, than can be connected configurably.  This is a better explanation of what this means, and Wikipedia is a good source on the subject as well.

Alright, so how do we get started?  There are several FPGA manufacturers out there, and I don't really know the pros and cons of each of them, but Xilinx was suggested to me to start with since they're the largest FPGA manufacturer it seems like a safe choice.  You can check out the page for this Xilinx Spartan 6 FPGA to learn more about it -- see those grey squares at the top of the page?  Those are illustrations of an FPGA: the Spartan 6 is a chip that's about 1cm square, and depending on the exact model will have a few hundred pins on it.  To actually get it to do anything useful, you have to put it on an appropriately-designed board with other useful components, but doing that ourselves is well outside the scope of this blog.  Instead, we're going to buy a pre-made board that has an FPGA connected to a number of other useful chips, such as RAM, switches, LEDs, and probably most importantly, a USB interface so that you can program it from a computer.

Xilinx directly offers a number of development boards that you can buy, such as this $500 board.  My friend suggested the Nexys 3 by Digilent instead, which is only $199 ($119 academic) and seems to be somewhat popular, so I ended up getting it and I definitely recommend it.  I'm not that knowledgeable about the different boards out there, but I can say that I've been very happy with the Nexys 3 so far, though I foresee myself buying one of the more expensive boards in the future.

So what do you get with the Nexys 3?  You should check out the product page for more details, but most importantly you get a Xilinx Spartan-6 FPGA, part number XC6SLX16-3CSG324C.  The "XC6SLX" says that it's a Spartan 6 FPGA; this is the low-cost Spartan chip of their 6th series of chips.  The current series is the 7-series, where Xilinx has gotten rid of the Spartan line and replaced it with the low-end Artix and mid-range Kintex lines (and kept the high-end Virtex), but it seems like they are pretty recent and there are still a large number of people using the Spartan chips.  The "16" means that this chip has roughly 16k "logic cells", which is their way of measuring and advertising the size of the FPGA.  For reference, the higher-end Spartan 6 boards come with a 45k-logic-cell chip, and I've seen some low-end ones with the 9k version; the smallest you can buy is the 4k, and there exists a 150k as well.  The "-3CSG324C" means that this is a "speed grade -3" part (fastest), in a 324-pin CSBGA package, suited for "commercial" temperature ranges (0-85°C).  You can see more details of this exact part here.

The Nexys 3 also includes a number of other peripherals, such as a bank of 8 switches, 8 leds, 5 push buttons, a 4-digit 7-segment display, three RAM chips, and a bunch of other connectors.  Here are some other boards that I've looked at, but I haven't studied them too closely, let alone gotten one:

  • Digilent Atlys -- a $349 ($199 academic) board based on the Spartan LX45.  It has 4 HDMI ports, which makes me think that it is designed for video usage.
  • Digilent Anvyl -- a newer $499 ($349 academic) board based on the Spartan LX45.  I'm tempted to buy this board, and if I had known I'd get this into the FPGAs I might have bought this instead of the Nexys 3.  The Anvyl is based on the LX45, but what excites me is that it has an LCD touchscreen display and a keypad.
  • Xilinx also sells Spartan 6 development boards, though from a cursory look, at a given price I'd prefer the Digilent boards.
  • You can keep on going up the price scale, for instance with this Artix-7 board or this Virtex-7 board, though one thing to keep in mind is that Xilinx's free tools (called WebPack) only work on their smaller chips, and to use the larger chips you have to buy an expensive license for their software (except their development boards come with the software for that board); you can see the exact chips supported by the free version here.

Another thing to note is that you can extend these boards using extension cards of various sorts; here's a cool but expensive touchscreen that you can add.

So, putting all this together, the first step towards FPGA development is buying one of these boards.  I recommend the Nexys 3: I've been happy with it so far, and all the cheaper options I've seen seem pretty limited.

Digilent was pretty fast to ship, and I shelled out for the 2-day shipping option, so I received it within a few days of ordering it.  If you decide to get one, you should start downloading Xilinx's ISE tool here -- it's a 6GB download and takes a while to install.  You can also check out some useful reference material:


Next up: programming the first circuit.

Comments (0) Trackbacks (0)

No comments yet.

Leave a comment

No trackbacks yet.