Multipliers implementation (xilinx)

Dec 29, 2004 4 Replies

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


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.

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

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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required