Electronic – How to choose an FPGA

developmentfpgakitsxilinx

I need to do digital signal processing on 8 analog lines at 10 kHz. This is quite a demanding task, and I was thinking that an FPGA might be the right approach. I am currently looking at dev kits from Xilinx, and since I have no experience with FPGA, I find it really hard to know how to choose the right chip. I imagined using a dev kit and expanding it using the I/O pins to connect to an 8-channels A/D chip and 8-channel D/A chip.

What are the differences between using Spartan, Virtex, Altera, etc.? I don't even know how to estimate how many gates I will need. Are there any rules of thumb for that? How do I make sure the clock speed will be enough (as a function of the number of adds and multiplies). Is it difficult to do floating-point processing on an FPGA, should I stick to fixed point math? What's the best way to get started?

I require a solution that's programmable using Linux. Xilinx provides this, but I'm not sure what the limitations are.

Best Answer

I would not use an FPGA.

You mention you have no experience with FPGA's, and yet you are interested in doing digital signal processing on an FPGA... numerical manipulation + signal processing are difficult enough to get right on a computer/DSP/microprocessor, where the programming tools are conventional programming. It seems to me that using a digital signal processing project for a first FPGA project is likely a recipe for frustration.

If you want to learn FPGAs, try doing something more suited to the development tools, like state machines or communications packet processing.

For a DSP project like what you've described, I'd recommend a DSP or a Cypress PSOC or an Analog Devices Microconverter (=microcontroller with ADC+DAC builtin) instead.

(full disclosure, which provides some context for my advice: I do not use FPGAs myself. I have used programmable logic = PLDs on rare occasions. My officemate does use FPGAs frequently, and I've seen enough VHDL/Verilog code looking over his shoulder to know that it is well suited for bit manipulations. He is a seasoned engineer with lots of experience with FPGAs; in a recent conversation with him where he was doing some fairly simple math on integers with different bit widths, I told him he needed to do sign-extending on the shorter bit width number in order to subtract it properly, and he got this look on his face, like "oh man, I don't want to have to do sign extension..." Adding and subtracting is not very hard in an FPGA. Beyond addition and subtraction, you really need to know the tools and libraries. And floating-point processing??!?!!??!?!!?)