我不习惯半途而废!我希望能和大家交朋友,一起讨论,一起进步! USB+FPGA信号采集板/n ,刚刚完成CPLD驱动TFT,STN屏的设计,最近正在做DSP6713+FPGA的光纤信号系统板设计。有什么业务欢迎讨论.datto4383@yahoo.com.cn

Multiplication In FPGA(1)

上一篇 / 下一篇  2006-05-10 08:34:21 / 天气: 阴雨 / 心情: 高兴 / 个人分类:EDA

EDA中国门户网站A)S;[/Q%m$w WF,n-Q

 

L/~k7k:lw.Y0
EDA中国门户网站G|,L*`{L

 EDA中国门户网站3x-j6@g*SZ`

EDA中国门户网站M-v Q;`:zMe9T,Vn

Multiplication is basically a shift add operation.  There are, however, many variations on how to do it.  Some are more suitable for FPGA use than others.   This page is a brief tutorial on multiplication hardware.  The hyperlinked items in this list are currently in the text.  The remaining items will be added in a future release of this page.EDA中国门户网站?H%EDa un

bullet Scaling Accumulator Multipliers
bullet Serial by Parallel Booth Multipliers
bullet Ripple Carry Array Multipliers
bullet Row Adder Tree Multipliers
bullet Carry Save Array Multipliers
bullet Look-Up Table Multipliers
bullet Partial Product LUT Multipliers
bullet Computed Partial Product Multipliers
bullet Constant Multipliers from Adders
bullet KCM multipliers
bullet Limited Set LUT Multipliers
bullet Wallace Trees
bullet Booth Recoding
bullet Negative inputs
EDA中国门户网站d2FUH[~6S

 

{.L&IS T9e0

EDA中国门户网站5olyj*s4J P4LjYw

Scaling Accumulator Multipliers

bullet Parallel by serial algorithm
bullet Iterative shift add routine
bullet N clock cycles to complete
bullet Very compact design
bullet Serial input can be MSB or LSB first depending on direction of shift in accumulator
bullet Parallel output

&XP#V+d!MZ4E0A scaling accumulator multiplier performs multiplication using an iterative shift-add routine.  One input is presented in bit parallel form while the other is in bit serial form.  Each bit in the serial input multiplies the parallel input by either 0 or 1.  The parallel input is held constant while each bit of the serial input is presented.  Note that the one bit multiplication either passes the parallel input unchanged or substitutes zero.  The result from each bit is added to an accumulated sum.  That sum is shifted one bit before the result of the next bit multiplication is added to it.EDA中国门户网站]gC4} Wh

1      1011001EDA中国门户网站"l)YU Z9y5HFfYs M
0     0000000 EDA中国门户网站X(Hq9xl T:W
1    1011001 
k'jo|BZi-x0+1011001  
XC vE\ v0
   10010000101
EDA中国门户网站JR:YeP^#F

scaleacc2.gif (3438 bytes)

(Eqx N(cj0
EDA中国门户网站v9bsI ^ g(E9om

 EDA中国门户网站{h:}Ak j

EDA中国门户网站&K$A9U4ev!F"xH

Serial by Parallel Booth Multipliers

bullet Bit serial adds eliminate need for carry chain
bullet Well suited for FPGAs without fast carry logic
bullet Serial input LSB first
bullet Serial output
bullet Routing is all nearest neighbor except serial input which is broadcast
bullet Latency is one bit time

&A$d |1M9I$G#]0The simple serial by parallel booth multiplier is particularly well suited for bit serial processors implemented in FPGAs without carry chains because all of its routing is to nearest neighbors with the exception of the input.   The serial input must be sign extended to a length equal to the sum of the lengths of the serial input and parallel input to avoid overflow, which means this multiplier takes more clocks to complete than the scaling accumulator version.  This is the structure used in the venerable TTL serial by parallel multiplier.

R*V9u;R*Z*W0

serbooth.gif (11228 bytes)

A/D-B+? g}#T ?m0

EDA中国门户网站G"m"e:~2l*G(p\cV)v"m4Z

Ripple Carry Array Multipliers

bullet Row ripple form
bullet Unrolled shift-add algorithm
bullet Delay is proportional to N
EDA中国门户网站(E$|5vH*x\$C$O

A ripple carry array multiplier (also called row ripple form) is an unrolled embodiment of the classic shift-add multiplication algorithm.  The illustration shows the adder structure used to combine all the bit products in a 4x4 multiplier.  The bit products are the logical and of the bits from each input.  They are shown in the form x,y in the drawing.  The maximum delay is the path from either LSB input to the MSB of the product, and is the same (ignoring routing delays) regardless of the path taken.  The delay is approximately 2*n.

3nu$_:T:zB#JA0

rowripple.gif (9476 bytes)EDA中国门户网站+el"H/J%^

This basic structure is simple to implement in FPGAs, but does not make efficient use of the logic in many FPGAs, and is therefore larger and slower than other implementations.EDA中国门户网站U+Q+` [Z@.E:K1B

3~~} q*J0

Row Adder Tree Multipliers

bullet Optimized Row Ripple Form
bullet Fundamentally same gate count as row ripple form
bullet Row Adders arranged in tree to reduce delay
bullet Routing more difficult, but workable in most FPGAs
bullet Delay proportional to log2(N)

Ci qRO?[ hG0Row Adder tree multipliers rearrange the adders of the row ripple multiplier to equalize the number of adders the results from each partial product must pass through.   The result uses the same number of adders, but the worst case path is through log2(n) adders instead of through n adders.  In strictly combinatorial multipliers, this reduces the delay.  For pipelined multipliers, the clock latency is reduced.   The tree structure of the routing means some of the individual wires are longer than the row ripple form.  As a result a pipelined row ripple multiplier can have a higher throughput in an FPGA (shorter clock cycle) even though the latency is increased.EDA中国门户网站 u tu#Un5w

    rowtree.gif (4546 bytes)

D+_:vO7KaQ.C.V%ALK0

EDA中国门户网站W{ ]:j2K6{

Carry Save Array Multipliers

bullet Column ripple form
bullet Fundamentally same delay and gate count as row ripple form
bullet Gate level speed ups available for ASICs
bullet Ripple adder can be replaced with faster carry tree adder
bullet Regular routing pattern

colripple.gif (10742 bytes)EDA中国门户网站zp0h CPX#ng

]G;@!NV'g2hX3Nk0

Look-Up Table (LUT) Multipliers

bullet Complete times table of all possible input combinations
bullet One address bit for each bit in each input
bullet Table size grows exponentially
bullet Very limited use
bullet Fast - result is just a memory access away

r8FU#OEjz'c`0Look-Up Table multipliers are simply a block of memory containing a complete multiplication table of all possible input combinations.  The large table sizes needed for even modest input widths make these impractical for FPGAs. 

Fb{6M.q8u-ZH;Z0

The following table is the contents for a 6 input LUT for a 3 bit by 3 bit multiplication table.

&S4qT*_B6V0
  000 001 010 011 100 101 110 111
000 000000 000000 000000 000000 000000 000000 000000 000000
001 000000 000001 000010 000011 000100 000101 000110 000111
010 000000 000010 000100 000110 001000 001010 001100 001110
011 000000 000011 000110 001001 001100 001111 010010 010101
100 000000 000100 001000 001100 010000 010100 011000 011100
< ... (本贴内容超过30000字符,超出部分已经省略)

TAG: HDL语言 EDA

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-12-11  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 3849
  • 日志数: 29
  • 文件数: 2
  • 书签数: 1
  • 建立时间: 2006-05-07
  • 更新时间: 2007-05-31

RSS订阅