Multipliers implementation (xilinx)

Hi all !

I am trying to implement a filter in a spartan III. I have several multipliers to put inside :-(

Is it possible to tell the compiler to use the mult18x18 elements, and then, when all are used, to implement multipliers using for example LUT ?? Or to choose what kind of multipliers to implement by hand ?

Because I simply use y

Reply to
Sam
Loading thread data ...

Hi Sam, I would consider using a each multiplier for a several multiplications actions by placing a mux before the mul inputs that way you will be able to use each mult18x18 for two or more multiplication actions just by changing the mux select input.

another sugessttion is to connect the mult18x18 to a memory block and that way using it as a mux and for the varaibles and result registers.

all of the above suggestions are valid if the filter sampling time enables you to do your multiplication in steps and not in one clock.

Another suggestion is to use MAC ("multiply and accumulate") unit that can be very efficient for implementing filters (you can look for it in the web).

Hope its helpful.

Moti.

Reply to
Moti

Unless you break up the filter, no you can't automatically select multipliers until used then slices. What is your sample rate and availble clock rate? If you can over clock by several times, then you can either reuse the multipliers for several of the coefficient multiplies (use a look up for the coefficient input to the multiplier), accumulating the products, or you can go with a distributed arithmetic architecture using the regular logic slices. Very often, the sample rate is much smaller than the possible clock rate for the multipliers.

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com  
http://www.andraka.com  

 "They that give up essential liberty to obtain a little 
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759
Reply to
Ray Andraka

Ok, thank you for these answers !

Sam

Reply to
Sam

I don't know of a way you can do this as stated, but you CAN tag individual multipliers with a "mult_style" atttribute in VHDL, to select between "lut" and "block".

attribute mult_style : string; attribute mult_style of product1: signal is "lut"; attribute mult_style of product2: signal is "block";

-- this tags the multiplier's output signal with the attribute

This way you can choose which style is used to implement each multiplier, which may be good enough for your purpose.

- Brian

Reply to
Brian Drummond

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.