DSPRelated.com
Forums

[OT?] what's a FPGA?

Started by Richard Owlett March 22, 2006
OK already,it is a Field Programmable Gate Array.
I understand, but not grok, the definition.

Googling for   FPGA introduction    was not a satisfying experience.
searching Wikipedia.org was less so

If your life depended on giving a useful URL, what would it be?

Part of the inspiration for this question is recent thread discussing 
VHDL for FPGA to do FIR filter. Ain't that what DSP's are for?

Get the idea I know I'm missing something basic?

I've a "bright" idea but will not expose it to competent criticism until 
I understand just what is a FPGA and what it can/can't do and just how 
"programmable" it is.

PS in my day computers used 6J6's and/or 12AX7's and spoke to 026's ;/




Richard Owlett wrote:
> OK already,it is a Field Programmable Gate Array. > I understand, but not grok, the definition. > > Googling for FPGA introduction was not a satisfying experience. > searching Wikipedia.org was less so > > If your life depended on giving a useful URL, what would it be? > > Part of the inspiration for this question is recent thread discussing > VHDL for FPGA to do FIR filter. Ain't that what DSP's are for? > > Get the idea I know I'm missing something basic? > > I've a "bright" idea but will not expose it to competent criticism until > I understand just what is a FPGA and what it can/can't do and just how > "programmable" it is. > > PS in my day computers used 6J6's and/or 12AX7's and spoke to 026's ;/
G/Fr/oogle for FPGA vendors and study their data sheets. (Hint: Xilinx) Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
Richard Owlett wrote:

> OK already,it is a Field Programmable Gate Array. > I understand, but not grok, the definition. > > Googling for FPGA introduction was not a satisfying experience. > searching Wikipedia.org was less so > > If your life depended on giving a useful URL, what would it be? > > Part of the inspiration for this question is recent thread discussing > VHDL for FPGA to do FIR filter. Ain't that what DSP's are for? > > Get the idea I know I'm missing something basic? > > I've a "bright" idea but will not expose it to competent criticism until > I understand just what is a FPGA and what it can/can't do and just how > "programmable" it is. > > PS in my day computers used 6J6's and/or 12AX7's and spoke to 026's ;/ > > > >
An FPGA is a collection of little configurable logic blocks, and a configurable connector matrix. Once configured, it acts like a big custom logic chip. You can use it to implement all sorts of glue logic, state machines, general-purpose processors, application-specific processors, etc. If my life depended on giving a useful URL I would make peace with my maker. I figured out how FPGA's work by studying FPGA data sheets, which you can download from FPGA vendors. Yes, DSPs are very good at implementing FIR filters. In the end, though, a DSP is limited in throughput by its memory interface and MAC architecture. Today's FPGAs include multiplier blocks, you can make any width of memory interface you desire and/or multiple memory interfaces, and you can put in any logic that you want in between. Ultimately, an FPGA will be less flexible than a DSP chip in implementing a digital signal processing application, but it will be faster (and probably consume less power). I can think of three reasons that you'd want to implement a FIR filter in an FPGA: One, you're going to dedicate the FPGA to the task, and it'll be faster than a DSP chip. Two, you're doing a bunch of other things on the FPGA, you need one stinking little FIR filter to complete the thing, and you don't want to stick a DSP on the board just for that. Three, an FPGA really isn't the right answer for you but you've either been swayed by an FPGA company's applications engineers, or you're just good at implementing stuff on FPGAs. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Posting from Google? See http://cfaj.freeshell.org/google/
Richard Owlett wrote:
> OK already,it is a Field Programmable Gate Array. > I understand, but not grok, the definition. > > Googling for FPGA introduction was not a satisfying experience. > searching Wikipedia.org was less so > > If your life depended on giving a useful URL, what would it be? > > Part of the inspiration for this question is recent thread discussing > VHDL for FPGA to do FIR filter. Ain't that what DSP's are for? > > Get the idea I know I'm missing something basic? > > I've a "bright" idea but will not expose it to competent criticism until > I understand just what is a FPGA and what it can/can't do and just how > "programmable" it is. > > PS in my day computers used 6J6's and/or 12AX7's and spoke to 026's ;/
FPGA - Field programmable gate array Field: I've never actually programmed one in a field, unless you consider a place still a field after an office block has been built over it. (*) Programmable: The user can programme the thing. It used to be they were mostly programmed through flash or EPROM type cells within the device. These days most are programmed by loading the required configuration into RAM cells within the device. Gate: Very similar to using a 12AX7 for logic work, but smaller. Used to be cooler too, but these days silicon folk are working hard to catch up with the 12AX7. Typically FPGAs actually work in logic blocks, rather than individual gates. Hence, both the "F" and the "G" lack accuracy. Array: A collection in a flat sheet. It can be a ginormous collection these days. It could be a completely homogeneous collection. It could have areas committed to specific types of logic, which can achieve better density when those areas match your requirements reasonably well. The trick here is to work out the join the dots pattern to make the array of logic blocks do what you want. You then generate a pattern for the programming cells in the FPGA which will realise your join the dots pattern, and load it in. Typically these things can automatically boot load themselves from an external non-volatile memory, or a processor could pump the pattern in. Regards, Steve * - A RAM based FPGA would typically be programmed in a field, or anywhere else for that matter, if you switch on the appliance containing it in such a location.
in article 1223n1leklggtb8@corp.supernews.com, Richard Owlett at
rowlett@atlascomm.net wrote on 03/22/2006 18:22:

