Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

VHDL SFIXED multiplication with varying operand sizes

Status
Not open for further replies.

design_engineer

Newbie level 6
Joined
Oct 23, 2006
Messages
13
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,411
Hello,

Due to design size constraints, I can only have a single fixed-point arithmetic unit (add/subtract/multiply/divide). I have a number of arithmetic operations I need to do in a pipeline. Based on the biggest original parameters for the multiplier which were UQ0.9 and UQ5.2 (and since there are also subtractions along the way), I chose a 16x16 bit signed fixed-point multiplier to do all operations. And I chose the multiplier's operands to be the generic size of 6:-9 to cover the biggest range and the smallest resolution of -9. I resize all parameters to this size before feeding to the multiplier.

However, now additional parameters have been introduced that are UQ7.0 (or SQ8.0) and have to go through the same multiplier.

Now I cannot accommodate both the SQ8.0 and the SQ1.9 parameters in the 16x16 sfixed multiplier. I understand that I cannot change the sizes of the operands of the multiplier on the fly correct? Because once I choose a size, it is fixed in hardware.

So what are my options here?
1. Increase the multiplier to 24x24 sfixed or even 32x32?
2. Change the multiplier operands to 8:-7 (losing resolution on the -9 parameter). What would be the effect of this?
3. Break up the SQ8.0 multiplication into two pieces that are Q6.0 each? Is this possible? (It would need an additional clock cycle)
4. One point is that a bunch of operations are unsigned only but I have to use signed arithmetic for everything because some intermediate terms become negative. This causes an extra bit to be used that affects my functionality. Is there any way to do both ufixed and sfixed operations in the same unit?

Any other solutions?

Thanks for any help.
 
Last edited:

std_match

Advanced Member level 4
Joined
Jul 9, 2010
Messages
1,203
Helped
451
Reputation
902
Reaction score
411
Trophy points
1,363
Location
Sweden
Activity points
9,312
I think you should avoid connecting sfixed signals directly to the multiplier and only see it as an integer multiplier.
You need muxes on the multiplier inputs and output, and it is easy to do the fixed point scaling manually when you connect signals to the muxes.
To use a larger multiplier is a waste of resources.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top