Signed Array Divider

By | 28th January 2019

Our objective is to divide A by B where both A and B can be positive or negative. The division operation can be expressed as by the following equation by considering 4 bit data width.

A = Q_3.2^3.B+ Q_2.2^2.B + Q_1.2^1.B + Q_0.2^0.B +R

where Q is the quotient and R is the remainder. The division operation is carried out by subsequent stages where each stage determines a quotient bit. Thus it is called an array divider.

In the first stage to find the bit Q3, B is left shifted by 3 bits and subtracted from A. The quotient bit Q3 is 1 if the difference is zero or positive. If the difference is negative, Q3 is 0 and the value of A is passed to the next stage. This technique is simply the restoring division discussed in the previous post. The division operation is explained by an example where A = 1100 and B = 0010. The unsigned divider for 4-bit data width is shown below.

Restoring Division by Example
4-bit Unsigned Array Divider

From the above example it is clear that to compute Q3, B0 is subtracted from A3 only when other bits of B are zero. This logic is implemented in the first stage. Similarly to compute Q2, bits B1 and B0 are needed to be subtracted thus two sub blocks are used. The block diagram of the sub block is also given in the above figure. It consists of a full subtractor and a Mux.

The above example is shown for division by unsigned numbers. The signed division can be done easily by adopting this division method. The input signed operands (Two’s compliment representation) are needed to converted to unsigned operands and at the output the quotient and residual are also needed to be converted to signed operands depending on the sign of input operands.

The above divider produces a quotient (Q) and remainder (R) but the practical use of divider involve generation of fractional bits. A Verilog code of a complete pipelined 18-bit signed divider is given in this bit. 8-bits are used for integer part and 10-bits are used for fractional part. To generate fractional result, 10 more stages are added to the previous stages. This divider can be modified accordingly to requirement of quotient and fractional bits.

(Visited 1,912 times, 1 visits today)

15 thoughts on “Signed Array Divider

  1. Aris

    can you give us please 1 or 2 examples for the division of the above figure you proposed? thank you

    Reply
    1. SHIRSHENDU ROY Post author

      Yes I could give more examples… But you can better download the code and try simulating…

      Reply
      1. Aris

        I want to implemented the figure of the array divider you have proposed rather than the divider of 18-bit numbers.

        Reply
        1. SHIRSHENDU ROY Post author

          Then you have under stand the code. For less number than 18, some of the stages will be removed and you have to adjust pipelining accordingly.

          Reply
  2. Apurva Rajendra Umredkar

    Thank you so much for this. Works as expected !!

    Reply
      1. nd

        I cant find “Click here to download the Verilog code.” in this post 🙁

        Reply
  3. Santiago

    Hello, first of all thanks for this great publication, it has been a great help to me.

    Is it possible to implement this divider for 6-bit numbers?

    Reply
    1. SHIRSHENDU ROY Post author

      If u have understood the architecture, u can design it for any bits. Site has code for 18 bit unsigned divider.

      Reply
      1. Santiago

        I understand that I have to put more rows and columns of subtractors and it is what I am implementing but I do not understand what to do with the first AND gate where the bits of B are if I want to use 6 bits

        Reply
        1. SHIRSHENDU ROY Post author

          one clue i can give..like in the first AND gate inputs will be b1 to b5…..for 6bit divider.

          Reply

Leave a Reply

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