Sequential Multiplier

Sequential Multiplier is an old method to multiply two binary numbers. But it is also relevant in many architectures and it is the base of many newly developed multiplication techniques. The multiplication between a and b is shown below.

Multiplication Process

The multiplication between two operands a and b can be considered as add the operand a total b times. For example, s = 5 X 3 = 5 + 5 + 5 = 15. Serially 5 is added total 3 times to compute the final result. Thus total one adder is sufficient. For a word length of 4-bits, width of the multiplication result is 8-bit. So, an 8-bit adder is required.

An alternative method is shift and add method. If any bit in the multiplier (b) is 0 then the multiplicand (a) is added with zero. An adder is used which is of the same length as of the operands. Output of the adder and the multiplier is augmented in a register bank. After each addition contents of the register bank is shifted right. A scheme of serial addition is shown below.

4-bit Sequential Multiplier

The start signal starts the multiplication process. It loads the multiplicand (a) in a register and also loads the multiplier (b) in another register. Each D flip flop is controlled by a control signal. The DFFs shifts data to the right only when the control signal is high. The counter tracks the latency of the multiplier. The PG block is there to generate the enable signal for the counter and the bottom register. The start pulse generates the en signal.

The simulation of the serial multiplier is shown below.

Serial Multiplication

Click here to download the Verilog code

(Visited 2,038 times, 21 visits today)

14 thoughts on “Sequential Multiplier

      1. Yes Sir, I got the code but it is showing some error.

        “seq_mul_tb.v:35: error: Unknown module type: seq_mul
        2 error(s) during elaboration.
        *** These modules were missing:
        seq_mul referenced 1 times.”

        Could you please help me with this?

          1. Hii Sir is it working code because i am not getting result of multiplication can you write more steps how to run it

  1. I have downloaded the codes sir, but i don’t know how to execute them.
    Can you please share the iverilog/vvp/gtkwave commands to execute it?

  2. I have run the code and got it to work though I have a few doubts. My first doubt is what are the intermediate numbers that are found in between for example 6, 75,37,90(I understand the method is shifting and later adding but I still am not understanding what the intermediate numbers are) that are seen and also when I try adding my own numbers later in the test bench the output gets completely messed up… Any idea why? Thank you so much!!

Leave a Reply

Your email address will not be published. Required fields are marked *