Lably
Skip to content

Dadda multiplier

Hardware multiplier design

  • 4 min read
  • 2 chapters

Related on Lably

Through Adder (electronics), Logic gate and Logical conjunction

Both Dadda and Wallace multipliers have the same three steps for two bit strings w1 and w2 of lengths ℓ1 and ℓ2 respectively:

  1. Multiply (logical AND) each bit of w1, by each bit of w2, yielding ℓ1⋅ℓ2 results, grouped by weight in columns
  2. Reduce the number of partial products by stages of full and half adders until we are left with at most two bits of each weight.
  3. Add the final result with a conventional adder.

As with the Wallace multiplier, the multiplication products of the first step carry different weights reflecting the magnitude of the original bit values in the multiplication. For example, the product of bits anbm has weight n+m.

Unlike Wallace multipliers that reduce as much as possible on each layer, Dadda multipliers attempt to minimize the number of gates used, as well as input/output delay. Because of this, Dadda multipliers have a less expensive reduction phase, but the final numbers may be a few bits longer, thus requiring slightly bigger adders.

Description

To achieve a more optimal final product, the structure of the reduction process is governed by slightly more complex rules than in Wallace multipliers.

The progression of the reduction is controlled by a maximum-height sequence dj, defined by:

d1=2, and dj+1=floor⁡(1.5dj).

This yields a sequence like so:

d1=2,d2=3,d3=4,d4=6,d5=9,d6=13,…

The initial value of j is chosen as the largest value such that dj<min(n1,n2), where n1 and n2 are the number of bits in the input multiplicand and multiplier. The lesser of the two bit lengths will be the maximum height of each column of weights after the first stage of multiplication. For each stage j of the reduction, the goal of the algorithm is the reduce the height of each column so that it is less than or equal to the value of dj.

For each stage from ,…,1, reduce each column starting at the lowest-weight column, c0 according to these rules:

  1. If height⁡(ci)⩽dj the column does not require reduction, move to column ci+1
  2. If height⁡(ci)=dj+1 add the top two elements in a half-adder, placing the result at the bottom of the column and the carry at the bottom of column ci+1, then move to column ci+1
  3. Else, add the top three elements in a full-adder, placing the result at the bottom of the column and the carry at the bottom of column ci+1, restart ciat step 1

Sign in to keep reading

One more chapter is free with a Lably account.

More in Computing and communication