Quinnie wrote:
Thank you all for replying. I know the algorithm well and actually
got the booth and shift/add multiplier to work but I use process only
(behavorial)
It does not depend on VHDL processes, if you are writing behavioral
descriptions oder synthesizable models. A process is nothing more than a
"box" for the language. What you put into the box depends on you.
while I supposed to use to adder to add instead....
What adder?
sum <= std_ulogic_vector( unsigned(input_A) + unsigned(input_B) );
is a synthesizable adder.
I'm
very confused because process doesn't allow port map inside it.
Why do you want to do this? I can't see any reason.
Do you think like writing a software with C, Pascal or whatever? - Get
this out of your mind. VHDL is a tool, that helps you modelling
hardware. Hardware has to be described / modelled and not programmed!
Make a 1st component, that has the 2. operand as input and the Booth
encoded version as output.
Make a 2nd component, that uses the 1. operand and the Booth encoded 2.
operand. This component has to produce the multiplier arrary (partial
product generation). The outputs are all the vectors in the multiplier
array.
Make a 3rd component, that takes all the vectors from the multiplier
array and sums them up. (Wallace-Tree, CSA or whatever). The result are
eigther 2 Vectors (Carrys und Sums if you have chosen WT oor CSA) or the
final sum (if you do something special).
Make a last component (if you have chosen WT or CSA), that sums up the 2
results from the 3rd component. This component is the
craay-propageate-adder.
As you can see: All component are pure combinational logic (if you did a
parallel multiplier).
Ralf