Chris_C

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 :) ?

Share this post


Link to post
Share on other sites

DSP slices have nothing to do with LVDS, an electrical signalling standard...

 

These are usually used for multipliers when needed because that is basically their primary function, so FIR filters, IIR filters, State Variable filters, Audio processing, anything where you need multiply or multiply accumulate and fast.

Share this post


Link to post
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 (http://www.xilinx.com/support/documentation/user_guides/ug389.pdf) is under 50 pages you could make a career out of designing with these.

Share this post


Link to post
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.

Share this post


Link to post
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 throughput.to 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now