Getting into FPGA Design

I first read about Field Programmable Gate Arrays (FPGAs) from an article about how it was being used by J.P Morgan for running risk simulations (e.g Monte Carlo) for its Fixed Income business. The entry on Wikipedia describes it as an integrated circuit which can be configured after manufacture. I didn’t give it much more thought until I started reading about BitCoins and tinkered with some miners for OSX. That was when FPGAs came back into the picture as there is an  industry that provides FPGA-based devices for bitcoin mining. The advantage of using FPGAs vs GPUs  for bitcoin mining appear to be the much lower power consumption profile of FPGAs (and lower heating costs).

Why then have FPGAs not entered into the consumer mainstream like GPUs have? Take a look at this excellent slidedeck from Altera which covers their OpenCL frontend to FPGAs but also includes information on the barriers to adopting FPGAs for roles which GPUs have had dominance over.

It turns out that there are some significant challenges for the software engineer:

  • The process of designing and synthesising the digital hardware (on the FPGA) is lengthy and complex, compared to the near instantaneous feedback for software.
  • FPGAs are capable of executing thousands of instructions per clock cycle (compared to multicore CPUs which run a single instruction per core, and GPUs which execute instructions for each on-chip Arithmetic Logic Unit). This leads to challenges in guaranteeing timing requirements between different logical chips.
  • The lack of portability between different FPGA chips means that algorithms need to be redesigned for each hardware change.

There are however, efforts underway to provide a higher level interface for software programmers (like the OpenCL frontend mentioned in the slidedeck) that will allow computer algorithms to be written in a more accessible language like C, while abstracting the hardware description (which are expressed as Verilog or VHDL).

The idea that I am able to design and implement any digital circuit dataflow at low costs and not be limited to the prescribed architecture of stock CPUs is incredibly liberating. I also believe that the FPGA approach to concurrent/parallel computing is different enough to shift my personal paradigm with regards to high performance computing. It’s for these reasons that I decided to purchase a FPGA development board for experimentation (though I probably won’t be using it for Bitcoin mining anytime soon).

I decided to get the XuLA2-LX25 from xess.com after checking out this review, choosing the LX25 over the LX9 due to the inclusion of the more recent Xilinx Spartan-6 chip. The order was placed online a week ago and I just received the board and accessories yesterday 🙂

I’ll be using the excellent documentation available on xess.com to get started and hope to be able to chronicle my learning experiences.

Advertisements

3 thoughts on “Getting into FPGA Design

  1. Hi. I’m a beginner in FPGA programming. I’m looking to buy an FPGA development board and I came across your blog. Did you manage to use openCL for this XuLA2-LX25?

    Thanks in advance.

  2. Thank you very much for you reply. Now I’ll look for the development kit which offers SoC FPGA configuration.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s