Channels ▼

Al Williams

Dr. Dobb's Bloggers

FPGA: Is it a bird? Or a plane?

May 06, 2010

I actually enjoy working on FPGA projects (probably not a secret if you've read about my CPU on an FPGA). But one of the hardest things about applying FPGAs as a hobby is finding a suitable project.

Don't get me wrong. You can always think of something to do. But the question is: Did you really need an FPGA to do it? Let's face it, developing a microprocessor program is way easier (and cheaper) than developing for an FPGA. So while I can make my alarm controller with an FPGA, why should I? Its like flashing an LED. Sure I can do it with CPU, but why not just build a little light flasher? (Well, I've talked about how the 555 isn't cost effective anymore, but you get my point anyway).

When I talk to people who apply FPGAs I find many of them are using them in combination with CPUs anyway. In fact, many FPGA users use them as little more than customizable CPUs, adding a processor core to whatever IP they need to get a custom chip. Then the rest of the development cycle looks like a CPU design flow.

I always thought that was strange, but apparently its a lot of the market. In April, Xilinx announced the first fruit of their earlier deal with ARM: The Xilinx Extensible Processing Platform which looks like it is basically a ARM CPU (well, technically two ARM CPUs) with some FPGA fabric for customization built in (see the Xilinx site).

I am always looking for those applications where using an FPGA is a natural choice because of the hardware parallelism -- CPUs are a good example. Big multi-way DSP calculations are another. How about you? Are you using FPGAs? Do you use them with a CPU? As a CPU? Could you do what you are doing with CPUs? And if so, then why use the FPGA?

All interesting coffee table conversation (although oddly enough, not according to my wife).

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags


<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags


<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

