EDN logo


Design Ideas: July 18, 1996

Array logic provides high-speed multiplication

Greg Steinke and Martin Won,
Altera Corp, San Jose, CA

Using embedded-array programmable logic, it's possible to build multipliers that run faster than previous programmable-logic implementations. With the method shown here, you can make 4×4 multipliers that run at 73 MHz, as well as 8×8 multipliers that operate at 23 MHz. The design approach involves using embedded arrays as large look-up tables to store the possible results of a multiplication operation. The two multiplicands act as the address of the look-up table, which holds the correct product value at the appropriate address location. The embedded-array programmable-logic devices used in this example are Altera Flex 10K units.

The Flex 10K devices support multiplier design through the library of parameterized modules (LPM). The Flex 10K design software (Max+Plus II) automatically recognizes LPM multiplier symbols in designs and translates them into appropriately functioning look-up tables. You can configure an embedded-array block (EAB) in a Flex 10K device as an eight-input, eight-output look-up table, which means it can accommodate a single 4×4, 5×3, or 6×2 multiplier. Large multipliers (those with more than eight inputs) use two or more EABs.

Each EAB computes a single partial product, generated by a 4×4 multiplier. For example, the 8×8 parallel multiplier (Figure 1) uses four EABs (one for each partial product) to simultaneously generate four 4×4 partial products. Before adding the partial products, each partial product shifts to account for the 16n term. That is, each partial product shifts over n hexadecimal places, or 4×n bits. The adder assembles the final product by shifting the data into different bits. A two-stage adder normally effects addition, using 8 bits for the first stage and 12 bits for the second stage.

You can clock the parallel multiplier at 23 MHz. You can increase multiplier clock speeds by using registers to pipeline the design. Pipelining reduces the clock period but also introduces latency. You can use registers within the EAB for pipelining (Figure 2). An 8×8 multiplier uses three stages: a multiplier stage using four EABS and two adder stages with 8 bits for the first stage and 12 bits for the second stage. To pipeline the multiplier, each bit must go into a register after each stage. The design thus requires 21 registers for the first stage and 16 registers for the second stage. For the multiplier stage, each EAB has registers available at its inputs and outputs. For more information on building multipliers with embedded-array programmable logic, consult Altera's Application Note 53. (DI #1891)


| EDN Access | feedback | subscribe to EDN! |
| design features | out in front | design ideas | departments | products | columnist |


Copyright © 1996 EDN Magazine. EDN is a registered trademark of Reed Properties Inc, used under license.