> OK already,it is a Field Programmable Gate Array. > I understand, but not grok, the definition. > > Googling for FPGA introduction was not a satisfying experience. > searching Wikipedia.org was less so
wow. usually WP is good for this sorta thing. someone (knowledgeable) needs to write/edit the articles on this.
> If your life depended on giving a useful URL, what would it be? > > Part of the inspiration for this question is recent thread discussing > VHDL for FPGA to do FIR filter. Ain't that what DSP's are for?
FPGAs are really big. you can make a state machine out of them. maybe for cheaper than putting in a real uP that can do the same thing at the same speed. it doesn't surprise me that people make little dedicated DSPs out of them (and they might have some chip area left over for other little chores).
> Get the idea I know I'm missing something basic?
FPGAs came around right when i was getting out of this hardcore hardware, so this is from one ignorant to another. i dealt with straight TTL and CMOS logic, PALs, the AMD 2900 bit-slice stuff, and wiring good old microprocessors to memory and periphs. sorta ca. 1980 sorta stuff. biggest thing i ever wired up was a simple 68000 based thingie. Richard, did you deal with PALs (sometimes called "PLA" instead)? FPGAs are sorta like really big PALs that you can program like it's a peripheral on a computer bus. VHDL is some kinda language for programming these things (at least XILINX, if some other make of FPGA uses VHDL, i'm too ignorant about it).
> I've a "bright" idea but will not expose it to competent criticism until > I understand just what is a FPGA and what it can/can't do and just how > "programmable" it is.
oh, take a chance! i, at least, won't pick on you.
> PS in my day computers used 6J6's and/or 12AX7's and spoke to 026's ;/
other than the Heathkit HW-100 when i was a teenage ham radio guy, i hadn't had much experience with tubes. diddled with them a little for guitar amp purposes and have an idea of the V-I curves and such, but building a real computer with them sounds frightful. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
On Wed, 22 Mar 2006 17:22:44 -0600, Richard Owlett
<rowlett@atlascomm.net> wrote:

