so what about dsp slices then


Recommended Posts

time for further amusement at my total ignorance on many parts of FPGA's

the more I read the more I want to kick myself for not getting into FPGA's years ago - "I really must get round to that" is probably the worst disservice I'd don't myself in ages!!

I see there are a number of DSP slices in the pro's fpga, my instant thought was LVDS which presumably they can be used for...

... but what other general uses are there...?

what insane and unusual uses have people used them for :) ?

Link to comment
Share on other sites

Hi Chris, 


When it comes to FPGAs, where you see "DSP slices", think "high speed dedicated multiply / accumulate math blocks".


DSP blocks are a bit like having a floating point unit in your CPU. In themselves they don't enable you to do something you couldn't do before - the just allow you to do it faster than you could using more generic FPGA resources. And as O.T.M. said, they have nothing to do with external interfacing - they are hidden away inside the FPGA's logic fabric.



I've used them to perform colourspace conversion mapping RGB pixels into YCrCb at about 150MHz. This takes about 1 billion multiply/accumulate a second, so would saturate a CPU. It takes only six DSP blocks of the 220 I had available on the chip, each DSP block performing one multiply+accumulate every cycle.  I've also used them to calculate fractals -  they are great for that!


They are very powerful but very challenging to get optimal results - although the user guide for them ( is under 50 pages you could make a career out of designing with these.

Link to comment
Share on other sites

so you couldn't use a dsp slice to output a differential signal ?


LVDS output and input is the job of the input/output buffers on the FPGA, LVDS has nothing to do with DSP really, it is just a way of transmitting digital data in a way that is immune to common mode noise.


DSP blocks are used for multiplication on FPGAs because not only are they faster than a full implementation as hamster said, as long as you don't need a huge number of them they are much less resource intensive than building a multiplier out of logic slices.

Link to comment
Share on other sites

As you suggested, DSP blocks are ideal for matrix multiplication - however nothing comes for free - there are trade-off between the FPGA resources used, precision, latency and be made. 


If your application's math can be pipelined then they are fantastic (e.g. processing pixels or 3D graphics), however if your calculation is recursive (like some digital filtering, where the present calculation requires the result of the last) you will find it hard to run at high clock rates - for best performance the DSP blocks need to have registers on the input and outputs.


The DSP48's user guide is full of hints and tips to get the best out of them.

Link to comment
Share on other sites


This topic is now archived and is closed to further replies.