基于FPGA的流水线乘法器设计.pdf
文本预览下载声明
科技信息 博士 ·专家论坛
基于 FPGA硇流水线乘法器设计
绥化学院计算机系 尤菲菲
[摘 要]采用verilogHDL-~ ,在FPGA上实现了32位单精度浮点乘法器的设计,该乘法器对booth编码算法、4:2压缩器算法、
及简化部分积的符号扩展等方法进行扩展,进一步提高了乘法器的运算速度。通过对该乘法器进行各种设计分析,得出改进后的32
位乘法器结构。整个设计采用4级流水线结构,并在软件开发平台上通过了编译、仿真及综合验证。
[关键词]乘法器 VerilogHDL 仿真
1.引言 countcount2c(lock,suml,carryl,PP4,PP5,PP6,PP7,eout1,cout0);
verilogHDL是当今最流行的硬件描述语言之一,能够对最复杂的
芯片和最完整的电子系统进行描述。乘法器是现代微处理器中的重要 countcount3(clock,sum,carry,sum0,caHy0,suml,carryl,cout,cin0);
部件,乘法器完成一次乘法操作的周期基本上决定了微处理器的主频。
本文采用VerilogHDL语言设计实现浮点乘法器,并对其进行改进,使 3_3改进的Wallace树型乘法器结构的设计
系统具有高速度,低功耗的特点,并且结构规则,易于实现。 为了能够结合CSA灵活性好 ,单级时延小,以及 4—2压缩器路径
2.Booth算法 较平衡 ,对称性好的优点,本论文在设计乘法器结构时,采用了一种以
Booht编码是A.D.Booth在 1951年为了解决由符号乘法运算中复 CSA和4—2压缩器共同作为基本加法单元的混合电路结构 ,构建了一
杂的符号修正问题而提出的一种乘数编码方法。它是 目前被广大设计 种改进的Wallace树型结构的乘法器,其具体结构如图1所示。
者所普遍采用的乘法器编码算法之一,该算法原理如下所示。
如果直接考虑符号位,两个n位补码表示的有符号数相乘A×B,
那么乘数B可以表示为:
B=一B【1】×2n_+Bn司×22l+…+Bl【】X21+B阿×2o
: ∑((一Bm+Bti-I])×2)
则:
P=AXB=A×(一B l】×2n_+B㈣ X2—2+…+BtI】×2%Bto~×2o)
= ((一BD】+BIi-l1)A×2i)
i=O
乘法器中若乘数为有符号数 ,扩展其最高位 ;而若是无符号数,则 图1改进的wallace树型乘法结构
做一位0扩展。这样就可利用Booht算法的优点:无论乘数的符号如何, 4.流水线乘法器的实现
都可以采用同样的Booht编码模块来实现。 MIPS体系结构是流水线体系结构。本设计执行每条MIPS指令就
Booth算法将有符号数和无符号数乘法很好的统一起来。然而对于 被分成四个阶段——称为流水段。在各流水阶段中,一般完成如下工
n位有符号乘法来说,这种算法虽然每次考虑乘数的两位,但同样会形 作:
成n个编码项和n个需要求和的部分积,所以它并不能很好的减少完 IF(InstruetionFeteh)取指令。从指令缓存中获取下一条指令。
成一次乘法所需要的时钟周期数。相反 ,在做无符号数乘法的时候,因 ID(InstmefionDecoding)指令译码。对指令进行译码 ,并读取所用
为符号扩展的缘故,还需要一个额外的时钟周期来完成对增加的部分 CPU寄存器中的内容。
积的累加工作。
显示全部