>OK already,it is a Field Programmable Gate Array. >I understand, but not grok, the definition. > >Googling for FPGA introduction was not a satisfying experience. >searching Wikipedia.org was less so > >If your life depended on giving a useful URL, what would it be? > >Part of the inspiration for this question is recent thread discussing >VHDL for FPGA to do FIR filter. Ain't that what DSP's are for? > >Get the idea I know I'm missing something basic? > >I've a "bright" idea but will not expose it to competent criticism until >I understand just what is a FPGA and what it can/can't do and just how >"programmable" it is. > >PS in my day computers used 6J6's and/or 12AX7's and spoke to 026's ;/
You're probably wondering why you would use something like an FPGA when you have a DSP or general purpose microprocessor available to you. Here are some apps: - Really fast stuff. Clock rates on FPGAs are about an order of magnitude behind current hi-end microprocessors. The advantage of an FPGA is that there is the potential for massive parallelism. Your FPGA design with (hypothetically) 50 MACs running in parallel at 200MHz is way faster than any general purpose processor. It's quite possible to clock small parts of an FPGA design at up to about 1GHz, but you wouldn't want to do that for something large. - You get to design your own memory interfaces. Want two independent DDR SDRAM interfaces? Well, just code them in. - You can design all sorts of oddball peripherals, like 17 channels of 500MHz timers with capture inputs. - When you want a high level of integration that can't be achieved with an off-the-shelf part. I'm seeing a lot of boards that are basically empty except for an FPGA + some I/O buffers. When NOT to use an FPGA. - When you think of yourself as a 'programmer' or 'software person' rather than a 'hardware engineer'. - When you want really low power consumption. - When you want really low cost. - When you don't need the special features of an FPGA. If you can use a microprocessor, do so. Disclaimer: I use large FPGAs for high end stuff, and this colours my opinions somewhat. There are smaller FPGAs and CPLDs that are quite cheap (< US$10 in huge volumes), but I don't use them. Regards, Allan
Allan Herriman wrote:
> When NOT to use an FPGA. > - When you think of yourself as a 'programmer' or 'software person' > rather than a 'hardware engineer'. > > - When you want really low power consumption. > > - When you want really low cost. > > - When you don't need the special features of an FPGA. If you can use > a microprocessor, do so. > > > Disclaimer: I use large FPGAs for high end stuff, and this colours my > opinions somewhat. There are smaller FPGAs and CPLDs that are quite > cheap (< US$10 in huge volumes), but I don't use them.
I'd say you missed the biggest factor saying when not to use an FPGA. Algorithm complexity seems like the most critical factor in many designs. You can churn through a bunch of simple filter algorithms at enormous speed using an FPGA approach. Try something more complex, like a speech codec. Implement something that complex in an FPGA usually dragged you down to building a state machine. That ends up being little more than a programmble DSP you built from scratch and for which you need to develop your own assembler. An off the shelf programmable DSP usually beat an FPGA into the dust for complex algorithms. The other big factor is turnaround time. You can take a C model and recompile it for a programmable DSP. You might only need to hand optimise a few small kernels to get respectable speed. Despite all the C based hardware design tools around today, you will generally get into some serious architectural design to do anything effective with an FPGA. There are many ways a problem might map to a hardware implementation, and that is largely up to you. Look at DSPs oriented towards specific applications, like comms or video. They usually add a few hardware accelerators for things which hardware does well, and software does poorly. Those accelerators are doing the kinds of thing an FPGA excels at. Regards, Steve
"robert bristow-johnson" <rbj@audioimagination.com> wrote in message 
news:C0478174.12106%rbj@audioimagination.com...
> in article 1223n1leklggtb8@corp.supernews.com, Richard Owlett at > rowlett@atlascomm.net wrote on 03/22/2006 18:22: > >> OK already,it is a Field Programmable Gate Array. >> I understand, but not grok, the definition. >> >> Googling for FPGA introduction was not a satisfying experience. >> searching Wikipedia.org was less so > > wow. usually WP is good for this sorta thing. someone (knowledgeable) > needs to write/edit the articles on this.
I briefly skimmed the WP article (http://en.wikipedia.org/wiki/FPGA) and it actually seemed quite good to me. Of course, I've programmed FPGAs, so I'm reading it from the perspective of someone who already knows what one is!
Jon Harris wrote:
> "robert bristow-johnson" <rbj@audioimagination.com> wrote in message > news:C0478174.12106%rbj@audioimagination.com... > >>in article 1223n1leklggtb8@corp.supernews.com, Richard Owlett at >>rowlett@atlascomm.net wrote on 03/22/2006 18:22: >> >> >>>OK already,it is a Field Programmable Gate Array. >>>I understand, but not grok, the definition. >>> >>>Googling for FPGA introduction was not a satisfying experience. >>>searching Wikipedia.org was less so >> >>wow. usually WP is good for this sorta thing. someone (knowledgeable) >>needs to write/edit the articles on this. > > > I briefly skimmed the WP article (http://en.wikipedia.org/wiki/FPGA) and it > actually seemed quite good to me. Of course, I've programmed FPGAs, so I'm > reading it from the perspective of someone who already knows what one is! > >
Well, that was the article I found ;) It was focused too much on the fine detail than on the "why use one?". What turned out to be useful to me was the broad strokes several replies used which helped define what were the questions I really wanted to ask. Now with those questions framed, the Wikipedia article is much more useful. And the hyper links address my request for "useful URL's". Thank you all. Now for a long session of reading.
Richard Owlett wrote:
> OK already,it is a Field Programmable Gate Array. > I understand, but not grok, the definition. > > Googling for FPGA introduction was not a satisfying experience. > searching Wikipedia.org was less so > > If your life depended on giving a useful URL, what would it be? > > Part of the inspiration for this question is recent thread discussing > VHDL for FPGA to do FIR filter. Ain't that what DSP's are for? > > Get the idea I know I'm missing something basic? > > I've a "bright" idea but will not expose it to competent criticism until > I understand just what is a FPGA and what it can/can't do and just how > "programmable" it is. > > PS in my day computers used 6J6's and/or 12AX7's and spoke to 026's ;/
The first electronic DSP was a field programmable heap of arithmetic and logic. To program the Eniac, the women spent hours/days hooking various elements together with patch cables. Then, after Von Neuman published some of the ideas of the Moore school team, processors came pre-wired, you got the functional units hooked together the way the CPU architected wanted, even if a mismatch for your algorithm. Need a 17.5-bit adder? Tough. Use the 16 or 32-bit one and live with it. FPGA's go back to letting the user hook together the elements (small lookup tables, MACs and flops) the way the user wants. "Field" is anything outside of the semi FAB line. There are limitations. From any gate, you hope to find an unused wire nearby going in the direction you want. FPGA's are incredably wasteful because over 90+% of the chip is taken up with switches to connect up a mass of mostly useless wires, only some of which are going in a direction your design needs, and with left over switches and gates you can't use. However this waste looks very attractive after you see the bill for custom tooling an ASIC in the range of a large fraction of million dollars minimum, not even including design, plus a 3 month wait to see if you got it right or have to wait another 3 months. FPGA's and DSP's are pretty much Turing complete (when hooked to a standard off-the-shelf infinite size memory chip). You can implement a DSP CPU inside an FPGA or simulate an FPGA in a DSP processor with enough memory. If your algorithm fits within the DSP functional units connected the way the chip architect put it together, then a DSP is fine. If you need one more MAC or one more bit in an adder... with some big FPGA's you can program your own 73-bit adders hooked to 47 parallel MACs for a 1-cycle FIR filter if you need. With a DSP you write a bigger program, and it goes slower... and slower... IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M